git-commit-vandalism/t/t1010-mktree.sh
Junio C Hamano 1c64e79a62 mktree --missing: allow missing objects
We need to allow input lines that point at objects that we do not
have when dealing with submodule entries anyway.  This adds an explicit
option to allow missing objects of other types, to be consistent with
the use of --info-only option to the update-index command and --missing-ok
option to the write-tree command.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-10 17:31:01 -07:00

72 lines
1.7 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"
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)' '
perl -e "print reverse <>" <top |
git mktree >actual &&
test_cmp tree actual
'
test_expect_success 'ls-tree output in wrong order given to mktree (2)' '
perl -e "print reverse <>" <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_failure 'mktree reads ls-tree -r output (1)' '
git mktree <all >actual &&
test_cmp tree actual
'
test_expect_failure 'mktree reads ls-tree -r output (2)' '
git mktree <all.withsub >actual &&
test_cmp tree.withsub actual
'
test_done