+ lei_ok('inspect', $url); is_xdeeply(json_utf8->decode($lei_out), {
+ $url => { 'article.count' => $end - $low + 1,
+ 'article.min' => $low,
+ 'article.max' => $end, }
+ }, 'inspect output for URL after range') or diag $lei_out;
+ lei_ok('inspect', "$url/$low-$end");
+ $x = json_utf8->decode($lei_out);
+ is_deeply([ ($low..$end) ], [ sort { $a <=> $b } keys %{$x->{$url}} ],
+ 'inspect range shows range');
+ is(scalar(grep(/\A[a-f0-9]{40,}\z/, values %{$x->{$url}})),
+ $end - $low + 1, 'all values are git blobs');
+
+ lei_ok qw(lcat -f json), "$url/$low";
+ $lcat = json_utf8->decode($lei_out);
+ is($lcat->[1], undef, 'only one result for lcat');
+ is($lcat->[0]->{blob}, $x->{$url}->{$low},
+ 'lcat showed correct blob');
+ lei_ok qw(lcat -f json), "$url/$low-$end";
+ $lcat = json_utf8->decode($lei_out);
+ pop @$lcat;
+ for ($low..$end) {
+ my $tip = shift @$lcat;
+ is($x->{$url}->{$_}, $tip->{blob}, "blob matches art #$_");
+ }
+