]>
Commit | Line | Data |
---|---|---|
a8722750 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='basic tests for fast-export --anonymize' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success 'setup simple repo' ' | |
7 | test_commit base && | |
8 | test_commit foo && | |
9 | git checkout -b other HEAD^ && | |
10 | mkdir subdir && | |
11 | test_commit subdir/bar && | |
12 | test_commit subdir/xyzzy && | |
13 | git tag -m "annotated tag" mytag | |
14 | ' | |
15 | ||
16 | test_expect_success 'export anonymized stream' ' | |
17 | git fast-export --anonymize --all >stream | |
18 | ' | |
19 | ||
20 | # this also covers commit messages | |
21 | test_expect_success 'stream omits path names' ' | |
22 | ! grep base stream && | |
23 | ! grep foo stream && | |
24 | ! grep subdir stream && | |
25 | ! grep bar stream && | |
26 | ! grep xyzzy stream | |
27 | ' | |
28 | ||
29 | test_expect_success 'stream allows master as refname' ' | |
30 | grep master stream | |
31 | ' | |
32 | ||
33 | test_expect_success 'stream omits other refnames' ' | |
34 | ! grep other stream && | |
35 | ! grep mytag stream | |
36 | ' | |
37 | ||
38 | test_expect_success 'stream omits identities' ' | |
39 | ! grep "$GIT_COMMITTER_NAME" stream && | |
40 | ! grep "$GIT_COMMITTER_EMAIL" stream && | |
41 | ! grep "$GIT_AUTHOR_NAME" stream && | |
42 | ! grep "$GIT_AUTHOR_EMAIL" stream | |
43 | ' | |
44 | ||
45 | test_expect_success 'stream omits tag message' ' | |
46 | ! grep "annotated tag" stream | |
47 | ' | |
48 | ||
49 | # NOTE: we chdir to the new, anonymized repository | |
50 | # after this. All further tests should assume this. | |
51 | test_expect_success 'import stream to new repository' ' | |
52 | git init new && | |
53 | cd new && | |
54 | git fast-import <../stream | |
55 | ' | |
56 | ||
57 | test_expect_success 'result has two branches' ' | |
58 | git for-each-ref --format="%(refname)" refs/heads >branches && | |
59 | test_line_count = 2 branches && | |
60 | other_branch=$(grep -v refs/heads/master branches) | |
61 | ' | |
62 | ||
63 | test_expect_success 'repo has original shape and timestamps' ' | |
64 | shape () { | |
65 | git log --format="%m %ct" --left-right --boundary "$@" | |
66 | } && | |
67 | (cd .. && shape master...other) >expect && | |
68 | shape master...$other_branch >actual && | |
69 | test_cmp expect actual | |
70 | ' | |
71 | ||
72 | test_expect_success 'root tree has original shape' ' | |
73 | # the output entries are not necessarily in the same | |
74 | # order, but we know at least that we will have one tree | |
75 | # and one blob, so just check the sorted order | |
76 | cat >expect <<-\EOF && | |
77 | blob | |
78 | tree | |
79 | EOF | |
80 | git ls-tree $other_branch >root && | |
81 | cut -d" " -f2 <root | sort >actual && | |
82 | test_cmp expect actual | |
83 | ' | |
84 | ||
85 | test_expect_success 'paths in subdir ended up in one tree' ' | |
86 | cat >expect <<-\EOF && | |
87 | blob | |
88 | blob | |
89 | EOF | |
90 | tree=$(grep tree root | cut -f2) && | |
91 | git ls-tree $other_branch:$tree >tree && | |
92 | cut -d" " -f2 <tree >actual && | |
93 | test_cmp expect actual | |
94 | ' | |
95 | ||
96 | test_expect_success 'tag points to branch tip' ' | |
97 | git rev-parse $other_branch >expect && | |
98 | git for-each-ref --format="%(*objectname)" | grep . >actual && | |
99 | test_cmp expect actual | |
100 | ' | |
101 | ||
102 | test_expect_success 'idents are shared' ' | |
103 | git log --all --format="%an <%ae>" >authors && | |
104 | sort -u authors >unique && | |
105 | test_line_count = 1 unique && | |
106 | git log --all --format="%cn <%ce>" >committers && | |
107 | sort -u committers >unique && | |
108 | test_line_count = 1 unique && | |
109 | ! test_cmp authors committers | |
110 | ' | |
111 | ||
112 | test_done |