Repository : ssh://darcs.haskell.org//srv/darcs/testsuite

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/4341b73f52f47718128135327bd4f60f0d1c726e

>---------------------------------------------------------------

commit 4341b73f52f47718128135327bd4f60f0d1c726e
Author: David Terei <[email protected]>
Date:   Tue Dec 20 15:53:57 2011 -0800

    More Safe Haskell tests

>---------------------------------------------------------------

 tests/safeHaskell/check/Check06.hs             |   13 +++++++++++++
 tests/safeHaskell/check/Check06.stderr         |    5 +++++
 tests/safeHaskell/check/Check06_A.hs           |    6 ++++++
 tests/safeHaskell/check/Check07.hs             |   14 ++++++++++++++
 tests/safeHaskell/check/Check07.stderr         |    3 +++
 tests/safeHaskell/check/Check07_A.hs           |    8 ++++++++
 tests/safeHaskell/check/Check07_B.hs           |    8 ++++++++
 tests/safeHaskell/check/Check08.hs             |   14 ++++++++++++++
 tests/safeHaskell/check/Check08.stderr         |    6 ++++++
 tests/safeHaskell/check/Check08_A.hs           |    8 ++++++++
 tests/safeHaskell/check/Check08_B.hs           |    8 ++++++++
 tests/safeHaskell/check/all.T                  |   15 +++++++++++++++
 tests/safeHaskell/check/pkg01/M_SafePkg5.hs    |   14 ++++++++++++++
 tests/safeHaskell/check/pkg01/Makefile         |    3 +++
 tests/safeHaskell/check/pkg01/p.cabal          |    1 +
 tests/safeHaskell/check/pkg01/safePkg01.stdout |    5 +++++
 16 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/tests/safeHaskell/check/Check06.hs 
