X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fwww_listing.t;h=1bcbaefbc02328fc4b38e7f1d41865a1d335e440;hb=af0b0fb7a454470a32c452119d0392e0dedb3fe1;hp=0aededd43ebc669b211ebbd366ec8bec770e85d8;hpb=846161e3d1207d59f62b3a6718221d6f5ba2b94f;p=public-inbox.git diff --git a/t/www_listing.t b/t/www_listing.t index 0aededd4..1bcbaefb 100644 --- a/t/www_listing.t +++ b/t/www_listing.t @@ -1,4 +1,4 @@ -# Copyright (C) 2019-2020 all contributors +# Copyright (C) 2019-2021 all contributors # License: AGPL-3.0+ # manifest.js.gz generation and grok-pull integration test use strict; @@ -7,21 +7,19 @@ use Test::More; use PublicInbox::Spawn qw(which); use PublicInbox::TestCommon; use PublicInbox::Import; -require_mods(qw(URI::Escape Plack::Builder Digest::SHA +require_mods(qw(json URI::Escape Plack::Builder Digest::SHA IO::Compress::Gzip IO::Uncompress::Gunzip HTTP::Tiny)); require PublicInbox::WwwListing; -my $json = do { - no warnings 'once'; - $PublicInbox::WwwListing::json; -} or plan skip_all => "JSON module missing"; +require PublicInbox::ManifestJsGz; +use PublicInbox::Config; +my $json = PublicInbox::Config::json(); use_ok 'PublicInbox::Git'; my ($tmpdir, $for_destroy) = tmpdir(); my $bare = PublicInbox::Git->new("$tmpdir/bare.git"); PublicInbox::Import::init_bare($bare->{git_dir}); -is(PublicInbox::WwwListing::fingerprint($bare), undef, - 'empty repo has no fingerprint'); +is($bare->manifest_entry, undef, 'empty repo has no manifest entry'); { my $fi_data = './t/git.fast-import-data'; open my $fh, '<', $fi_data or die "open $fi_data: $!"; @@ -30,18 +28,24 @@ is(PublicInbox::WwwListing::fingerprint($bare), undef, 'fast-import'); } -like(PublicInbox::WwwListing::fingerprint($bare), qr/\A[a-f0-9]{40}\z/, +like($bare->manifest_entry->{fingerprint}, qr/\A[a-f0-9]{40}\z/, 'got fingerprint with non-empty repo'); sub tiny_test { my ($json, $host, $port) = @_; + my $tmp; my $http = HTTP::Tiny->new; my $res = $http->get("http://$host:$port/"); is($res->{status}, 200, 'got HTML listing'); like($res->{content}, qr!!si, 'listing looks like HTML'); + + $res = $http->get("http://$host:$port/", {'Accept-Encoding'=>'gzip'}); + is($res->{status}, 200, 'got gzipped HTML listing'); + IO::Uncompress::Gunzip::gunzip(\(delete $res->{content}) => \$tmp); + like($tmp, qr!!si, 'unzipped listing looks like HTML'); + $res = $http->get("http://$host:$port/manifest.js.gz"); is($res->{status}, 200, 'got manifest'); - my $tmp; IO::Uncompress::Gunzip::gunzip(\(delete $res->{content}) => \$tmp); unlike($tmp, qr/"modified":\s*"/, 'modified is an integer'); my $manifest = $json->decode($tmp);