Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # |
| 3 | # Copyright (c) 2009 Eric Wong, Mark Lodato |
| 4 | # |
| 5 | |
| 6 | test_description='git svn authors prog tests' |
| 7 | |
| 8 | . ./lib-git-svn.sh |
| 9 | |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 10 | write_script svn-authors-prog "$PERL_PATH" <<-\EOF |
| 11 | $_ = shift; |
Andreas Heiduk | cb427e9 | 2018-03-24 11:20:46 +0100 | [diff] [blame] | 12 | if (s/-hermit//) { |
| 13 | print "$_ <>\n"; |
| 14 | } elsif (s/-sub$//) { |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 15 | print "$_ <$_\@sub.example.com>\n"; |
| 16 | } else { |
| 17 | print "$_ <$_\@example.com>\n"; |
| 18 | } |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 19 | EOF |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 20 | |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 21 | test_expect_success 'svn-authors setup' ' |
| 22 | cat >svn-authors <<-\EOF |
| 23 | ff = FFFFFFF FFFFFFF <fFf@other.example.com> |
| 24 | EOF |
| 25 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 26 | |
| 27 | test_expect_success 'setup svnrepo' ' |
| 28 | for i in aa bb cc-sub dd-sub ee-foo ff |
| 29 | do |
| 30 | svn mkdir -m $i --username $i "$svnrepo"/$i |
| 31 | done |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 32 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 33 | |
| 34 | test_expect_success 'import authors with prog and file' ' |
| 35 | git svn clone --authors-prog=./svn-authors-prog \ |
| 36 | --authors-file=svn-authors "$svnrepo" x |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 37 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 38 | |
| 39 | test_expect_success 'imported 6 revisions successfully' ' |
| 40 | ( |
Eric Sunshine | cff4243 | 2018-07-01 20:24:04 -0400 | [diff] [blame] | 41 | cd x && |
Pratik Karki | a4d4e32 | 2018-03-27 23:16:37 +0545 | [diff] [blame] | 42 | git rev-list refs/remotes/git-svn >actual && |
| 43 | test_line_count = 6 actual |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 44 | ) |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 45 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 46 | |
| 47 | test_expect_success 'authors-prog ran correctly' ' |
| 48 | ( |
Eric Sunshine | cff4243 | 2018-07-01 20:24:04 -0400 | [diff] [blame] | 49 | cd x && |
Pratik Karki | a4d4e32 | 2018-03-27 23:16:37 +0545 | [diff] [blame] | 50 | git rev-list -1 --pretty=raw refs/remotes/git-svn~1 >actual && |
| 51 | grep "^author ee-foo <ee-foo@example\.com> " actual && |
| 52 | git rev-list -1 --pretty=raw refs/remotes/git-svn~2 >actual && |
| 53 | grep "^author dd <dd@sub\.example\.com> " actual && |
| 54 | git rev-list -1 --pretty=raw refs/remotes/git-svn~3 >actual && |
| 55 | grep "^author cc <cc@sub\.example\.com> " actual && |
| 56 | git rev-list -1 --pretty=raw refs/remotes/git-svn~4 >actual && |
| 57 | grep "^author bb <bb@example\.com> " actual && |
| 58 | git rev-list -1 --pretty=raw refs/remotes/git-svn~5 >actual && |
| 59 | grep "^author aa <aa@example\.com> " actual |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 60 | ) |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 61 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 62 | |
| 63 | test_expect_success 'authors-file overrode authors-prog' ' |
| 64 | ( |
Eric Sunshine | cff4243 | 2018-07-01 20:24:04 -0400 | [diff] [blame] | 65 | cd x && |
Pratik Karki | a4d4e32 | 2018-03-27 23:16:37 +0545 | [diff] [blame] | 66 | git rev-list -1 --pretty=raw refs/remotes/git-svn >actual && |
| 67 | grep "^author FFFFFFF FFFFFFF <fFf@other\.example\.com> " actual |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 68 | ) |
Jeremiah Mahler | 01730a3 | 2014-05-25 12:24:54 -0700 | [diff] [blame] | 69 | ' |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 70 | |
Mark Lodato | d3d7d47 | 2009-09-12 20:33:23 -0400 | [diff] [blame] | 71 | git --git-dir=x/.git config --unset svn.authorsfile |
| 72 | git --git-dir=x/.git config --unset svn.authorsprog |
| 73 | |
Andreas Heiduk | cb427e9 | 2018-03-24 11:20:46 +0100 | [diff] [blame] | 74 | test_expect_success 'authors-prog imported user without email' ' |
| 75 | svn mkdir -m gg --username gg-hermit "$svnrepo"/gg && |
| 76 | ( |
| 77 | cd x && |
| 78 | git svn fetch --authors-prog=../svn-authors-prog && |
| 79 | git rev-list -1 --pretty=raw refs/remotes/git-svn | \ |
| 80 | grep "^author gg <> " |
| 81 | ) |
| 82 | ' |
| 83 | |
| 84 | test_expect_success 'imported without authors-prog and authors-file' ' |
| 85 | svn mkdir -m hh --username hh "$svnrepo"/hh && |
| 86 | ( |
| 87 | uuid=$(svn info "$svnrepo" | |
| 88 | sed -n "s/^Repository UUID: //p") && |
| 89 | cd x && |
| 90 | git svn fetch && |
| 91 | git rev-list -1 --pretty=raw refs/remotes/git-svn | \ |
| 92 | grep "^author hh <hh@$uuid> " |
| 93 | ) |
| 94 | ' |
| 95 | |
Mark Lodato | d3d7d47 | 2009-09-12 20:33:23 -0400 | [diff] [blame] | 96 | test_expect_success 'authors-prog handled special characters in username' ' |
| 97 | svn mkdir -m bad --username "xyz; touch evil" "$svnrepo"/bad && |
| 98 | ( |
| 99 | cd x && |
| 100 | git svn --authors-prog=../svn-authors-prog fetch && |
Pratik Karki | a4d4e32 | 2018-03-27 23:16:37 +0545 | [diff] [blame] | 101 | git rev-list -1 --pretty=raw refs/remotes/git-svn >actual && |
| 102 | grep "^author xyz; touch evil <xyz; touch evil@example\.com> " actual && |
Mark Lodato | d3d7d47 | 2009-09-12 20:33:23 -0400 | [diff] [blame] | 103 | ! test -f evil |
| 104 | ) |
| 105 | ' |
| 106 | |
Mark Lodato | 36db1ed | 2009-05-14 21:27:15 -0400 | [diff] [blame] | 107 | test_done |