Merge branch 'ph/submodule-rebase' (early part)
[gitweb.git] / t / t9301-fast-export.sh
index 7607a12dbbc621656276e3bdadc7d65653705ff1..8c8a9e63c26c594a837d266bff56f5f85cb376c8 100755 (executable)
@@ -3,11 +3,14 @@
 # Copyright (c) 2007 Johannes E. Schindelin
 #
 
-test_description='git-fast-export'
+test_description='git fast-export'
 . ./test-lib.sh
 
 test_expect_success 'setup' '
 
+       echo break it > file0 &&
+       git add file0 &&
+       test_tick &&
        echo Wohlauf > file &&
        git add file &&
        test_tick &&
@@ -57,17 +60,17 @@ test_expect_success 'fast-export master~2..master' '
                (cd new &&
                 git fast-import &&
                 test $MASTER != $(git rev-parse --verify refs/heads/partial) &&
-                git diff master..partial &&
-                git diff master^..partial^ &&
+                git diff --exit-code master partial &&
+                git diff --exit-code master^ partial^ &&
                 test_must_fail git rev-parse partial~2)
 
 '
 
 test_expect_success 'iso-8859-1' '
 
-       git config i18n.commitencoding ISO-8859-1 &&
+       git config i18n.commitencoding ISO8859-1 &&
        # use author and committer name in ISO-8859-1 to match it.
-       . ../t3901-8859-1.txt &&
+       . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
        test_tick &&
        echo rosten >file &&
        git commit -s -m den file &&
@@ -185,8 +188,8 @@ test_expect_success 'submodule fast-export | fast-import' '
 
 '
 
-export GIT_AUTHOR_NAME='A U Thor'
-export GIT_COMMITTER_NAME='C O Mitter'
+GIT_AUTHOR_NAME='A U Thor'; export GIT_AUTHOR_NAME
+GIT_COMMITTER_NAME='C O Mitter'; export GIT_COMMITTER_NAME
 
 test_expect_success 'setup copies' '
 
@@ -231,7 +234,7 @@ test_expect_success 'fast-export -C -C | fast-import' '
 
 '
 
-test_expect_failure 'fast-export | fast-import when master is tagged' '
+test_expect_success 'fast-export | fast-import when master is tagged' '
 
        git tag -m msg last &&
        git fast-export -C -C --signed-tags=strip --all > output &&
@@ -239,4 +242,39 @@ test_expect_failure 'fast-export | fast-import when master is tagged' '
 
 '
 
+cat > tag-content << EOF
+object $(git rev-parse HEAD)
+type commit
+tag rosten
+EOF
+
+test_expect_success 'cope with tagger-less tags' '
+
+       TAG=$(git hash-object -t tag -w tag-content) &&
+       git update-ref refs/tags/sonnenschein $TAG &&
+       git fast-export -C -C --signed-tags=strip --all > output &&
+       test $(grep -c "^tag " output) = 4 &&
+       ! grep "Unspecified Tagger" output &&
+       git fast-export -C -C --signed-tags=strip --all \
+               --fake-missing-tagger > output &&
+       test $(grep -c "^tag " output) = 4 &&
+       grep "Unspecified Tagger" output
+
+'
+
+test_expect_success 'set-up a few more tags for tag export tests' '
+       git checkout -f master &&
+       HEAD_TREE=`git show -s --pretty=raw HEAD | grep tree | sed "s/tree //"` &&
+       git tag    tree_tag        -m "tagging a tree" $HEAD_TREE &&
+       git tag -a tree_tag-obj    -m "tagging a tree" $HEAD_TREE &&
+       git tag    tag-obj_tag     -m "tagging a tag" tree_tag-obj &&
+       git tag -a tag-obj_tag-obj -m "tagging a tag" tree_tag-obj
+'
+
+# NEEDSWORK: not just check return status, but validate the output
+test_expect_success 'tree_tag'        'git fast-export tree_tag'
+test_expect_success 'tree_tag-obj'    'git fast-export tree_tag-obj'
+test_expect_success 'tag-obj_tag'     'git fast-export tag-obj_tag'
+test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj'
+
 test_done