+test_lei({tmpdir => "$tmpdir/blob"}, sub {
+ lei_ok('blob', '--mail', $patch2_oid, '-I', $ibx->{inboxdir},
+ \'--mail works for existing oid');
+ is($lei_out, $patch2->as_string, 'blob matches');
+ ok(!lei('blob', '--mail', '69df7d5', '-I', $ibx->{inboxdir}),
+ "--mail won't run solver");
+ like($lei_err, qr/\b69df7d5\b/, 'OID in error by git(1)');
+
+ lei_ok('blob', '69df7d5', '-I', $ibx->{inboxdir});
+ is(git_sha(1, \$lei_out)->hexdigest, $expect, 'blob contents output');
+ my $prev = $lei_out;
+ lei_ok(qw(blob --no-mail 69df7d5 -I), $ibx->{inboxdir});
+ is($lei_out, $prev, '--no-mail works');
+ ok(!lei(qw(blob -I), $ibx->{inboxdir}, $non_existent),
+ 'non-existent blob fails');
+ my $abbrev = substr($non_existent, 0, 7);
+ like($lei_err, qr/could not find $abbrev/, 'failed abbreviation noted');
+ SKIP: {
+ skip '/.git exists', 1 if -e '/.git';
+ lei_ok(qw(-C / blob 69df7d5 -I), $ibx->{inboxdir},
+ "--git-dir=$git_dir");
+ is($lei_out, $prev, '--git-dir works');
+
+ ok(!lei(qw(-C / blob --no-cwd 69df7d5 -I), $ibx->{inboxdir}),
+ '--no-cwd works');
+ like($lei_err, qr/no --git-dir to try/,
+ 'lack of --git-dir noted');
+
+ ok(!lei(qw(-C / blob -I), $ibx->{inboxdir}, $non_existent),
+ 'non-existent blob fails');
+ like($lei_err, qr/no --git-dir to try/,
+ 'lack of --git-dir noted');
+ }
+
+ # fallbacks
+ lei_ok('blob', $v1_0_0_tag, '-I', $ibx->{inboxdir});
+ lei_ok('blob', $v1_0_0_tag_short, '-I', $ibx->{inboxdir});
+});
+
+test_lei({tmpdir => "$tmpdir/rediff"}, sub {
+ lei_ok(qw(rediff -q -U9 t/solve/0001-simple-mod.patch));
+ like($lei_out, qr!^\Q+++\E b/TODO\n@@ -103,9 \+103,11 @@!sm,
+ 'got more context with -U9');
+
+ my (undef, $re) = split(/\n\n/, $lei_out, 2);
+ $re =~ s/^/> /sgm;
+ substr($re, 0, 0, <<EOM);
+From: me\@example.com
+Subject: Re: awesome advice
+
+WEB DESIGN EXPERT wrote:
+EOM
+ lei_ok([qw(rediff --full-index -U16 --drq)], undef,
+ { 0 => \$re, %$lei_opt });
+ my $exp = <<'EOM';
+From: me@example.com
+Subject: Re: awesome advice
+
+EOM
+ like($lei_out, qr/\Q$exp\E/, '--drq preserved header');
+
+ # n.b. --drq can requote the attribution line ("So-and-so wrote:"),
+ # but it's probably not worth preventing...
+
+ $exp = <<'EOM';
+> ---
+> TODO | 2 ++
+> Ω | 5 --
+> 1 file changed, 2 insertions(+)
+>
+> diff --git a/TODO b/TODO
+> index 605013e4904baabecd4a0a55997aebd8e8477a8f..69df7d565d49fbaaeb0a067910f03dc22cd52bd0 100644
+> --- a/TODO
+> +++ b/TODO
+> @@ -96,16 +96,18 @@ all need to be considered for everything we introduce)
+EOM
+ $exp =~ s/^>$/> /sgm; # re-add trailing white space
+ like($lei_out, qr/\Q$exp\E/, '--drq diffstat + context');