summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/export-tests.sh37
-rwxr-xr-xtests/export-testsuite.sh55
-rw-r--r--tests/testsuite-files22
3 files changed, 77 insertions, 37 deletions
diff --git a/tests/export-tests.sh b/tests/export-tests.sh
deleted file mode 100755
index 0ed7dd99..00000000
--- a/tests/export-tests.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-# export the testsuite files to a separate tar
-
-TESTSUITES_LIST_FILE=$PWD/testsuites-list
-if ! [ -f $TESTSUITES_LIST_FILE ];then
- echo "testsuites list file is not exsit."
- exit 1
-fi
-
-TESTSUITES_LIST=$(cat $TESTSUITES_LIST_FILE)
-if [ -z "$TESTSUITES_LIST" ]; then
- echo "no file be list in testsuites-list"
- exit 1
-fi
-
-DEST="btrfs-progs-tests.tar.gz"
-if [ -f $DEST ];then
- echo "remove exsit package: " $DEST
- rm $DEST
-fi
-
-TEST_ID=$PWD/testsuites-id
-if [ -f $TEST_ID ];then
- rm $TEST_ID
-fi
-VERSION=`./version.sh`
-TIMESTAMP=`date -u "+%Y-%m-%d %T %Z"`
-
-echo "git version: " $VERSION > $TEST_ID
-echo "this tar is created in: " $TIMESTAMP >> $TEST_ID
-
-echo "begin create tar: " $DEST
-tar --exclude-vcs-ignores -zScf $DEST -C ../ $TESTSUITES_LIST
-if [ $? -eq 0 ]; then
- echo "create tar successfully."
-fi
-rm $TEST_ID
diff --git a/tests/export-testsuite.sh b/tests/export-testsuite.sh
new file mode 100755
index 00000000..31b6ecf4
--- /dev/null
+++ b/tests/export-testsuite.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+# export the testsuite files to a separate tar
+
+if ! [ -f testsuite-files ]; then
+ echo "ERROR: cannot find testsuite-files"
+ exit 1
+fi
+
+set -e
+
+TESTSUITE_TAR="btrfs-progs-tests.tar.gz"
+rm -f "$TESTSUITE_TAR"
+
+TIMESTAMP=`date -u "+%Y-%m-%d %T %Z"`
+
+{
+ echo "VERSION=`cat ../VERSION`"
+ echo "GIT_VERSION=`git describe`"
+ echo "TIMESTAMP='$TIMESTAMP'"
+} > testsuite-id
+
+# Due to potentially unwanted files in the testsuite (restored images or other
+# temporary files) we can't simply copy everything so the tar
+#
+# The testsuite-files specifier:
+# F file
+# - directly copy the file from the given path, may be a git tracked file or
+# a built binary
+# G path
+# - a path relative to the top of git, recursively traversed; path
+# postprocessing is needed so the tar gets it relative to tests/
+while read t f; do
+ case "$t" in
+ F) echo "$f";;
+ G)
+ here=`pwd`
+ cd ..
+ git ls-tree -r --name-only --full-name HEAD "$f" |
+ sed -e 's#^tests/##' |
+ sed -e 's#^Documentation#../Documentation#'
+ cd "$here"
+ ;;
+ esac
+done < testsuite-files > testsuite-files-all
+
+echo "create tar: $TESTSUITE_TAR"
+tar cz --sparse -f "$TESTSUITE_TAR" -T testsuite-files-all
+if [ $? -eq 0 ]; then
+ echo "tar created successfully"
+ cat testsuite-id
+ rm -f testsuite-files-all
+ rm -f testsuite-id
+else
+ exit $?
+fi
diff --git a/tests/testsuite-files b/tests/testsuite-files
new file mode 100644
index 00000000..d75e2356
--- /dev/null
+++ b/tests/testsuite-files
@@ -0,0 +1,22 @@
+F README.md
+G Documentation/
+F testsuite-id
+F ../fssum
+F ../btrfs-corrupt-block
+F common
+F common.convert
+F common.local
+G tests/cli-tests/
+F cli-tests.sh
+G tests/convert-tests/
+F convert-tests.sh
+G tests/fsck-tests/
+F fsck-tests.sh
+G tests/fuzz-tests/
+F fuzz-tests.sh
+G tests/misc-tests/
+F misc-tests.sh
+G tests/mkfs-tests/
+F mkfs-tests.sh
+F scan-results.sh
+F test-console.sh