summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--testsuite/tests/th/Makefile19
-rw-r--r--testsuite/tests/th/TH_Depends.hs9
-rw-r--r--testsuite/tests/th/TH_Depends.stdout4
-rw-r--r--testsuite/tests/th/TH_Depends_External.hs12
-rw-r--r--testsuite/tests/th/all.T5
5 files changed, 49 insertions, 0 deletions
diff --git a/testsuite/tests/th/Makefile b/testsuite/tests/th/Makefile
index 1e35cecb12..97692391c0 100644
--- a/testsuite/tests/th/Makefile
+++ b/testsuite/tests/th/Makefile
@@ -17,3 +17,22 @@ TH_spliceE5_prof::
'$(TEST_HC)' $(TEST_HC_OPTS) $(HC_OPTS) --make -v0 TH_spliceE5_prof.hs -prof -auto-all -osuf p.o -o $@
./$@
+.PHONY: TH_Depends
+TH_Depends:
+ $(RM) TH_Depends_external.txt
+ $(RM) TH_Depends TH_Depends.exe
+ $(RM) TH_Depends.o TH_Depends.hi
+ $(RM) TH_Depends_External.o TH_Depends_External.hi
+ echo "first run" > TH_Depends_external.txt
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends
+ ./TH_Depends
+# Remove the executable, as GHC won't relink if the timestamps seem to
+# be the same
+ $(RM) TH_Depends TH_Depends.exe
+ echo "second run" > TH_Depends_external.txt
+# Give TH_Depends_external.txt a future date in case it gets the same
+# timestamp again
+ touch --date="now + 3 seconds" TH_Depends_external.txt
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends
+ ./TH_Depends
+
diff --git a/testsuite/tests/th/TH_Depends.hs b/testsuite/tests/th/TH_Depends.hs
new file mode 100644
index 0000000000..94ab51178a
--- /dev/null
+++ b/testsuite/tests/th/TH_Depends.hs
@@ -0,0 +1,9 @@
+
+{-# LANGUAGE TemplateHaskell #-}
+
+module Main where
+
+import TH_Depends_External (loadStringFromFile)
+
+main :: IO ()
+main = putStrLn $loadStringFromFile
diff --git a/testsuite/tests/th/TH_Depends.stdout b/testsuite/tests/th/TH_Depends.stdout
new file mode 100644
index 0000000000..3304582bde
--- /dev/null
+++ b/testsuite/tests/th/TH_Depends.stdout
@@ -0,0 +1,4 @@
+first run
+
+second run
+
diff --git a/testsuite/tests/th/TH_Depends_External.hs b/testsuite/tests/th/TH_Depends_External.hs
new file mode 100644
index 0000000000..6e5e6d53b2
--- /dev/null
+++ b/testsuite/tests/th/TH_Depends_External.hs
@@ -0,0 +1,12 @@
+
+module TH_Depends_External where
+
+import Language.Haskell.TH.Syntax
+import Language.Haskell.TH.Lib
+
+loadStringFromFile :: Q Exp
+loadStringFromFile = do
+ let externalDependency = "TH_Depends_external.txt"
+ qAddDependentFile externalDependency
+ s <- qRunIO $ readFile externalDependency
+ stringE s
diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T
index a16f7c5b23..91432cf9ad 100644
--- a/testsuite/tests/th/all.T
+++ b/testsuite/tests/th/all.T
@@ -208,3 +208,8 @@ test('T5452', normal, compile, ['-v0'])
test('T5434', extra_clean(['T5434a.hi','T5434a.o']),
multimod_compile, ['T5434','-v0 -Wall'])
test('T5508', normal, compile, ['-v0 -ddump-splices'])
+test('TH_Depends',
+ [extra_clean(['TH_Depends_External.o', 'TH_Depends_External.hi',
+ 'TH_Depends_external.txt'])],
+ run_command,
+ ['$MAKE -s --no-print-directory TH_Depends'])