summaryrefslogtreecommitdiff
path: root/testsuite/tests/driver/recomp-boot
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/driver/recomp-boot')
-rw-r--r--testsuite/tests/driver/recomp-boot/A.hs3
-rw-r--r--testsuite/tests/driver/recomp-boot/B1.hs3
-rw-r--r--testsuite/tests/driver/recomp-boot/B2.hs3
-rw-r--r--testsuite/tests/driver/recomp-boot/C.hs1
-rw-r--r--testsuite/tests/driver/recomp-boot/C.hs-boot1
-rw-r--r--testsuite/tests/driver/recomp-boot/Makefile20
-rw-r--r--testsuite/tests/driver/recomp-boot/all.T3
-rw-r--r--testsuite/tests/driver/recomp-boot/recomp-boot.stdout6
8 files changed, 40 insertions, 0 deletions
diff --git a/testsuite/tests/driver/recomp-boot/A.hs b/testsuite/tests/driver/recomp-boot/A.hs
new file mode 100644
index 0000000000..41644a1c54
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+import B
diff --git a/testsuite/tests/driver/recomp-boot/B1.hs b/testsuite/tests/driver/recomp-boot/B1.hs
new file mode 100644
index 0000000000..ca48559b6d
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/B1.hs
@@ -0,0 +1,3 @@
+module B where
+
+import C
diff --git a/testsuite/tests/driver/recomp-boot/B2.hs b/testsuite/tests/driver/recomp-boot/B2.hs
new file mode 100644
index 0000000000..29b41f12fe
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/B2.hs
@@ -0,0 +1,3 @@
+module B where
+
+import {-# SOURCE #-} C
diff --git a/testsuite/tests/driver/recomp-boot/C.hs b/testsuite/tests/driver/recomp-boot/C.hs
new file mode 100644
index 0000000000..5831959653
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/C.hs
@@ -0,0 +1 @@
+module C where
diff --git a/testsuite/tests/driver/recomp-boot/C.hs-boot b/testsuite/tests/driver/recomp-boot/C.hs-boot
new file mode 100644
index 0000000000..5831959653
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/C.hs-boot
@@ -0,0 +1 @@
+module C where
diff --git a/testsuite/tests/driver/recomp-boot/Makefile b/testsuite/tests/driver/recomp-boot/Makefile
new file mode 100644
index 0000000000..e888238170
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/Makefile
@@ -0,0 +1,20 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Recompilation tests
+
+clean:
+ rm -f *.o *.hi
+ rm -f B.hs
+
+# Recompile
+
+recomp-boot: clean
+ cp B1.hs B.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make A.hs
+ sleep 1
+ cp B2.hs B.hs
+ # Operating systems with poor timer resolution (e.g. Darwin) need a bit
+ # of time here, lest GHC not realize that the file changed.
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make A.hs
diff --git a/testsuite/tests/driver/recomp-boot/all.T b/testsuite/tests/driver/recomp-boot/all.T
new file mode 100644
index 0000000000..ca3ab09047
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/all.T
@@ -0,0 +1,3 @@
+test('recomp-boot', [extra_files(['A.hs', 'B1.hs', 'B2.hs', 'C.hs', 'C.hs-boot']),
+ when(fast(), skip)],
+ makefile_test, [])
diff --git a/testsuite/tests/driver/recomp-boot/recomp-boot.stdout b/testsuite/tests/driver/recomp-boot/recomp-boot.stdout
new file mode 100644
index 0000000000..77f5a1794a
--- /dev/null
+++ b/testsuite/tests/driver/recomp-boot/recomp-boot.stdout
@@ -0,0 +1,6 @@
+[1 of 3] Compiling C ( C.hs, C.o )
+[2 of 3] Compiling B ( B.hs, B.o )
+[3 of 3] Compiling A ( A.hs, A.o )
+[1 of 4] Compiling C[boot] ( C.hs-boot, C.o-boot )
+[3 of 4] Compiling B ( B.hs, B.o )
+[4 of 4] Compiling A ( A.hs, A.o ) [B changed]