From 6b8346e5278f71fb813bb564dbb40907a37df6e7 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 2 Apr 2024 21:07:31 +0200 Subject: [PATCH] Update hlint to 3.8 --- .gitea/workflows/build.yml | 40 +++++++----------- tests/Language/GraphQL/AST/Arbitrary.hs | 55 +++++++++++++------------ 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 6851bbd..74e222c 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -7,46 +7,34 @@ on: jobs: audit: - runs-on: alpine + runs-on: haskell steps: - name: Set up environment - shell: ash {0} run: | - apk add --no-cache git bash curl build-base readline-dev openssl-dev zlib-dev libpq-dev gmp-dev - - name: Prepare system - run: | - curl --create-dirs --output-dir \ - ~/.ghcup/bin https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 -o ghcup - chmod +x ~/.ghcup/bin/ghcup - ~/.ghcup/bin/ghcup install ghc 9.4.8 - ~/.ghcup/bin/ghcup install cabal 3.6.2.0 + apt-get update -y + apt-get upgrade -y + apt-get install -y nodejs pkg-config liblzma-dev - uses: actions/checkout@v4 - name: Install dependencies run: | - ~/.ghcup/bin/ghcup run --ghc 9.4.8 --cabal 3.6.2.0 -- cabal update - ~/.ghcup/bin/ghcup run --ghc 9.4.8 --cabal 3.6.2.0 -- cabal install hlint --constraint="hlint ==3.6.1" - - run: ~/.cabal/bin/hlint -- src tests + cabal update + cabal install hlint "--constraint=hlint ==3.8" + - run: cabal exec hlint -- src tests test: - runs-on: alpine + runs-on: haskell steps: - name: Set up environment - shell: ash {0} run: | - apk add --no-cache git bash curl build-base readline-dev openssl-dev zlib-dev libpq-dev gmp-dev - - name: Prepare system - run: | - curl --create-dirs --output-dir \ - ~/.ghcup/bin https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 -o ghcup - chmod +x ~/.ghcup/bin/ghcup - ~/.ghcup/bin/ghcup install ghc 9.4.8 - ~/.ghcup/bin/ghcup install cabal 3.6.2.0 + apt-get update -y + apt-get upgrade -y + apt-get install -y nodejs pkg-config liblzma-dev - uses: actions/checkout@v4 - name: Install dependencies run: | - ~/.ghcup/bin/ghcup run --ghc 9.4.8 --cabal 3.6.2.0 -- cabal update - ~/.ghcup/bin/ghcup run --ghc 9.4.8 --cabal 3.6.2.0 -- cabal build graphql-test - - run: ~/.ghcup/bin/ghcup run --ghc 9.4.8 --cabal 3.6.2.0 -- cabal test --test-show-details=direct + cabal update + cabal build graphql-test + - run: cabal test --test-show-details=streaming doc: runs-on: alpine diff --git a/tests/Language/GraphQL/AST/Arbitrary.hs b/tests/Language/GraphQL/AST/Arbitrary.hs index 8d0544e..4f74bf3 100644 --- a/tests/Language/GraphQL/AST/Arbitrary.hs +++ b/tests/Language/GraphQL/AST/Arbitrary.hs @@ -7,6 +7,7 @@ import Test.QuickCheck.Arbitrary (Arbitrary (arbitrary)) import Test.QuickCheck (oneof, elements, listOf, resize, NonEmptyList (..)) import Test.QuickCheck.Gen (Gen (..)) import Data.Text (Text, pack) +import Data.Functor ((<&>)) newtype AnyPrintableChar = AnyPrintableChar { getAnyPrintableChar :: Char } deriving (Eq, Show) @@ -59,34 +60,36 @@ instance Arbitrary a => Arbitrary (AnyObjectField a) where location' <- getAnyLocation <$> arbitrary pure $ AnyObjectField $ Doc.ObjectField name' value' location' -newtype AnyValue = AnyValue { getAnyValue :: Doc.Value } deriving (Eq, Show) +newtype AnyValue = AnyValue { getAnyValue :: Doc.Value } + deriving (Eq, Show) -instance Arbitrary AnyValue where - arbitrary = AnyValue <$> oneof - [ variableGen - , Doc.Int <$> arbitrary - , Doc.Float <$> arbitrary - , Doc.String <$> (getAnyPrintableText <$> arbitrary) - , Doc.Boolean <$> arbitrary - , MkGen $ \_ _ -> Doc.Null - , Doc.Enum <$> (getAnyName <$> arbitrary) - , Doc.List <$> listGen - , Doc.Object <$> objectGen - ] - where - variableGen :: Gen Doc.Value - variableGen = Doc.Variable <$> (getAnyName <$> arbitrary) - listGen :: Gen [Doc.Node Doc.Value] - listGen = (resize 5 . listOf) nodeGen - nodeGen = do - node' <- getAnyNode <$> (arbitrary :: Gen (AnyNode AnyValue)) - pure (getAnyValue <$> node') - objectGen :: Gen [Doc.ObjectField Doc.Value] - objectGen = resize 1 $ do - list <- getNonEmpty <$> (arbitrary :: Gen (NonEmptyList (AnyObjectField AnyValue))) - pure $ map (fmap getAnyValue . getAnyObjectField) list +instance Arbitrary AnyValue + where + arbitrary = + let variableGen :: Gen Doc.Value + variableGen = Doc.Variable . getAnyName <$> arbitrary + listGen :: Gen [Doc.Node Doc.Value] + listGen = (resize 5 . listOf) nodeGen + nodeGen :: Gen (Doc.Node Doc.Value) + nodeGen = fmap getAnyNode arbitrary <&> fmap getAnyValue + objectGen :: Gen [Doc.ObjectField Doc.Value] + objectGen = resize 1 + $ fmap getNonEmpty arbitrary + <&> map (fmap getAnyValue . getAnyObjectField) + in AnyValue <$> oneof + [ variableGen + , Doc.Int <$> arbitrary + , Doc.Float <$> arbitrary + , Doc.String . getAnyPrintableText <$> arbitrary + , Doc.Boolean <$> arbitrary + , MkGen $ \_ _ -> Doc.Null + , Doc.Enum . getAnyName <$> arbitrary + , Doc.List <$> listGen + , Doc.Object <$> objectGen + ] -newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument } deriving (Eq, Show) +newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument } + deriving (Eq, Show) instance Arbitrary a => Arbitrary (AnyArgument a) where arbitrary = do