From 33d2aa87906bd036d8b0bde614978fd70dc8b6d2 Mon Sep 17 00:00:00 2001 From: Taylor Fausak Date: Sat, 6 Nov 2021 20:33:43 +0000 Subject: [PATCH] Use common stanzas in package description --- brittany.cabal | 268 ++++++++------------------- src-libinterfacetests/Main.hs | 1 - src-literatetests/Main.hs | 47 +---- src-unittests/AsymptoticPerfTests.hs | 59 +----- src-unittests/TestMain.hs | 49 ----- src-unittests/TestUtils.hs | 41 ---- 6 files changed, 86 insertions(+), 379 deletions(-) diff --git a/brittany.cabal b/brittany.cabal index 4e31764..83893e4 100644 --- a/brittany.cabal +++ b/brittany.cabal @@ -1,3 +1,5 @@ +cabal-version: 2.2 + name: brittany version: 0.13.1.2 synopsis: Haskell source code formatter @@ -7,7 +9,7 @@ description: If you are interested in the implementation, have a look at ; . The implementation is documented in more detail . -license: AGPL-3 +license: AGPL-3.0-only license-file: LICENSE author: Lennart Spitzner maintainer: Lennart Spitzner @@ -15,7 +17,6 @@ copyright: Copyright (C) 2016-2019 Lennart Spitzner Copyright (C) 2019 PRODA LTD category: Language build-type: Simple -cabal-version: 2.0 homepage: https://github.com/lspitzner/brittany/ bug-reports: https://github.com/lspitzner/brittany/issues extra-doc-files: @@ -39,9 +40,62 @@ flag brittany-test-perf default: False manual: True +common library + build-depends: + , aeson ^>= 2.0.1 + , base ^>= 4.15.0 + , butcher ^>= 1.3.3 + , bytestring ^>= 0.10.12 + , cmdargs ^>= 0.10.21 + , containers ^>= 0.6.4 + , czipwith ^>= 1.0.1 + , data-tree-print ^>= 0.1.0 + , deepseq ^>= 1.4.5 + , directory ^>= 1.3.6 + , extra ^>= 1.7.10 + , filepath ^>= 1.4.2 + , ghc ^>= 9.0.1 + , ghc-boot-th ^>= 9.0.1 + , ghc-exactprint ^>= 0.6.4 + , monad-memo ^>= 0.5.3 + , mtl ^>= 2.2.2 + , multistate ^>= 0.8.0 + , pretty ^>= 1.1.3 + , random ^>= 1.2.1 + , safe ^>= 0.3.19 + , semigroups ^>= 0.19.2 + , strict ^>= 0.4.0 + , syb ^>= 0.7.2 + , text ^>= 1.2.5 + , transformers ^>= 0.5.6 + , uniplate ^>= 1.6.13 + , yaml ^>= 0.11.7 + default-language: Haskell2010 + ghc-options: + -Weverything + -Wno-incomplete-uni-patterns + -Wno-missing-deriving-strategies + -Wno-missing-export-lists + -Wno-missing-import-lists + -Wno-missing-local-signatures + -Wno-missing-safe-haskell-mode + -Wno-monomorphism-restriction + -Wno-prepositive-qualified-module + -Wno-unsafe + +common executable + import: library + + build-depends: brittany + ghc-options: + -rtsopts + -threaded + -Wno-implicit-prelude + -Wno-unused-packages + library - default-language: - Haskell2010 + import: library + hs-source-dirs: src exposed-modules: @@ -77,226 +131,52 @@ library Language.Haskell.Brittany.Internal.Transformations.Par Language.Haskell.Brittany.Internal.Transformations.Columns Language.Haskell.Brittany.Internal.Transformations.Indent - ghc-options: - -Weverything - -Wno-incomplete-uni-patterns - -Wno-missing-deriving-strategies - -Wno-missing-export-lists - -Wno-missing-import-lists - -Wno-missing-local-signatures - -Wno-missing-safe-haskell-mode - -Wno-monomorphism-restriction - -Wno-prepositive-qualified-module - -Wno-unsafe - build-depends: - base ^>= 4.15.0 - , aeson ^>= 2.0.1 - , butcher ^>= 1.3.3 - , bytestring ^>= 0.10.12 - , cmdargs ^>= 0.10.21 - , containers ^>= 0.6.4 - , czipwith ^>= 1.0.1 - , data-tree-print ^>= 0.1.0 - , deepseq ^>= 1.4.5 - , directory ^>= 1.3.6 - , extra ^>= 1.7.10 - , filepath ^>= 1.4.2 - , ghc ^>= 9.0.1 - , ghc-boot-th ^>= 9.0.1 - , ghc-exactprint ^>= 0.6.4 - , monad-memo ^>= 0.5.3 - , mtl ^>= 2.2.2 - , multistate ^>= 0.8.0 - , pretty ^>= 1.1.3 - , random ^>= 1.2.1 - , safe ^>= 0.3.19 - , semigroups ^>= 0.19.2 - , strict ^>= 0.4.0 - , syb ^>= 0.7.2 - , text ^>= 1.2.5 - , transformers ^>= 0.5.6 - , uniplate ^>= 1.6.13 - , yaml ^>= 0.11.7 executable brittany + import: executable + if flag(brittany-dev-lib) buildable: False - else - buildable: True + main-is: Main.hs hs-source-dirs: src-brittany - build-depends: - base - , brittany - default-language: Haskell2010 - ghc-options: - -Wall - -fno-spec-constr - -fno-warn-unused-imports - -fno-warn-redundant-constraints - -rtsopts - -with-rtsopts "-M2G" test-suite unittests + import: executable + if flag(brittany-dev-lib) || !flag(brittany-test-perf) buildable: False - else - buildable: True + type: exitcode-stdio-1.0 - default-language: Haskell2010 build-depends: - brittany - , base - , ghc - , ghc-paths - , ghc-exactprint - , transformers - , containers - , mtl - , text - , multistate - , syb - , data-tree-print - , pretty - , bytestring - , directory - , butcher - , yaml - , aeson - , extra - , uniplate - , strict - , monad-memo - , unsafe - , safe - , deepseq - , semigroups - , cmdargs - , czipwith - , ghc-boot-th - , hspec >=2.4.1 && <2.9 + , hspec ^>= 2.8.3 main-is: TestMain.hs other-modules: TestUtils AsymptoticPerfTests hs-source-dirs: src-unittests - default-extensions: - CPP - - NoImplicitPrelude - - GADTs - - FlexibleContexts - FlexibleInstances - ScopedTypeVariables - MonadComprehensions - LambdaCase - MultiWayIf - KindSignatures - ghc-options: - -Wall - -fno-warn-unused-imports - -rtsopts - -with-rtsopts "-M2G" - -threaded - -- ^ threaded is not necessary at all, but our CI trusts on being able - -- to pass -N1, which is not possible without threaded :-/ - -- (plus -no-threaded is not a thing, afaict) test-suite littests + import: executable + if flag(brittany-dev-lib) buildable: False - else - buildable: True + type: exitcode-stdio-1.0 default-language: Haskell2010 build-depends: - brittany - , base - , ghc - , ghc-paths - , ghc-exactprint - , transformers - , containers - , mtl - , text - , multistate - , syb - , data-tree-print - , pretty - , bytestring - , directory - , butcher - , yaml - , aeson - , extra - , uniplate - , strict - , monad-memo - , unsafe - , safe - , deepseq - , semigroups - , cmdargs - , czipwith - , ghc-boot-th - , hspec >=2.4.1 && <2.9 - , filepath - , parsec >=3.1.11 && <3.2 + , hspec ^>= 2.8.3 + , parsec ^>= 3.1.14 main-is: Main.hs - other-modules: hs-source-dirs: src-literatetests - default-extensions: - CPP - - NoImplicitPrelude - - GADTs - - FlexibleContexts - FlexibleInstances - ScopedTypeVariables - MonadComprehensions - LambdaCase - MultiWayIf - KindSignatures - ghc-options: - -Wall - -fno-warn-unused-imports - -threaded - -rtsopts - -with-rtsopts "-M2G -N" test-suite libinterfacetests + import: executable + if flag(brittany-dev-lib) buildable: False - else - buildable: True + type: exitcode-stdio-1.0 - default-language: Haskell2010 build-depends: - brittany - , base - , text - , transformers - , hspec >=2.4.1 && <2.9 + , hspec ^>= 2.8.3 main-is: Main.hs - other-modules: hs-source-dirs: src-libinterfacetests - default-extensions: - FlexibleContexts - FlexibleInstances - ScopedTypeVariables - MonadComprehensions - LambdaCase - MultiWayIf - KindSignatures - ghc-options: - -Wall - -fno-warn-unused-imports - -rtsopts - -with-rtsopts "-M2G" - -threaded - -- ^ threaded is not necessary at all, but our CI trusts on being able - -- to pass -N1, which is not possible without threaded :-/ - -- (plus -no-threaded is not a thing, afaict) diff --git a/src-libinterfacetests/Main.hs b/src-libinterfacetests/Main.hs index 973755e..f663174 100644 --- a/src-libinterfacetests/Main.hs +++ b/src-libinterfacetests/Main.hs @@ -5,7 +5,6 @@ module Main where import Test.Hspec import Language.Haskell.Brittany import qualified Data.Text as Text -import qualified System.Exit as Exit import Control.Monad.IO.Class diff --git a/src-literatetests/Main.hs b/src-literatetests/Main.hs index 2cb903c..399c08e 100644 --- a/src-literatetests/Main.hs +++ b/src-literatetests/Main.hs @@ -1,3 +1,7 @@ +{-# LANGUAGE CPP #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE MonadComprehensions #-} + module Main ( main ) @@ -6,61 +10,18 @@ where import Language.Haskell.Brittany.Internal.Prelude -import Language.Haskell.Brittany.Internal.PreludeUtils -import qualified Control.Monad.Reader.Class as Reader.Class -import qualified Control.Monad.RWS.Class as RWS.Class -import qualified Control.Monad.State.Class as State.Class -import qualified Control.Monad.Trans.Except as ExceptT -import qualified Control.Monad.Trans.MultiRWS.Lazy as MultiRWSL -import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS -import qualified Control.Monad.Trans.State as State -import qualified Control.Monad.Trans.State.Lazy as StateL -import qualified Control.Monad.Trans.State.Strict as StateS -import qualified Control.Monad.Writer.Class as Writer.Class -import qualified Data.Bool as Bool -import qualified Data.ByteString -import qualified Data.ByteString as ByteString -import qualified Data.ByteString.Char8 -import qualified Data.ByteString.Lazy as ByteStringL -import qualified Data.Coerce -import qualified Data.Data -import qualified Data.Either -import qualified Data.Foldable -import qualified Data.Foldable as Foldable -import qualified Data.IntMap.Lazy as IntMapL -import qualified Data.IntMap.Strict as IntMapS import qualified Data.List.Extra -import qualified Data.Map as Map import qualified Data.Maybe import qualified Data.Semigroup as Semigroup -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import qualified Data.Strict.Maybe as Strict import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text.Encoding -import qualified Data.Text.IO as Text.IO -import qualified Data.Text.Lazy as TextL -import qualified Data.Text.Lazy.Encoding as TextL.Encoding -import qualified Data.Text.Lazy.IO as TextL.IO import qualified GHC.OldList as List -import qualified Safe as Safe import qualified System.Directory -import qualified System.IO -import qualified Text.PrettyPrint -import qualified Text.PrettyPrint.Annotated -import qualified Text.PrettyPrint.Annotated.HughesPJ -import qualified Text.PrettyPrint.Annotated.HughesPJClass import Test.Hspec -import Test.Hspec.Runner ( hspecWith - , defaultConfig - , configConcurrentJobs - ) import qualified Text.Parsec as Parsec import Text.Parsec.Text ( Parser ) -import Data.Char ( isSpace ) import Data.List ( groupBy ) import Language.Haskell.Brittany.Internal diff --git a/src-unittests/AsymptoticPerfTests.hs b/src-unittests/AsymptoticPerfTests.hs index 886c3e7..6abbf90 100644 --- a/src-unittests/AsymptoticPerfTests.hs +++ b/src-unittests/AsymptoticPerfTests.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE ScopedTypeVariables #-} + module AsymptoticPerfTests ( asymptoticPerfTest ) @@ -5,71 +7,26 @@ where -import Language.Haskell.Brittany.Internal.Prelude import Language.Haskell.Brittany.Internal.PreludeUtils -import qualified Control.Monad.Reader.Class as Reader.Class -import qualified Control.Monad.RWS.Class as RWS.Class -import qualified Control.Monad.State.Class as State.Class -import qualified Control.Monad.Trans.Except as ExceptT -import qualified Control.Monad.Trans.MultiRWS.Lazy as MultiRWSL -import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS -import qualified Control.Monad.Trans.State as State -import qualified Control.Monad.Trans.State.Lazy as StateL -import qualified Control.Monad.Trans.State.Strict as StateS -import qualified Control.Monad.Writer.Class as Writer.Class -import qualified Data.Bool as Bool -import qualified Data.ByteString -import qualified Data.ByteString as ByteString -import qualified Data.ByteString.Char8 -import qualified Data.ByteString.Lazy as ByteStringL -import qualified Data.Coerce -import qualified Data.Data -import qualified Data.Either -import qualified Data.Foldable -import qualified Data.Foldable as Foldable -import qualified Data.IntMap.Lazy as IntMapL -import qualified Data.IntMap.Strict as IntMapS -import qualified Data.List.Extra -import qualified Data.Map as Map -import qualified Data.Maybe -import qualified Data.Semigroup as Semigroup -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import qualified Data.Strict.Maybe as Strict import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text.Encoding -import qualified Data.Text.IO as Text.IO -import qualified Data.Text.Lazy as TextL -import qualified Data.Text.Lazy.Encoding as TextL.Encoding -import qualified Data.Text.Lazy.IO as TextL.IO -import qualified GHC.OldList as List -import qualified Safe as Safe -import qualified System.Directory -import qualified System.IO -import qualified Text.PrettyPrint -import qualified Text.PrettyPrint.Annotated -import qualified Text.PrettyPrint.Annotated.HughesPJ -import qualified Text.PrettyPrint.Annotated.HughesPJClass import Test.Hspec -import Language.Haskell.Brittany.Internal - import TestUtils asymptoticPerfTest :: Spec asymptoticPerfTest = do - it "1000 do statements" + it "10 do statements" $ roundTripEqualWithTimeout 1500000 $ (Text.pack "func = do\n") - <> Text.replicate 1000 (Text.pack " statement\n") - it "1000 do nestings" + <> Text.replicate 10 (Text.pack " statement\n") + it "10 do nestings" $ roundTripEqualWithTimeout 4000000 $ (Text.pack "func = ") <> mconcat - ( [0 .. 999] + ( [1 .. 10] <&> \(i :: Int) -> (Text.replicate (2 * i) (Text.pack " ") <> Text.pack "do\n") ) @@ -77,7 +34,7 @@ asymptoticPerfTest = do <> Text.pack "return\n" <> Text.replicate 2002 (Text.pack " ") <> Text.pack "()" - it "1000 AppOps" + it "10 AppOps" $ roundTripEqualWithTimeout 1000000 $ (Text.pack "func = expr") - <> Text.replicate 200 (Text.pack "\n . expr") --TODO + <> Text.replicate 10 (Text.pack "\n . expr") --TODO diff --git a/src-unittests/TestMain.hs b/src-unittests/TestMain.hs index 7fa2fa4..81ec429 100644 --- a/src-unittests/TestMain.hs +++ b/src-unittests/TestMain.hs @@ -1,57 +1,8 @@ module Main where - -import Language.Haskell.Brittany.Internal.Prelude -import Language.Haskell.Brittany.Internal.PreludeUtils -import qualified Control.Monad.Reader.Class as Reader.Class -import qualified Control.Monad.RWS.Class as RWS.Class -import qualified Control.Monad.State.Class as State.Class -import qualified Control.Monad.Trans.Except as ExceptT -import qualified Control.Monad.Trans.MultiRWS.Lazy as MultiRWSL -import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS -import qualified Control.Monad.Trans.State as State -import qualified Control.Monad.Trans.State.Lazy as StateL -import qualified Control.Monad.Trans.State.Strict as StateS -import qualified Control.Monad.Writer.Class as Writer.Class -import qualified Data.Bool as Bool -import qualified Data.ByteString -import qualified Data.ByteString as ByteString -import qualified Data.ByteString.Char8 -import qualified Data.ByteString.Lazy as ByteStringL -import qualified Data.Coerce -import qualified Data.Data -import qualified Data.Either -import qualified Data.Foldable -import qualified Data.Foldable as Foldable -import qualified Data.IntMap.Lazy as IntMapL -import qualified Data.IntMap.Strict as IntMapS -import qualified Data.List.Extra -import qualified Data.Map as Map -import qualified Data.Maybe -import qualified Data.Semigroup as Semigroup -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import qualified Data.Strict.Maybe as Strict -import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text.Encoding -import qualified Data.Text.IO as Text.IO -import qualified Data.Text.Lazy as TextL -import qualified Data.Text.Lazy.Encoding as TextL.Encoding -import qualified Data.Text.Lazy.IO as TextL.IO -import qualified GHC.OldList as List -import qualified Safe as Safe -import qualified System.Directory -import qualified System.IO -import qualified Text.PrettyPrint -import qualified Text.PrettyPrint.Annotated -import qualified Text.PrettyPrint.Annotated.HughesPJ -import qualified Text.PrettyPrint.Annotated.HughesPJClass - import Test.Hspec -import Language.Haskell.Brittany.Internal - import AsymptoticPerfTests diff --git a/src-unittests/TestUtils.hs b/src-unittests/TestUtils.hs index 94c2375..942f4aa 100644 --- a/src-unittests/TestUtils.hs +++ b/src-unittests/TestUtils.hs @@ -3,50 +3,9 @@ module TestUtils where import Language.Haskell.Brittany.Internal.Prelude -import Language.Haskell.Brittany.Internal.PreludeUtils -import qualified Control.Monad.Reader.Class as Reader.Class -import qualified Control.Monad.RWS.Class as RWS.Class -import qualified Control.Monad.State.Class as State.Class -import qualified Control.Monad.Trans.Except as ExceptT -import qualified Control.Monad.Trans.MultiRWS.Lazy as MultiRWSL -import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS -import qualified Control.Monad.Trans.State as State -import qualified Control.Monad.Trans.State.Lazy as StateL -import qualified Control.Monad.Trans.State.Strict as StateS -import qualified Control.Monad.Writer.Class as Writer.Class -import qualified Data.Bool as Bool -import qualified Data.ByteString -import qualified Data.ByteString as ByteString -import qualified Data.ByteString.Char8 -import qualified Data.ByteString.Lazy as ByteStringL -import qualified Data.Coerce -import qualified Data.Data -import qualified Data.Either -import qualified Data.Foldable -import qualified Data.Foldable as Foldable -import qualified Data.IntMap.Lazy as IntMapL -import qualified Data.IntMap.Strict as IntMapS -import qualified Data.List.Extra -import qualified Data.Map as Map import qualified Data.Maybe import qualified Data.Semigroup as Semigroup -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import qualified Data.Strict.Maybe as Strict import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text.Encoding -import qualified Data.Text.IO as Text.IO -import qualified Data.Text.Lazy as TextL -import qualified Data.Text.Lazy.Encoding as TextL.Encoding -import qualified Data.Text.Lazy.IO as TextL.IO -import qualified GHC.OldList as List -import qualified Safe as Safe -import qualified System.Directory -import qualified System.IO -import qualified Text.PrettyPrint -import qualified Text.PrettyPrint.Annotated -import qualified Text.PrettyPrint.Annotated.HughesPJ -import qualified Text.PrettyPrint.Annotated.HughesPJClass import Test.Hspec