diff --git a/BUILD.bazel b/BUILD.bazel index 1f0ff81..eb2ad63 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -6,6 +6,12 @@ project("github-tools") haskell_library( name = "github-tools", srcs = glob(["src/**/*.*hs"]), + compiler_flags = [ + "-j4", + "-Wall", + "-Werror", + "-Wno-unused-imports", + ], prebuilt_dependencies = [ "base", "bytestring", @@ -35,7 +41,20 @@ haskell_library( haskell_test( name = "test", + timeout = "long", srcs = glob(["test/**/*.*hs"]), + args = [ + "-j4", + "+RTS", + "-N4", + ], + compiler_flags = [ + "-threaded", + "-rtsopts", + "-Wall", + "-Werror", + "-Wno-unused-imports", + ], main_file = "test/testsuite.hs", prebuilt_dependencies = ["base"], src_strip_prefix = "test", diff --git a/appveyor.yml b/appveyor.yml index c4cbc9b..5d6fdc5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ cache: - '%APPDATA%\ghc' install: -- choco install ghc +- choco install ghc --version 8.2.2 - refreshenv build_script: diff --git a/src/GitHub/Types/Base/Commit.hs b/src/GitHub/Types/Base/Commit.hs index 4af5d97..f001982 100644 --- a/src/GitHub/Types/Base/Commit.hs +++ b/src/GitHub/Types/Base/Commit.hs @@ -18,7 +18,7 @@ import GitHub.Types.Base.User data Commit = Commit { commitSha :: Text , commitUser :: User - , commitRepo :: Repository + , commitRepo :: Maybe Repository , commitLabel :: Text , commitRef :: Text } deriving (Eq, Show, Read) diff --git a/src/GitHub/Types/Base/DeploymentPayload.hs b/src/GitHub/Types/Base/DeploymentPayload.hs index 7381b94..e169e4b 100644 --- a/src/GitHub/Types/Base/DeploymentPayload.hs +++ b/src/GitHub/Types/Base/DeploymentPayload.hs @@ -4,7 +4,7 @@ module GitHub.Types.Base.DeploymentPayload where import Control.Applicative ((<$>)) import Data.Aeson (FromJSON (..), ToJSON (..), object) -import Data.Aeson.Types (Value (..), (.:), (.=)) +import Data.Aeson.Types (Value (..), (.:?), (.=)) import Data.Text (Text) import Data.Text.Arbitrary () import Test.QuickCheck.Arbitrary (Arbitrary (..)) @@ -13,12 +13,12 @@ import Test.QuickCheck.Arbitrary (Arbitrary (..)) -- DeploymentPayload data DeploymentPayload = DeploymentPayload - { deploymentPayloadWebUrl :: Text + { deploymentPayloadWebUrl :: Maybe Text } deriving (Eq, Show, Read) instance FromJSON DeploymentPayload where parseJSON (Object x) = DeploymentPayload - <$> x .: "web_url" + <$> x .:? "web_url" parseJSON _ = fail "DeploymentPayload" diff --git a/src/GitHub/Types/Base/PullRequest.hs b/src/GitHub/Types/Base/PullRequest.hs index b61db2c..bc045e0 100644 --- a/src/GitHub/Types/Base/PullRequest.hs +++ b/src/GitHub/Types/Base/PullRequest.hs @@ -11,6 +11,7 @@ import Test.QuickCheck.Arbitrary (Arbitrary (..)) import GitHub.Types.Base.Commit import GitHub.Types.Base.DateTime +import GitHub.Types.Base.Label import GitHub.Types.Base.Milestone import GitHub.Types.Base.PullRequestLinks import GitHub.Types.Base.Team @@ -39,6 +40,7 @@ data PullRequest = PullRequest , pullRequestHtmlUrl :: Text , pullRequestId :: Int , pullRequestIssueUrl :: Text + , pullRequestLabels :: [Label] , pullRequestLinks :: PullRequestLinks , pullRequestLocked :: Bool , pullRequestMaintainerCanModify :: Bool @@ -87,6 +89,7 @@ instance FromJSON PullRequest where <*> x .: "html_url" <*> x .: "id" <*> x .: "issue_url" + <*> x .: "labels" <*> x .: "_links" <*> x .: "locked" <*> x .: "maintainer_can_modify" @@ -136,6 +139,7 @@ instance ToJSON PullRequest where , "html_url" .= pullRequestHtmlUrl , "id" .= pullRequestId , "issue_url" .= pullRequestIssueUrl + , "labels" .= pullRequestLabels , "_links" .= pullRequestLinks , "locked" .= pullRequestLocked , "maintainer_can_modify" .= pullRequestMaintainerCanModify @@ -208,3 +212,4 @@ instance Arbitrary PullRequest where <*> arbitrary <*> arbitrary <*> arbitrary + <*> arbitrary diff --git a/test/GitHub/Types/BaseSpec.hs b/test/GitHub/Types/BaseSpec.hs index a493e53..a18ab87 100644 --- a/test/GitHub/Types/BaseSpec.hs +++ b/test/GitHub/Types/BaseSpec.hs @@ -2,9 +2,7 @@ {-# LANGUAGE Trustworthy #-} module GitHub.Types.BaseSpec where -import Control.Applicative ((<$>)) -import Data.Aeson (FromJSON, ToJSON, decode, encode) -import GHC.Generics (Generic) +import Data.Aeson (decode, encode) import Test.Hspec import Test.QuickCheck @@ -13,7 +11,7 @@ import GitHub.Types.Base spec :: Spec spec = - describe "identity JSON conversion" $ do + describe "identity JSON conversion" $ parallel $ do it "Author" $ property $ \(x :: Author ) -> decode (encode x) `shouldBe` Just x it "Branch" $ property $ \(x :: Branch ) -> decode (encode x) `shouldBe` Just x it "Change" $ property $ \(x :: Change ) -> decode (encode x) `shouldBe` Just x diff --git a/test/GitHub/Types/EventsSpec.hs b/test/GitHub/Types/EventsSpec.hs index b2b4fb7..ebaf188 100644 --- a/test/GitHub/Types/EventsSpec.hs +++ b/test/GitHub/Types/EventsSpec.hs @@ -11,7 +11,7 @@ import GitHub.Types.Events spec :: Spec spec = - describe "identity JSON conversion" $ do + describe "identity JSON conversion" $ parallel $ do it "CommitCommentEvent" $ property $ \(x :: CommitCommentEvent ) -> decode (encode x) `shouldBe` Just x it "CreateEvent" $ property $ \(x :: CreateEvent ) -> decode (encode x) `shouldBe` Just x it "DeleteEvent" $ property $ \(x :: DeleteEvent ) -> decode (encode x) `shouldBe` Just x