summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver/recomp013
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2013-09-17 22:37:51 +0200
committerJoachim Breitner <mail@joachim-breitner.de>2013-09-17 22:37:51 +0200
commit9a4c4e2d539e2dfa08b76201f21a59c3b7a96472 (patch)
treed605b44e2b76ccded19b2712d1fabe8350663335 /testsuite/tests/driver/recomp013
parent3505891c94f50aeadd6eef0cdce963593963fa60 (diff)
downloadhaskell-9a4c4e2d539e2dfa08b76201f21a59c3b7a96472.tar.gz
Recompilation test case for #8247
But seems to be fixed in head already.
Diffstat (limited to 'testsuite/tests/driver/recomp013')
-rw-r--r--testsuite/tests/driver/recomp013/A.hs1
-rw-r--r--testsuite/tests/driver/recomp013/B.hs1
-rw-r--r--testsuite/tests/driver/recomp013/C.hs1
-rw-r--r--testsuite/tests/driver/recomp013/Makefile24
-rw-r--r--testsuite/tests/driver/recomp013/all.T7
-rw-r--r--testsuite/tests/driver/recomp013/recomp013.stdout7
6 files changed, 41 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp013/A.hs b/testsuite/tests/driver/recomp013/A.hs
new file mode 100644
index 0000000000..01599b3430
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/A.hs
@@ -0,0 +1 @@
+module A where a1 = 5; a2 = 42; a3 = 113
diff --git a/testsuite/tests/driver/recomp013/B.hs b/testsuite/tests/driver/recomp013/B.hs
new file mode 100644
index 0000000000..573729980f
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/B.hs
@@ -0,0 +1 @@
+module B (module A) where import A hiding (a1, a2)
diff --git a/testsuite/tests/driver/recomp013/C.hs b/testsuite/tests/driver/recomp013/C.hs
new file mode 100644
index 0000000000..da2c02f751
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/C.hs
@@ -0,0 +1 @@
+module C where import B; a2 = 142
diff --git a/testsuite/tests/driver/recomp013/Makefile b/testsuite/tests/driver/recomp013/Makefile
new file mode 100644
index 0000000000..1b213c4dbc
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/Makefile
@@ -0,0 +1,24 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
+# Recompilation tests
+
+clean:
+ rm -f *.o *.hi
+
+# bug #8247
+
+recomp013: clean
+ echo 'module A where a1 = 5; a2 = 42; a3 = 113' > A.hs
+ echo 'module B (module A) where import A hiding (a1)' > B.hs
+ echo 'module C where import B; a2 = 142' > C.hs
+ echo 'first run'
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make C.hs
+ echo 'module B (module A) where import A hiding (a1, a2)' > B.hs
+ echo 'second run'
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make C.hs
diff --git a/testsuite/tests/driver/recomp013/all.T b/testsuite/tests/driver/recomp013/all.T
new file mode 100644
index 0000000000..a40255a53c
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/all.T
@@ -0,0 +1,7 @@
+# Test for #8247, a recompilation bug
+
+test('recomp013',
+ [ clean_cmd('$MAKE -s clean') ],
+ run_command,
+ ['$MAKE -s --no-print-directory recomp013'])
+
diff --git a/testsuite/tests/driver/recomp013/recomp013.stdout b/testsuite/tests/driver/recomp013/recomp013.stdout
new file mode 100644
index 0000000000..0a5aef7356
--- /dev/null
+++ b/testsuite/tests/driver/recomp013/recomp013.stdout
@@ -0,0 +1,7 @@
+first run
+[1 of 3] Compiling A ( A.hs, A.o )
+[2 of 3] Compiling B ( B.hs, B.o )
+[3 of 3] Compiling C ( C.hs, C.o )
+second run
+[2 of 3] Compiling B ( B.hs, B.o )
+[3 of 3] Compiling C ( C.hs, C.o ) [B changed]