From d3d49c3d3559d4b5e79ae99fe485af48606d5cab Mon Sep 17 00:00:00 2001 From: Rene Scharfe Date: Thu, 2 Jun 2005 22:50:17 +0200 Subject: [PATCH] git-tar-tree: add a test case add a simple test case. Signed-off-by: Rene Scharfe Signed-off-by: Linus Torvalds diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh new file mode 100644 index 0000000..654c2df --- /dev/null +++ b/t/t5000-tar-tree.sh @@ -0,0 +1,106 @@ +#!/bin/sh +# +# Copyright (C) 2005 Rene Scharfe +# + +test_description='git-tar-tree and git-get-tar-commit-id test + +This test covers the topics of long paths, file contents, commit date +handling and commit id embedding: + + Paths longer than 100 characters require the use of a pax extended + header to store them. The test creates files with pathes both longer + and shorter than 100 chars, and also checks symlinks with long and + short pathes both as their own name and as target path. + + The contents of the repository is compared to the extracted tar + archive. The repository contains simple text files, symlinks and a + binary file (/bin/sh). + + git-tar-tree applies the commit date to every file in the archive it + creates. The test sets the commit date to a specific value and checks + if the tar archive contains that value. + + When giving git-tar-tree a commit id (in contrast to a tree id) it + embeds this commit id into the tar archive as a comment. The test + checks the ability of git-get-tar-commit-id to figure it out from the + tar file. + +' + +. ./test-lib.sh + +test_expect_success \ + 'populate workdir' \ + 'mkdir a b c && + p48=1.......10........20........30........40......48 && + p50=1.......10........20........30........40........50 && + p98=${p48}${p50} && + echo simple textfile >a/a && + echo 100 chars in path >a/${p98} && + echo 101 chars in path >a/${p98}x && + echo 102 chars in path >a/${p98}xx && + echo 103 chars in path >a/${p98}xxx && + mkdir a/bin && + cp /bin/sh a/bin/sh && + ln -s a a/l1 && + ln -s ${p98}xx a/l100 && + ln -s ${p98}xxx a/l101 && + ln -s ${p98}xxx a/l${p98} && + (cd a && find .) | sort >a.lst' + +test_expect_success \ + 'add files to repository' \ + 'find a -type f | xargs git-update-cache --add && + find a -type l | xargs git-update-cache --add && + treeid=`git-write-tree` && + echo $treeid >treeid && + TZ= GIT_COMMITTER_DATE="2005-05-27 22:00:00" \ + git-commit-tree $treeid .git/HEAD' + +test_expect_success \ + 'git-tar-tree' \ + 'git-tar-tree HEAD >b.tar' + +test_expect_success \ + 'validate file modification time' \ + 'tar tvf b.tar a/a | awk \{print\ \$4,\$5\} >b.mtime && + echo "2005-05-27 22:00:00" >expected.mtime && + diff expected.mtime b.mtime' + +test_expect_success \ + 'git-get-tar-commit-id' \ + 'git-get-tar-commit-id b.commitid && + diff .git/HEAD b.commitid' + +test_expect_success \ + 'extract tar archive' \ + '(cd b && tar xf -) b.lst && + diff a.lst b.lst' + +test_expect_success \ + 'validate file contents' \ + 'diff -r a b/a' + +test_expect_success \ + 'git-tar-tree with prefix' \ + 'git-tar-tree HEAD prefix >c.tar' + +test_expect_success \ + 'extract tar archive with prefix' \ + '(cd c && tar xf -) c.lst && + diff a.lst c.lst' + +test_expect_success \ + 'validate file contents with prefix' \ + 'diff -r a c/prefix/a' + +test_done -- cgit v0.10.2-6-g49f6