diff options
| -rw-r--r-- | .travis.yml | 79 | ||||
| -rw-r--r-- | CHANGELOG.md | 10 | ||||
| -rw-r--r-- | Data/GraphQL/Parser.hs | 7 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | graphql.cabal | 6 | ||||
| -rw-r--r-- | stack-7.10.yaml | 5 | ||||
| -rw-r--r-- | stack-7.8.yaml | 5 | ||||
| l---------[-rw-r--r--] | stack.yaml | 6 | ||||
| -rw-r--r-- | tests/golden.hs | 12 |
9 files changed, 118 insertions, 13 deletions
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..75c728a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,79 @@ +# This file has been generated -- see https://github.com/hvr/multi-ghc-travis +language: c +sudo: false + +cache: + directories: + - $HOME/.cabsnap + - $HOME/.cabal/packages + +before_cache: + - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log + - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar + +matrix: + include: + - env: CABALVER=1.18 GHCVER=7.8.4 + compiler: ": #GHC 7.8.4" + addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}} + - env: CABALVER=1.22 GHCVER=7.10.2 + compiler: ": #GHC 7.10.2" + addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2], sources: [hvr-ghc]}} + +before_install: + - unset CC + - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH + +install: + - cabal --version + - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" + - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]; + then + zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > + $HOME/.cabal/packages/hackage.haskell.org/00-index.tar; + fi + - travis_retry cabal update -v + - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config + - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt + - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt + +# check whether current requested install-plan matches cached package-db snapshot + - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt; + then + echo "cabal build-cache HIT"; + rm -rfv .ghc; + cp -a $HOME/.cabsnap/ghc $HOME/.ghc; + cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/; + else + echo "cabal build-cache MISS"; + rm -rf $HOME/.cabsnap; + mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin; + cabal install --only-dependencies --enable-tests --enable-benchmarks; + fi + +# snapshot package-db on cache miss + - if [ ! -d $HOME/.cabsnap ]; + then + echo "snapshotting package-db to build-cache"; + mkdir $HOME/.cabsnap; + cp -a $HOME/.ghc $HOME/.cabsnap/ghc; + cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/; + fi + +# Here starts the actual work to be performed for the package under test; +# any command which exits with a non-zero exit code causes the build to fail. +script: + - if [ -f configure.ac ]; then autoreconf -i; fi + - cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging + - cabal build # this builds all libraries and executables (including tests/benchmarks) + - cabal test + - cabal check + - cabal sdist # tests that a source-distribution can be generated + +# Check that the resulting source distribution can be built & installed. +# If there are no other `.tar.gz` files in `dist`, this can be even simpler: +# `cabal install --force-reinstalls dist/*-*.tar.gz` + - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && + (cd dist && cabal install --force-reinstalls "$SRC_TGZ") + +# EOF diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f8d712..673589e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log All notable changes to this project will be documented in this file. +## [0.2.1] - 2015-09-16 +### Fixed +- Include data files for golden tests in Cabal package. +- Support for ghc-7.8. + ## [0.2] - 2015-09-14 ### Added - Rudimentary parser for `GraphQL` which successfully parses the sample file @@ -10,6 +15,9 @@ All notable changes to this project will be documented in this file. - Many optional data types in `GraphQl` didn't need to be wrapped in a `Maybe`. - Some `newtype`s became type synonyms for easier parsing. -## [0.1] - 2015-09-12 +## 0.1 - 2015-09-12 ### Added - Data types for the GraphQL language. + +[0.2.1]: https://github.com/jdnavarro/graphql-haskell/compare/v0.2...v0.2.1 +[0.2]: https://github.com/jdnavarro/graphql-haskell/compare/v0.1...v0.2 diff --git a/Data/GraphQL/Parser.hs b/Data/GraphQL/Parser.hs index 66d913d..c999004 100644 --- a/Data/GraphQL/Parser.hs +++ b/Data/GraphQL/Parser.hs @@ -1,12 +1,17 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} module Data.GraphQL.Parser where import Prelude hiding (takeWhile) + +#if !MIN_VERSION_base(4,8,0) +import Control.Applicative ((<$>), (<*>), (*>), (<*), (<$), pure) +import Data.Monoid (Monoid, mempty) +#endif import Control.Applicative ((<|>), empty, many, optional) import Control.Monad (when) import Data.Char - import Data.Text (Text, pack) import Data.Attoparsec.Text ( Parser @@ -1,6 +1,7 @@ # Haskell GraphQL [](https://hackage.haskell.org/package/graphql) +[](https://travis-ci.org/jdnavarro/graphql-haskell) For now this only provides the data types to represent the GraphQL AST, but the idea is to be a Haskell port of diff --git a/graphql.cabal b/graphql.cabal index 2f83aeb..077064e 100644 --- a/graphql.cabal +++ b/graphql.cabal @@ -1,5 +1,5 @@ name: graphql -version: 0.2 +version: 0.2.1 synopsis: Haskell GraphQL implementation description: This package provides a rudimentary parser for the @@ -14,8 +14,10 @@ copyright: Copyright (C) 2015 J. Daniel Navarro category: Web build-type: Simple cabal-version: >=1.10 -tested-with: GHC == 7.10 +tested-with: GHC == 7.8.4, GHC == 7.10.2 extra-source-files: README.md CHANGELOG.md stack.yaml +data-files: tests/data/*.graphql + tests/data/*.graphql.golden library default-language: Haskell2010 diff --git a/stack-7.10.yaml b/stack-7.10.yaml new file mode 100644 index 0000000..bee0443 --- /dev/null +++ b/stack-7.10.yaml @@ -0,0 +1,5 @@ +flags: {} +packages: +- '.' +extra-deps: [] +resolver: lts-3.4 diff --git a/stack-7.8.yaml b/stack-7.8.yaml new file mode 100644 index 0000000..809bd2e --- /dev/null +++ b/stack-7.8.yaml @@ -0,0 +1,5 @@ +flags: {} +packages: +- '.' +extra-deps: [] +resolver: lts-2.22 diff --git a/stack.yaml b/stack.yaml index bee0443..177aa94 100644..120000 --- a/stack.yaml +++ b/stack.yaml @@ -1,5 +1 @@ -flags: {} -packages: -- '.' -extra-deps: [] -resolver: lts-3.4 +stack-7.10.yaml
\ No newline at end of file diff --git a/tests/golden.hs b/tests/golden.hs index e7ab70f..98413eb 100644 --- a/tests/golden.hs +++ b/tests/golden.hs @@ -1,6 +1,10 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Main where +#if !MIN_VERSION_base(4,8,0) +import Control.Applicative ((<$>), (<*>), pure) +#endif import Control.Monad ((>=>)) import Data.Attoparsec.Text (parseOnly) import Data.ByteString.Lazy.Char8 as B8 @@ -8,14 +12,14 @@ import qualified Data.Text.IO as TIO import Test.Tasty (defaultMain) import Test.Tasty.Golden (goldenVsString) +import Paths_graphql (getDataFileName) import Data.GraphQL.Parser (document) main :: IO () main = defaultMain - $ goldenVsString "kitchen-sink.graphql" - "./tests/data/kitchen-sink.graphql.golden" - (parse "./tests/data/kitchen-sink.graphql") + =<< goldenVsString "kitchen-sink.graphql" + <$> getDataFileName "tests/data/kitchen-sink.graphql.graphql.golden" + <*> (parse <$> getDataFileName "tests/data/kitchen-sink.graphql") where parse = fmap (parseOnly document) . TIO.readFile >=> pure . either B8.pack (flip B8.snoc '\n' . B8.pack . show) - |
