]>
Commit | Line | Data |
---|---|---|
58a05c74 JN |
1 | #!/bin/sh |
2 | ||
3 | test_description='Test git check-ref-format' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | valid_ref() { | |
8 | test_expect_success "ref name '$1' is valid" \ | |
9 | "git check-ref-format '$1'" | |
10 | } | |
11 | invalid_ref() { | |
12 | test_expect_success "ref name '$1' is not valid" \ | |
13 | "test_must_fail git check-ref-format '$1'" | |
14 | } | |
15 | ||
16 | valid_ref 'heads/foo' | |
17 | invalid_ref 'foo' | |
18 | valid_ref 'foo/bar/baz' | |
19 | valid_ref 'refs///heads/foo' | |
20 | invalid_ref 'heads/foo/' | |
21 | invalid_ref './foo' | |
22 | invalid_ref '.refs/foo' | |
23 | invalid_ref 'heads/foo..bar' | |
24 | invalid_ref 'heads/foo?bar' | |
25 | valid_ref 'foo./bar' | |
26 | invalid_ref 'heads/foo.lock' | |
27 | valid_ref 'heads/foo@bar' | |
28 | invalid_ref 'heads/v@{ation' | |
29 | invalid_ref 'heads/foo\bar' | |
30 | ||
31 | test_expect_success "check-ref-format --branch @{-1}" ' | |
32 | T=$(git write-tree) && | |
33 | sha1=$(echo A | git commit-tree $T) && | |
34 | git update-ref refs/heads/master $sha1 && | |
a48fcd83 | 35 | git update-ref refs/remotes/origin/master $sha1 && |
58a05c74 JN |
36 | git checkout master && |
37 | git checkout origin/master && | |
38 | git checkout master && | |
39 | refname=$(git check-ref-format --branch @{-1}) && | |
40 | test "$refname" = "$sha1" && | |
41 | refname2=$(git check-ref-format --branch @{-2}) && | |
42 | test "$refname2" = master' | |
43 | ||
49cc460d JN |
44 | test_expect_success 'check-ref-format --branch from subdir' ' |
45 | mkdir subdir && | |
46 | ||
47 | T=$(git write-tree) && | |
48 | sha1=$(echo A | git commit-tree $T) && | |
49 | git update-ref refs/heads/master $sha1 && | |
a48fcd83 | 50 | git update-ref refs/remotes/origin/master $sha1 && |
49cc460d JN |
51 | git checkout master && |
52 | git checkout origin/master && | |
53 | git checkout master && | |
54 | refname=$( | |
55 | cd subdir && | |
56 | git check-ref-format --branch @{-1} | |
57 | ) && | |
58 | test "$refname" = "$sha1" | |
59 | ' | |
60 | ||
38eedc63 JH |
61 | valid_ref_normalized() { |
62 | test_expect_success "ref name '$1' simplifies to '$2'" " | |
63 | refname=\$(git check-ref-format --print '$1') && | |
64 | test \"\$refname\" = '$2'" | |
65 | } | |
66 | invalid_ref_normalized() { | |
67 | test_expect_success "check-ref-format --print rejects '$1'" " | |
68 | test_must_fail git check-ref-format --print '$1'" | |
69 | } | |
70 | ||
71 | valid_ref_normalized 'heads/foo' 'heads/foo' | |
72 | valid_ref_normalized 'refs///heads/foo' 'refs/heads/foo' | |
73 | invalid_ref_normalized 'foo' | |
74 | invalid_ref_normalized 'heads/foo/../bar' | |
75 | invalid_ref_normalized 'heads/./foo' | |
76 | invalid_ref_normalized 'heads\foo' | |
77 | ||
58a05c74 | 78 | test_done |