]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t9351-fast-export-anonymize.sh
Merge branch 'jk/fast-export-anonym-alt'
[thirdparty/git.git] / t / t9351-fast-export-anonymize.sh
index 897dc509075a887268f472b8bbdbb5bf67e4d00f..5ac2c3b5eef0657e25418b4a6656b7e63edd8821 100755 (executable)
@@ -6,15 +6,24 @@ test_description='basic tests for fast-export --anonymize'
 test_expect_success 'setup simple repo' '
        test_commit base &&
        test_commit foo &&
+       test_commit retain-me &&
        git checkout -b other HEAD^ &&
        mkdir subdir &&
        test_commit subdir/bar &&
        test_commit subdir/xyzzy &&
+       fake_commit=$(echo $ZERO_OID | sed s/0/a/) &&
+       git update-index --add --cacheinfo 160000,$fake_commit,link1 &&
+       git update-index --add --cacheinfo 160000,$fake_commit,link2 &&
+       git commit -m "add gitlink" &&
        git tag -m "annotated tag" mytag
 '
 
 test_expect_success 'export anonymized stream' '
-       git fast-export --anonymize --all >stream
+       git fast-export --anonymize --all \
+               --anonymize-map=retain-me \
+               --anonymize-map=xyzzy:custom-name \
+               --anonymize-map=other \
+               >stream
 '
 
 # this also covers commit messages
@@ -26,12 +35,23 @@ test_expect_success 'stream omits path names' '
        ! grep xyzzy stream
 '
 
-test_expect_success 'stream allows master as refname' '
-       grep master stream
+test_expect_success 'stream contains user-specified names' '
+       grep retain-me stream &&
+       grep custom-name stream
+'
+
+test_expect_success 'stream omits gitlink oids' '
+       # avoid relying on the whole oid to remain hash-agnostic; this is
+       # plenty to be unique within our test case
+       ! grep a000000000000000000 stream
+'
+
+test_expect_success 'stream retains other as refname' '
+       grep other stream
 '
 
 test_expect_success 'stream omits other refnames' '
-       ! grep other stream &&
+       ! grep master stream &&
        ! grep mytag stream
 '
 
@@ -57,7 +77,8 @@ test_expect_success 'import stream to new repository' '
 test_expect_success 'result has two branches' '
        git for-each-ref --format="%(refname)" refs/heads >branches &&
        test_line_count = 2 branches &&
-       other_branch=$(grep -v refs/heads/master branches)
+       other_branch=refs/heads/other &&
+       main_branch=$(grep -v $other_branch branches)
 '
 
 test_expect_success 'repo has original shape and timestamps' '
@@ -65,34 +86,35 @@ test_expect_success 'repo has original shape and timestamps' '
                git log --format="%m %ct" --left-right --boundary "$@"
        } &&
        (cd .. && shape master...other) >expect &&
-       shape master...$other_branch >actual &&
+       shape $main_branch...$other_branch >actual &&
        test_cmp expect actual
 '
 
 test_expect_success 'root tree has original shape' '
        # the output entries are not necessarily in the same
-       # order, but we know at least that we will have one tree
-       # and one blob, so just check the sorted order
-       cat >expect <<-\EOF &&
-       blob
-       tree
-       EOF
+       # order, but we should at least have the same set of
+       # object types.
+       git -C .. ls-tree HEAD >orig-root &&
+       cut -d" " -f2 <orig-root | sort >expect &&
        git ls-tree $other_branch >root &&
        cut -d" " -f2 <root | sort >actual &&
        test_cmp expect actual
 '
 
 test_expect_success 'paths in subdir ended up in one tree' '
-       cat >expect <<-\EOF &&
-       blob
-       blob
-       EOF
+       git -C .. ls-tree other:subdir >orig-subdir &&
+       cut -d" " -f2 <orig-subdir | sort >expect &&
        tree=$(grep tree root | cut -f2) &&
        git ls-tree $other_branch:$tree >tree &&
        cut -d" " -f2 <tree >actual &&
        test_cmp expect actual
 '
 
+test_expect_success 'identical gitlinks got identical oid' '
+       awk "/commit/ { print \$3 }" <root | sort -u >commits &&
+       test_line_count = 1 commits
+'
+
 test_expect_success 'tag points to branch tip' '
        git rev-parse $other_branch >expect &&
        git for-each-ref --format="%(*objectname)" | grep . >actual &&