From 008849689e04e774aa7b194cd690405761e2383a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 27 Jan 2009 23:34:48 +0100 Subject: [PATCH] test-lib.sh: introduce test_commit() and test_merge() helpers Often we just need to add a commit with a given (short) name, that will be tagged with the same name. Now, relatively complicated graphs can be constructed easily and in a clear fashion: test_commit A && test_commit B && git checkout A && test_commit C && test_merge D B will construct this graph: A - B \ \ C - D For simplicity, files whose name is the lower case version of the commit message (to avoid a warning about ambiguous names) will be committed, with the corresponding commit messages as contents. If you need to provide a different file/different contents, you can use the more explicit form test_commit $MESSAGE $FILENAME $CONTENTS Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- t/README | 18 ++++++++++++++++++ t/test-lib.sh | 25 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/t/README b/t/README index 8f12d48fe..f208cf1db 100644 --- a/t/README +++ b/t/README @@ -212,6 +212,24 @@ library for your script to use. is to summarize successes and failures in the test script and exit with an appropriate error code. + - test_tick + + Make commit and tag names consistent by setting the author and + committer times to defined stated. Subsequent calls will + advance the times by a fixed amount. + + - test_commit [ []] + + Creates a commit with the given message, committing the given + file with the given contents (default for both is to reuse the + message string), and adds a tag (again reusing the message + string as name). Calls test_tick to make the SHA-1s + reproducible. + + - test_merge + + Merges the given rev using the given message. Like test_commit, + creates a tag and calls test_tick before committing. Tips for Writing Tests ---------------------- diff --git a/t/test-lib.sh b/t/test-lib.sh index 41d5a5996..c1839f70b 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -193,6 +193,31 @@ test_tick () { export GIT_COMMITTER_DATE GIT_AUTHOR_DATE } +# Call test_commit with the arguments " [ []]" +# +# This will commit a file with the given contents and the given commit +# message. It will also add a tag with as name. +# +# Both and default to . + +test_commit () { + file=${2:-$(echo "$1" | tr 'A-Z' 'a-z')} + echo "${3-$1}" > "$file" && + git add "$file" && + test_tick && + git commit -m "$1" && + git tag "$1" +} + +# Call test_merge with the arguments " ", where +# can be a tag pointing to the commit-to-merge. + +test_merge () { + test_tick && + git merge -m "$1" "$2" && + git tag "$1" +} + # You are not expected to call test_ok_ and test_failure_ directly, use # the text_expect_* functions instead. -- 2.26.2