| 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='git p4 label tests' |
| 4 | |
| 5 | . ./lib-git-p4.sh |
| 6 | |
| 7 | test_expect_success 'start p4d' ' |
| 8 | start_p4d |
| 9 | ' |
| 10 | |
| 11 | # Basic p4 label tests. |
| 12 | # |
| 13 | # Note: can't have more than one label per commit - others |
| 14 | # are silently discarded. |
| 15 | # |
| 16 | test_expect_success 'basic p4 labels' ' |
| 17 | test_when_finished cleanup_git && |
| 18 | ( |
| 19 | cd "$cli" && |
| 20 | mkdir -p main && |
| 21 | |
| 22 | echo f1 >main/f1 && |
| 23 | p4 add main/f1 && |
| 24 | p4 submit -d "main/f1" && |
| 25 | |
| 26 | echo f2 >main/f2 && |
| 27 | p4 add main/f2 && |
| 28 | p4 submit -d "main/f2" && |
| 29 | |
| 30 | echo f3 >main/file_with_\$metachar && |
| 31 | p4 add main/file_with_\$metachar && |
| 32 | p4 submit -d "file with metachar" && |
| 33 | |
| 34 | p4 tag -l tag_f1_only main/f1 && |
| 35 | p4 tag -l tag_with\$_shell_char main/... && |
| 36 | |
| 37 | echo f4 >main/f4 && |
| 38 | p4 add main/f4 && |
| 39 | p4 submit -d "main/f4" && |
| 40 | |
| 41 | p4 label -i <<-EOF && |
| 42 | Label: long_label |
| 43 | Description: |
| 44 | A Label first line |
| 45 | A Label second line |
| 46 | View: //depot/... |
| 47 | EOF |
| 48 | |
| 49 | p4 tag -l long_label ... && |
| 50 | |
| 51 | p4 labels ... && |
| 52 | |
| 53 | git p4 clone --dest="$git" --detect-labels //depot@all && |
| 54 | cd "$git" && |
| 55 | |
| 56 | git tag && |
| 57 | git tag >taglist && |
| 58 | test_line_count = 3 taglist && |
| 59 | |
| 60 | cd main && |
| 61 | git checkout tag_tag_f1_only && |
| 62 | ! test -f f2 && |
| 63 | git checkout tag_tag_with\$_shell_char && |
| 64 | test -f f1 && test -f f2 && test -f file_with_\$metachar && |
| 65 | |
| 66 | git show tag_long_label | grep -q "A Label second line" |
| 67 | ) |
| 68 | ' |
| 69 | |
| 70 | # Test some label corner cases: |
| 71 | # |
| 72 | # - two tags on the same file; both should be available |
| 73 | # - a tag that is only on one file; this kind of tag |
| 74 | # cannot be imported (at least not easily). |
| 75 | |
| 76 | test_expect_failure 'two labels on the same changelist' ' |
| 77 | test_when_finished cleanup_git && |
| 78 | ( |
| 79 | cd "$cli" && |
| 80 | mkdir -p main && |
| 81 | |
| 82 | p4 edit main/f1 main/f2 && |
| 83 | echo "hello world" >main/f1 && |
| 84 | echo "not in the tag" >main/f2 && |
| 85 | p4 submit -d "main/f[12]: testing two labels" && |
| 86 | |
| 87 | p4 tag -l tag_f1_1 main/... && |
| 88 | p4 tag -l tag_f1_2 main/... && |
| 89 | |
| 90 | p4 labels ... && |
| 91 | |
| 92 | git p4 clone --dest="$git" --detect-labels //depot@all && |
| 93 | cd "$git" && |
| 94 | |
| 95 | git tag | grep tag_f1 && |
| 96 | git tag | grep -q tag_f1_1 && |
| 97 | git tag | grep -q tag_f1_2 && |
| 98 | |
| 99 | cd main && |
| 100 | |
| 101 | git checkout tag_tag_f1_1 && |
| 102 | ls && |
| 103 | test -f f1 && |
| 104 | |
| 105 | git checkout tag_tag_f1_2 && |
| 106 | ls && |
| 107 | test -f f1 |
| 108 | ) |
| 109 | ' |
| 110 | |
| 111 | test_done |