From: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
To: Linus Torvalds <torvalds@osdl.org>
Cc: git@vger.kernel.org
Subject: [PATCH] testcase for git-tar-tree
Date: Fri, 27 May 2005 22:36:02 +0200 [thread overview]
Message-ID: <20050527203602.GA16785@lsrfire.ath.cx> (raw)
Add testcase for git-tar-tree and git-get-tar-commit-id.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Index: t/t3200-tar-tree.sh
===================================================================
--- /dev/null (tree:f6db9be9d431080d9e7f61edb616b8bac8c9618f)
+++ ba1de5878d8e0cd1c7c728379e033ea6bf8567e5/t/t3200-tar-tree.sh (mode:100755)
@@ -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 </dev/null >.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.tar >b.commitid &&
+ diff .git/HEAD b.commitid'
+
+test_expect_success \
+ 'extract tar archive' \
+ '(cd b && tar xf -) <b.tar'
+
+test_expect_success \
+ 'validate filenames' \
+ '(cd b/a && find .) | sort >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.tar'
+
+test_expect_success \
+ 'validate filenames with prefix' \
+ '(cd c/prefix/a && find .) | sort >c.lst &&
+ diff a.lst c.lst'
+
+test_expect_success \
+ 'validate file contents with prefix' \
+ 'diff -r a c/prefix/a'
+
+test_done
reply other threads:[~2005-05-27 20:34 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050527203602.GA16785@lsrfire.ath.cx \
--to=rene.scharfe@lsrfire.ath.cx \
--cc=git@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).