Files
git-mirror/t/t1010-mktree.sh
Patrick Steinhardt 6aec8d38fd t: refactor tests depending on Perl to print data
A bunch of tests rely on Perl to print data in various different ways.
These usages fall into the following categories:

  - Print data conditionally by matching patterns. These usecases can be
    converted to use awk(1) rather easily.

  - Print data repeatedly. These usecases can typically be converted to
    use a combination of `test-tool genzeros` and sed(1).

  - Print data in reverse. These usecases can be converted to use
    awk(1) or `sort -r`.

Refactor the tests accordingly so that we can drop a couple of
PERL_TEST_HELPERS prerequisites.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-04-07 14:47:39 -07:00

70 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
test_description='git mktree'
. ./test-lib.sh
test_expect_success setup '
for d in a a- a0
do
mkdir "$d" && echo "$d/one" >"$d/one" &&
git add "$d" || return 1
done &&
echo zero >one &&
git update-index --add --info-only one &&
git write-tree --missing-ok >tree.missing &&
git ls-tree $(cat tree.missing) >top.missing &&
git ls-tree -r $(cat tree.missing) >all.missing &&
echo one >one &&
git add one &&
git write-tree >tree &&
git ls-tree $(cat tree) >top &&
git ls-tree -r $(cat tree) >all &&
test_tick &&
git commit -q -m one &&
H=$(git rev-parse HEAD) &&
git update-index --add --cacheinfo 160000 $H sub &&
test_tick &&
git commit -q -m two &&
git rev-parse HEAD^{tree} >tree.withsub &&
git ls-tree HEAD >top.withsub &&
git ls-tree -r HEAD >all.withsub
'
test_expect_success 'ls-tree piped to mktree (1)' '
git mktree <top >actual &&
test_cmp tree actual
'
test_expect_success 'ls-tree piped to mktree (2)' '
git mktree <top.withsub >actual &&
test_cmp tree.withsub actual
'
test_expect_success 'ls-tree output in wrong order given to mktree (1)' '
sort -r <top |
git mktree >actual &&
test_cmp tree actual
'
test_expect_success 'ls-tree output in wrong order given to mktree (2)' '
sort -r <top.withsub |
git mktree >actual &&
test_cmp tree.withsub actual
'
test_expect_success 'allow missing object with --missing' '
git mktree --missing <top.missing >actual &&
test_cmp tree.missing actual
'
test_expect_success 'mktree refuses to read ls-tree -r output (1)' '
test_must_fail git mktree <all
'
test_expect_success 'mktree refuses to read ls-tree -r output (2)' '
test_must_fail git mktree <all.withsub
'
test_done