This could be convenient when tests are independent from the rest in the
same file. Normally we would do this
test_expect_success '...' '
git init foo &&
(
cd foo &&
<script>
)
'
Now we can write a shorter version
test_repo_expect_success '...' '
<script>
'
The other function, test_subdir_expect_success, expands the script to
"( cd <repo> && <script> )", which can be useful for grouping a series of
tests that operate on the same repository in a subdir, e.g.
test_expect_success 'create repo abc' 'test_create_repo abc'
test_subdir_expect_success abc '...' <script>
test_subdir_expect_success abc '...' <another-script>
Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
t/README | 15 +++++++++++++++
t/test-lib-functions.sh | 20 ++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/t/README b/t/README
index 1dc908e..6fc0d92 100644
--- a/t/README
+++ b/t/README
@@ -743,6 +743,21 @@ library for your script to use.
the symbolic link in the file system and a part that does; then only
the latter part need be protected by a SYMLINKS prerequisite (see below).
+ - test_subdir_expect_success <subdir> [<prereq>] <message> <script>
+ test_subdir_expect_success <subdir> <prereq> <message> <script> <prologue>
+
+ Expands to
+
+ test_expect_success [<prereq>] <message> "( cd <subdir> && <script> )"
+ or
+
+ test_expect_success <prereq> <message> "<prologue> && ( cd <subdir> &&
<script> )"
+
+ - test_repo_expect_success [<prereq>] <message> <script>
+
+ Create a new repository and perform <script> inside this repository
+ in a subshell.
+
Prerequisites
-------------
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index c64e5a5..3182b9a 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -416,6 +416,26 @@ test_expect_success () {
test_finish_
}
+test_subdir_expect_success () {
+ local subdir="$1"
+ shift
+ case "$#" in
+ 2) test_expect_success "$1" "( cd $subdir && $2 )";;
+ 3) test_expect_success "$1" "$2" "( cd $subdir && $3 )";;
+ 4) test_expect_success "$1" "$2" "$4 && ( cd $subdir && $3 )";;
+ *) error "bug in the test script: not 3-5 parameters to
test-subdir-expect-success";;
+ esac
+}
+
+test_repo_expect_success () {
+ local repo=repo-$(($test_count+1))
+ case "$#" in
+ 2) test_subdir_expect_success "$repo" '' "$1" "$2"
"test_create_repo $repo";;
+ 3) test_subdir_expect_success "$repo" "$1" "$2" "$3"
"test_create_repo $repo";;
+ *) error "bug in the test script: not 2 or 3 parameters to
test-repo-expect-success";;
+ esac
+}
+
# test_external runs external test scripts that provide continuous
# test output about their progress, and succeeds/fails on
# zero/non-zero exit code. It outputs the test output on stdout even
--
2.3.0.rc1.137.g477eb31
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html