on master help sign in
Give unescape modules unique names so both can be used in unit tests and benchmarks
commitcdd1a153c9bdb36958b015b0cd9d1cfaeaf1c679 authorAdam Bergmark <adam@bergmark.nl> dateSun 19 Feb 2017, 13:53 (10 years ago) parent48cfa91
6 files changed+34−11
Data/Aeson/Parser/Internal.hs+1−1 Data/Aeson/Parser/Unescape.hs+11 aeson.cabal+16−8 ffi/Data/Aeson/Parser/Unescape.hs → ffi/Data/Aeson/Parser/UnescapeFFI.hs+1−1 pure/Data/Aeson/Parser/Unescape.hs → pure/Data/Aeson/Parser/UnescapePure.hs+1−1 tests/UnitTests.hs+4
Data/Aeson/Parser/Internal.hs+1−1
@@ -50,7 +50,7 @@ import qualified Data.ByteString.Unsafe as B
5050import qualified Data.ByteString.Lazy as L
5151import qualified Data.HashMap.Strict as H
5252import qualified Data.Scientific as Sci
53−import Data.Aeson.Parser.Unescape
53+import Data.Aeson.Parser.Unescape (unescapeText)
5454
5555#if MIN_VERSION_ghc_prim(0,3,1)
5656import GHC.Base (Int#, (==#), isTrue#, word2Int#)
Data/Aeson/Parser/Unescape.hsnew file+11
@@ -0,0 +1,11 @@
1+{-# LANGUAGE CPP #-}
2+module Data.Aeson.Parser.Unescape
3+ (
4+ unescapeText
5+ ) where
6+
7+#ifdef CFFI
8+import Data.Aeson.Parser.UnescapeFFI (unescapeText)
9+#else
10+import Data.Aeson.Parser.UnescapePure (unescapeText)
11+#endif
aeson.cabal+16−8
@@ -51,9 +51,11 @@ extra-source-files:
5151 examples/*.cabal
5252 examples/*.hs
5353 examples/Twitter/*.hs
54+ ffi/Data/Aeson/Parser/*.hs
5455 include/*.h
5556 tests/JSONTestSuite/test_parsing/*.json
5657 tests/JSONTestSuite/test_transform/*.json
58+ pure/Data/Aeson/Parser/*.hs
5759
5860flag developer
5961 description: operate in developer mode
@@ -77,6 +79,7 @@ flag cffi
7779
7880library
7981 default-language: Haskell2010
82+ hs-source-dirs: .
8083
8184 exposed-modules:
8285 Data.Aeson
@@ -156,18 +159,25 @@ library
156159
157160 include-dirs: include
158161 if impl(ghcjs) || !flag(cffi)
159− hs-source-dirs: . pure
162+ hs-source-dirs: pure
163+ other-modules: Data.Aeson.Parser.UnescapePure
160164 else
161− c-sources: cbits/unescape_string.c
165+ c-sources: cbits/unescape_string.c
162166 cpp-options: -DCFFI
163− hs-source-dirs: . ffi
167+ hs-source-dirs: ffi
168+ other-modules: Data.Aeson.Parser.UnescapeFFI
164169
165170test-suite tests
166171 default-language: Haskell2010
167− type: exitcode-stdio-1.0
168− hs-source-dirs: tests
169− main-is: Tests.hs
172+ type: exitcode-stdio-1.0
173+ hs-source-dirs: tests ffi pure
174+ main-is: Tests.hs
175+ c-sources: cbits/unescape_string.c
176+ ghc-options: -Wall -threaded -rtsopts
177+
170178 other-modules:
179+ Data.Aeson.Parser.UnescapeFFI
180+ Data.Aeson.Parser.UnescapePure
171181 DataFamilies.Properties
172182 DataFamilies.Instances
173183 DataFamilies.Encoders
@@ -183,8 +193,6 @@ test-suite tests
183193 UnitTests
184194 UnitTests.NullaryConstructors
185195
186− ghc-options: -Wall -threaded -rtsopts
187−
188196 build-depends:
189197 HUnit,
190198 QuickCheck >= 2.8 && <2.9.3,
ffi/Data/Aeson/Parser/Unescape.hs → ffi/Data/Aeson/Parser/UnescapeFFI.hsrenamed+1−1
@@ -2,7 +2,7 @@
22{-# LANGUAGE MagicHash #-}
33{-# LANGUAGE UnliftedFFITypes #-}
44
5−module Data.Aeson.Parser.Unescape
5+module Data.Aeson.Parser.UnescapeFFI
66 (
77 unescapeText
88 ) where
pure/Data/Aeson/Parser/Unescape.hs → pure/Data/Aeson/Parser/UnescapePure.hsrenamed+1−1
@@ -1,4 +1,4 @@
1−module Data.Aeson.Parser.Unescape
1+module Data.Aeson.Parser.UnescapePure
22 (
33 unescapeText
44 ) where
tests/UnitTests.hs+4
@@ -54,6 +54,10 @@ import qualified Data.Text.Lazy.Encoding as TLE
5454import qualified ErrorMessages
5555import qualified SerializationFormatSpec
5656
57+-- Asserts that we can use both modules at once in the test suite.
58+import Data.Aeson.Parser.UnescapeFFI ()
59+import Data.Aeson.Parser.UnescapePure ()
60+
5761tests :: Test
5862tests = testGroup "unit" [
5963 testGroup "SerializationFormatSpec" SerializationFormatSpec.tests