aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/a--b,a--c,b--c/a.do3
-rw-r--r--tests/a--b,a--c,b--c/all.do9
-rw-r--r--tests/a--b,a--c,b--c/b.do3
-rw-r--r--tests/a--b,a--c,b--c/c.do1
-rw-r--r--tests/a--b,a--c,b--d,c--d/a.do3
-rw-r--r--tests/a--b,a--c,b--d,c--d/all.do9
-rw-r--r--tests/a--b,a--c,b--d,c--d/b.do3
-rw-r--r--tests/a--b,a--c,b--d,c--d/c.do3
-rw-r--r--tests/a--b,a--c,b--d,c--d/d.do1
-rw-r--r--tests/a--c,b--c,c--d/a.do3
-rw-r--r--tests/a--c,b--c,c--d/all.do10
-rw-r--r--tests/a--c,b--c,c--d/b.do3
-rw-r--r--tests/a--c,b--c,c--d/c.do3
-rw-r--r--tests/a--c,b--c,c--d/d.do1
-rw-r--r--tests/a--c,b--c/a.do3
-rw-r--r--tests/a--c,b--c/all.do10
-rw-r--r--tests/a--c,b--c/b.do3
-rw-r--r--tests/a--c,b--c/c.do1
-rw-r--r--tests/a/a.do1
-rw-r--r--tests/a/all.do9
-rw-r--r--tests/all.do16
-rw-r--r--tests/always/a.do3
-rw-r--r--tests/always/all.do9
-rw-r--r--tests/args/all.do5
-rw-r--r--tests/args/d/a.ext.do3
-rw-r--r--tests/cwd/a.do3
-rw-r--r--tests/cwd/all.do9
-rw-r--r--tests/cwd/d/b.do3
-rw-r--r--tests/cwd/d/d/c.do1
-rw-r--r--tests/dependency-loop/a.do3
-rw-r--r--tests/dependency-loop/all.do5
-rw-r--r--tests/dependency-loop/b.do3
-rw-r--r--tests/fail/all.do9
-rw-r--r--tests/fail/fail.do2
-rw-r--r--tests/ifcreate/a.do11
-rw-r--r--tests/ifcreate/all.do17
-rw-r--r--tests/include.sh7
37 files changed, 191 insertions, 0 deletions
diff --git a/tests/a--b,a--c,b--c/a.do b/tests/a--b,a--c,b--c/a.do
new file mode 100644
index 0000000..2a1b779
--- /dev/null
+++ b/tests/a--b,a--c,b--c/a.do
@@ -0,0 +1,3 @@
+redo-ifchange b c
+
+echo -n "a" | cat - b c > $3
diff --git a/tests/a--b,a--c,b--c/all.do b/tests/a--b,a--c,b--c/all.do
new file mode 100644
index 0000000..dab5463
--- /dev/null
+++ b/tests/a--b,a--c,b--c/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf a b c
+
+redo-ifchange a
+
+assert "a--b,a--c,b--c" << !
+[ "$(cat a)" = "abcc" ]
+!
diff --git a/tests/a--b,a--c,b--c/b.do b/tests/a--b,a--c,b--c/b.do
new file mode 100644
index 0000000..fc555dd
--- /dev/null
+++ b/tests/a--b,a--c,b--c/b.do
@@ -0,0 +1,3 @@
+redo-ifchange c
+
+echo -n "b" | cat - c > $3
diff --git a/tests/a--b,a--c,b--c/c.do b/tests/a--b,a--c,b--c/c.do
new file mode 100644
index 0000000..6a816ac
--- /dev/null
+++ b/tests/a--b,a--c,b--c/c.do
@@ -0,0 +1 @@
+echo -n "c" > $3
diff --git a/tests/a--b,a--c,b--d,c--d/a.do b/tests/a--b,a--c,b--d,c--d/a.do
new file mode 100644
index 0000000..2a1b779
--- /dev/null
+++ b/tests/a--b,a--c,b--d,c--d/a.do
@@ -0,0 +1,3 @@
+redo-ifchange b c
+
+echo -n "a" | cat - b c > $3
diff --git a/tests/a--b,a--c,b--d,c--d/all.do b/tests/a--b,a--c,b--d,c--d/all.do
new file mode 100644
index 0000000..db431a4
--- /dev/null
+++ b/tests/a--b,a--c,b--d,c--d/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf a b c d
+
+redo-ifchange a
+
+assert "a--b,a--c,b--d,c--d" << !
+[ "$(cat a)" = "abdcd" ]
+!
diff --git a/tests/a--b,a--c,b--d,c--d/b.do b/tests/a--b,a--c,b--d,c--d/b.do
new file mode 100644
index 0000000..9a2fbf4
--- /dev/null
+++ b/tests/a--b,a--c,b--d,c--d/b.do
@@ -0,0 +1,3 @@
+redo-ifchange d
+
+echo -n "b" | cat - d > $3
diff --git a/tests/a--b,a--c,b--d,c--d/c.do b/tests/a--b,a--c,b--d,c--d/c.do
new file mode 100644
index 0000000..fdc64d8
--- /dev/null
+++ b/tests/a--b,a--c,b--d,c--d/c.do
@@ -0,0 +1,3 @@
+redo-ifchange d
+
+echo -n "c" | cat - d > $3
diff --git a/tests/a--b,a--c,b--d,c--d/d.do b/tests/a--b,a--c,b--d,c--d/d.do
new file mode 100644
index 0000000..ab21832
--- /dev/null
+++ b/tests/a--b,a--c,b--d,c--d/d.do
@@ -0,0 +1 @@
+echo -n "d" > $3
diff --git a/tests/a--c,b--c,c--d/a.do b/tests/a--c,b--c,c--d/a.do
new file mode 100644
index 0000000..34d0c7c
--- /dev/null
+++ b/tests/a--c,b--c,c--d/a.do
@@ -0,0 +1,3 @@
+redo-ifchange c
+
+echo -n "a" | cat - c > $3
diff --git a/tests/a--c,b--c,c--d/all.do b/tests/a--c,b--c,c--d/all.do
new file mode 100644
index 0000000..2c93c8a
--- /dev/null
+++ b/tests/a--c,b--c,c--d/all.do
@@ -0,0 +1,10 @@
+. ../include.sh
+
+rm -rf a b c d
+
+redo-ifchange a b
+
+assert "a--c,b--c,c--d" << !
+[ "$(cat a)" = "acd" ] &&
+[ "$(cat b)" = "bcd" ]
+!
diff --git a/tests/a--c,b--c,c--d/b.do b/tests/a--c,b--c,c--d/b.do
new file mode 100644
index 0000000..fc555dd
--- /dev/null
+++ b/tests/a--c,b--c,c--d/b.do
@@ -0,0 +1,3 @@
+redo-ifchange c
+
+echo -n "b" | cat - c > $3
diff --git a/tests/a--c,b--c,c--d/c.do b/tests/a--c,b--c,c--d/c.do
new file mode 100644
index 0000000..fdc64d8
--- /dev/null
+++ b/tests/a--c,b--c,c--d/c.do
@@ -0,0 +1,3 @@
+redo-ifchange d
+
+echo -n "c" | cat - d > $3
diff --git a/tests/a--c,b--c,c--d/d.do b/tests/a--c,b--c,c--d/d.do
new file mode 100644
index 0000000..ab21832
--- /dev/null
+++ b/tests/a--c,b--c,c--d/d.do
@@ -0,0 +1 @@
+echo -n "d" > $3
diff --git a/tests/a--c,b--c/a.do b/tests/a--c,b--c/a.do
new file mode 100644
index 0000000..34d0c7c
--- /dev/null
+++ b/tests/a--c,b--c/a.do
@@ -0,0 +1,3 @@
+redo-ifchange c
+
+echo -n "a" | cat - c > $3
diff --git a/tests/a--c,b--c/all.do b/tests/a--c,b--c/all.do
new file mode 100644
index 0000000..6724b38
--- /dev/null
+++ b/tests/a--c,b--c/all.do
@@ -0,0 +1,10 @@
+. ../include.sh
+
+rm -rf a b c
+
+redo-ifchange a b
+
+assert "a--c,b--c" << !
+[ "$(cat a)" = "ac" ] &&
+[ "$(cat b)" = "bc" ]
+!
diff --git a/tests/a--c,b--c/b.do b/tests/a--c,b--c/b.do
new file mode 100644
index 0000000..fc555dd
--- /dev/null
+++ b/tests/a--c,b--c/b.do
@@ -0,0 +1,3 @@
+redo-ifchange c
+
+echo -n "b" | cat - c > $3
diff --git a/tests/a--c,b--c/c.do b/tests/a--c,b--c/c.do
new file mode 100644
index 0000000..6a816ac
--- /dev/null
+++ b/tests/a--c,b--c/c.do
@@ -0,0 +1 @@
+echo -n "c" > $3
diff --git a/tests/a/a.do b/tests/a/a.do
new file mode 100644
index 0000000..bdff4bb
--- /dev/null
+++ b/tests/a/a.do
@@ -0,0 +1 @@
+echo "a" > $3
diff --git a/tests/a/all.do b/tests/a/all.do
new file mode 100644
index 0000000..71e4a27
--- /dev/null
+++ b/tests/a/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf a
+
+redo-ifchange a
+
+assert "a" << !
+[ "$(cat a)" = "a" ]
+!
diff --git a/tests/all.do b/tests/all.do
new file mode 100644
index 0000000..e9644f9
--- /dev/null
+++ b/tests/all.do
@@ -0,0 +1,16 @@
+exec 1>/dev/null
+redo fail/all
+redo args/all
+redo a/all
+redo a--b,a--c,b--c/all
+redo a--b,a--c,b--d,c--d/all
+redo a--c,b--c/all
+redo a--c,b--c,c--d/all
+redo cwd/all
+#redo default/all
+#redo dodo/all
+redo always/all
+redo ifcreate/all
+#redo parallel/all
+#redo atomic/all
+redo dependency-loop/all
diff --git a/tests/always/a.do b/tests/always/a.do
new file mode 100644
index 0000000..f412852
--- /dev/null
+++ b/tests/always/a.do
@@ -0,0 +1,3 @@
+redo-always
+
+date +%N > $3
diff --git a/tests/always/all.do b/tests/always/all.do
new file mode 100644
index 0000000..de262ce
--- /dev/null
+++ b/tests/always/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf a
+
+redo a
+
+assert "always" << !
+[ "$(cat a)" = "??" ]
+!
diff --git a/tests/args/all.do b/tests/args/all.do
new file mode 100644
index 0000000..d45bd96
--- /dev/null
+++ b/tests/args/all.do
@@ -0,0 +1,5 @@
+. ../include.sh
+
+assert "check arguments supplied to do-script" << !
+redo-ifchange d/a.ext
+!
diff --git a/tests/args/d/a.ext.do b/tests/args/d/a.ext.do
new file mode 100644
index 0000000..fea7d74
--- /dev/null
+++ b/tests/args/d/a.ext.do
@@ -0,0 +1,3 @@
+[ "$1" = "a.ext" ]
+[ "$2" = "a" ]
+[ "$3" != "a.ext" ]
diff --git a/tests/cwd/a.do b/tests/cwd/a.do
new file mode 100644
index 0000000..e8455fe
--- /dev/null
+++ b/tests/cwd/a.do
@@ -0,0 +1,3 @@
+redo-ifchange d/b
+
+echo -n "a" | cat - d/b > $3
diff --git a/tests/cwd/all.do b/tests/cwd/all.do
new file mode 100644
index 0000000..866a9ca
--- /dev/null
+++ b/tests/cwd/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf a d/b d/d/c
+
+redo-ifchange a
+
+assert "cwd" << !
+[ "$(cat a)" == "abc" ]
+!
diff --git a/tests/cwd/d/b.do b/tests/cwd/d/b.do
new file mode 100644
index 0000000..5a81363
--- /dev/null
+++ b/tests/cwd/d/b.do
@@ -0,0 +1,3 @@
+redo-ifchange d/c
+
+echo -n "b" | cat - d/c > $3
diff --git a/tests/cwd/d/d/c.do b/tests/cwd/d/d/c.do
new file mode 100644
index 0000000..6a816ac
--- /dev/null
+++ b/tests/cwd/d/d/c.do
@@ -0,0 +1 @@
+echo -n "c" > $3
diff --git a/tests/dependency-loop/a.do b/tests/dependency-loop/a.do
new file mode 100644
index 0000000..180027f
--- /dev/null
+++ b/tests/dependency-loop/a.do
@@ -0,0 +1,3 @@
+redo-ifchange b
+
+echo -n "a" | cat - b > $3
diff --git a/tests/dependency-loop/all.do b/tests/dependency-loop/all.do
new file mode 100644
index 0000000..c5cb480
--- /dev/null
+++ b/tests/dependency-loop/all.do
@@ -0,0 +1,5 @@
+. ../include.sh
+
+assert "dependency-loop" << !
+timeout 1 redo-ifchange a >& /dev/null
+!
diff --git a/tests/dependency-loop/b.do b/tests/dependency-loop/b.do
new file mode 100644
index 0000000..134228c
--- /dev/null
+++ b/tests/dependency-loop/b.do
@@ -0,0 +1,3 @@
+redo-ifchange a
+
+echo -n "b" | cat - a > $3
diff --git a/tests/fail/all.do b/tests/fail/all.do
new file mode 100644
index 0000000..9ad5ef8
--- /dev/null
+++ b/tests/fail/all.do
@@ -0,0 +1,9 @@
+. ../include.sh
+
+rm -rf fail
+
+redo-ifchange fail >& /dev/null || true
+
+assert "abort if do-script returns nonzero" << !
+[ ! -e fail ]
+!
diff --git a/tests/fail/fail.do b/tests/fail/fail.do
new file mode 100644
index 0000000..2251510
--- /dev/null
+++ b/tests/fail/fail.do
@@ -0,0 +1,2 @@
+echo "fail" > $3
+exit 1
diff --git a/tests/ifcreate/a.do b/tests/ifcreate/a.do
new file mode 100644
index 0000000..7f58ce4
--- /dev/null
+++ b/tests/ifcreate/a.do
@@ -0,0 +1,11 @@
+
+if [ -e b ]; then
+ echo -n "b" | cat - a > $3
+else
+ redo-ifcreate b
+ if [ -e a ]; then
+ echo -n "a" | cat - a > $3
+ else
+ echo "a" > $3
+ fi
+fi
diff --git a/tests/ifcreate/all.do b/tests/ifcreate/all.do
new file mode 100644
index 0000000..93fdaf9
--- /dev/null
+++ b/tests/ifcreate/all.do
@@ -0,0 +1,17 @@
+. ../include.sh
+
+rm -rf a b
+
+# we use redo here, as redo-ifchange is smart enough not to rebuild the same
+# file twice in the same redo session
+
+redo a
+redo a
+
+touch b
+
+redo a
+
+assert "ifcreate" << !
+[ "$(cat a)" = "baa" ]
+!
diff --git a/tests/include.sh b/tests/include.sh
new file mode 100644
index 0000000..7052585
--- /dev/null
+++ b/tests/include.sh
@@ -0,0 +1,7 @@
+assert() {
+ if source /dev/stdin; then
+ echo "PASS: $1" >&2
+ else
+ echo "FAIL: $1" >&2
+ fi
+}