b/tests/safeHaskell/check/Check06.hs
new file mode 100644
index 0000000..a4debfc
--- /dev/null
+++ b/tests/safeHaskell/check/Check06.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure importing a safe-infered module brings in the
+-- pkg trust requirements correctly.
+module Check06 ( main' ) where
+
+import safe Check06_A
+
+main' =
+    let n = mainM 1
+    in n
+
diff --git a/tests/safeHaskell/check/Check06.stderr 
b/tests/safeHaskell/check/Check06.stderr
new file mode 100644
index 0000000..07a4937
--- /dev/null
+++ b/tests/safeHaskell/check/Check06.stderr
@@ -0,0 +1,5 @@
+[1 of 2] Compiling Check06_A        ( Check06_A.hs, Check06_A.o )
+[2 of 2] Compiling Check06          ( Check06.hs, Check06.o )
+
+<no location info>:
+    The package (base) is required to be trusted but it isn't!
diff --git a/tests/safeHaskell/check/Check06_A.hs 
b/tests/safeHaskell/check/Check06_A.hs
new file mode 100644
index 0000000..9c9d92b
--- /dev/null
+++ b/tests/safeHaskell/check/Check06_A.hs
@@ -0,0 +1,6 @@
+-- safe infered, with requirement base is trusted
+module Check06_A where
+
+mainM :: Int -> Int
+mainM n = n + 1
+
diff --git a/tests/safeHaskell/check/Check07.hs 
b/tests/safeHaskell/check/Check07.hs
new file mode 100644
index 0000000..aa10c37
--- /dev/null
+++ b/tests/safeHaskell/check/Check07.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure selective safe imports brings in pkg trust requirements correctly.
+-- (e.g only for the imports that are safe ones)
+module Check07 ( main' ) where
+
+import safe Check07_A -- no pkg trust reqs
+import Check07_B -- base pkg trust req
+
+main' =
+    let n = a (b 1)
+    in n
+
diff --git a/tests/safeHaskell/check/Check07.stderr 
b/tests/safeHaskell/check/Check07.stderr
new file mode 100644
index 0000000..dafdad6
--- /dev/null
+++ b/tests/safeHaskell/check/Check07.stderr
@@ -0,0 +1,3 @@
+[1 of 3] Compiling Check07_B        ( Check07_B.hs, Check07_B.o )
+[2 of 3] Compiling Check07_A        ( Check07_A.hs, Check07_A.o )
+[3 of 3] Compiling Check07          ( Check07.hs, Check07.o )
diff --git a/tests/safeHaskell/check/Check07_A.hs 
b/tests/safeHaskell/check/Check07_A.hs
new file mode 100644
index 0000000..5b38c6a
--- /dev/null
+++ b/tests/safeHaskell/check/Check07_A.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- safe infered, with no pkg trust reqs
+module Check07_A where
+
+a :: a -> a
+a n = n
+
diff --git a/tests/safeHaskell/check/Check07_B.hs 
b/tests/safeHaskell/check/Check07_B.hs
new file mode 100644
index 0000000..4a2003f
--- /dev/null
+++ b/tests/safeHaskell/check/Check07_B.hs
@@ -0,0 +1,8 @@
+-- safe infered, with requirement base is trusted
+module Check07_B where
+
+import Prelude
+
+b :: Int -> Int
+b n = n + 1
+
diff --git a/tests/safeHaskell/check/Check08.hs 
b/tests/safeHaskell/check/Check08.hs
new file mode 100644
index 0000000..dde6908
--- /dev/null
+++ b/tests/safeHaskell/check/Check08.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure selective safe imports brings in pkg trust requirements correctly.
+-- (e.g only for the imports that are safe ones)
+module Check08 ( main' ) where
+
+import safe Check08_A -- no pkg trust reqs
+import safe Check08_B -- base pkg trust req
+
+main' =
+    let n = a (b 1)
+    in n
+
diff --git a/tests/safeHaskell/check/Check08.stderr 
b/tests/safeHaskell/check/Check08.stderr
new file mode 100644
index 0000000..7a27852
--- /dev/null
+++ b/tests/safeHaskell/check/Check08.stderr
@@ -0,0 +1,6 @@
+[1 of 3] Compiling Check08_B        ( Check08_B.hs, Check08_B.o )
+[2 of 3] Compiling Check08_A        ( Check08_A.hs, Check08_A.o )
+[3 of 3] Compiling Check08          ( Check08.hs, Check08.o )
+
+<no location info>:
+    The package (base) is required to be trusted but it isn't!
diff --git a/tests/safeHaskell/check/Check08_A.hs 
b/tests/safeHaskell/check/Check08_A.hs
new file mode 100644
index 0000000..c888a59
--- /dev/null
+++ b/tests/safeHaskell/check/Check08_A.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- safe infered, with no pkg trust reqs
+module Check08_A where
+
+a :: a -> a
+a n = n
+
diff --git a/tests/safeHaskell/check/Check08_B.hs 
b/tests/safeHaskell/check/Check08_B.hs
new file mode 100644
index 0000000..41feab5
--- /dev/null
+++ b/tests/safeHaskell/check/Check08_B.hs
@@ -0,0 +1,8 @@
+-- safe infered, with requirement base is trusted
+module Check08_B where
+
+import Prelude
+
+b :: Int -> Int
+b n = n + 1
+
diff --git a/tests/safeHaskell/check/all.T b/tests/safeHaskell/check/all.T
index d8b2f37..41d8edf 100644
--- a/tests/safeHaskell/check/all.T
+++ b/tests/safeHaskell/check/all.T
@@ -42,3 +42,18 @@ test('Check04', normal, multi_compile, ['Check04', [
 # Check -fpackage-trust with no safe haskell flag is an error
 test('Check05', normal, compile, [''])
 
+# Check safe-infered modules have correct pkg trust requirements
+test('Check06',
+     extra_clean(['Check06_A.hi', 'Check06_A.o']),
+     multimod_compile_fail, ['Check06', ''])
+
+# Check selective safe imports bring in correct pkg trust requirements
+test('Check07',
+     extra_clean(['Check07_A.hi', 'Check07_A.o', 'Check07_B.hi', 
'Check07_B.o']),
+     multimod_compile, ['Check07', ''])
+
+# Check selective safe imports bring in correct pkg trust requirements
+test('Check08',
+     extra_clean(['Check08_A.hi', 'Check08_A.o', 'Check08_B.hi', 
'Check08_B.o']),
+     multimod_compile_fail, ['Check08', ''])
+
diff --git a/tests/safeHaskell/check/pkg01/M_SafePkg5.hs 
b/tests/safeHaskell/check/pkg01/M_SafePkg5.hs
new file mode 100644
index 0000000..a4b7390
--- /dev/null
+++ b/tests/safeHaskell/check/pkg01/M_SafePkg5.hs
@@ -0,0 +1,14 @@
+-- safe inference
+-- same module as M_SafePkg4 which compiles with -XSafe.
+-- Want to make sure compiles fine and is infered safe and
+-- also picks up corrected pkg trust requirements.
+module M_SafePkg5 where
+
+import qualified M_SafePkg3 as M3
+import Data.Word
+
+bigInt :: Int
+bigInt = M3.bigInt
+
+type MyWord = Word
+
diff --git a/tests/safeHaskell/check/pkg01/Makefile 
b/tests/safeHaskell/check/pkg01/Makefile
index 1c34906..3f3dea6 100644
--- a/tests/safeHaskell/check/pkg01/Makefile
+++ b/tests/safeHaskell/check/pkg01/Makefile
@@ -44,6 +44,9 @@ safePkg01:
        echo 'M_SafePkg4'
        '$(TEST_HC)' --show-iface dist/build/M_SafePkg4.hi | grep -E '^package 
dependencies:|^trusted:|^require own pkg trusted:'
        echo
+       echo 'M_SafePkg5'
+       '$(TEST_HC)' --show-iface dist/build/M_SafePkg5.hi | grep -E '^package 
dependencies:|^trusted:|^require own pkg trusted:'
+       echo
        echo 'Testing setting trust'
        $(LGHC_PKG) trust safePkg01-1.0
        $(LGHC_PKG) field safePkg01-1.0 trusted
diff --git a/tests/safeHaskell/check/pkg01/p.cabal 
b/tests/safeHaskell/check/pkg01/p.cabal
index f6d84b5..7ddffff 100644
--- a/tests/safeHaskell/check/pkg01/p.cabal
+++ b/tests/safeHaskell/check/pkg01/p.cabal
@@ -11,5 +11,6 @@ Library {
         M_SafePkg2
         M_SafePkg3
         M_SafePkg4
+        M_SafePkg5
 }
 
diff --git a/tests/safeHaskell/check/pkg01/safePkg01.stdout 
b/tests/safeHaskell/check/pkg01/safePkg01.stdout
index 9a98bac..8390604 100644
--- a/tests/safeHaskell/check/pkg01/safePkg01.stdout
+++ b/tests/safeHaskell/check/pkg01/safePkg01.stdout
@@ -23,6 +23,11 @@ package dependencies: base* ghc-prim integer-gmp
 trusted: safe
 require own pkg trusted: True
 
+M_SafePkg5
+package dependencies: base* ghc-prim integer-gmp
+trusted: safe-infered
+require own pkg trusted: True
+
 Testing setting trust
 trusted: True
 trusted: False



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to