Compare commits
4 Commits
Author | SHA1 | Date |
---|---|---|
Danny Navarro | dac6721f02 | |
Danny Navarro | b3482172a6 | |
Danny Navarro | f88948e801 | |
Danny Navarro | ee0e0c3d1f |
|
@ -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
|
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -1,6 +1,11 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
All notable changes to this project will be documented in this file.
|
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
|
## [0.2] - 2015-09-14
|
||||||
### Added
|
### Added
|
||||||
- Rudimentary parser for `GraphQL` which successfully parses the sample file
|
- 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`.
|
- Many optional data types in `GraphQl` didn't need to be wrapped in a `Maybe`.
|
||||||
- Some `newtype`s became type synonyms for easier parsing.
|
- Some `newtype`s became type synonyms for easier parsing.
|
||||||
|
|
||||||
## [0.1] - 2015-09-12
|
## 0.1 - 2015-09-12
|
||||||
### Added
|
### Added
|
||||||
- Data types for the GraphQL language.
|
- 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
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
module Data.GraphQL.Parser where
|
module Data.GraphQL.Parser where
|
||||||
|
|
||||||
import Prelude hiding (takeWhile)
|
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.Applicative ((<|>), empty, many, optional)
|
||||||
import Control.Monad (when)
|
import Control.Monad (when)
|
||||||
import Data.Char
|
import Data.Char
|
||||||
|
|
||||||
import Data.Text (Text, pack)
|
import Data.Text (Text, pack)
|
||||||
import Data.Attoparsec.Text
|
import Data.Attoparsec.Text
|
||||||
( Parser
|
( Parser
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Haskell GraphQL
|
# Haskell GraphQL
|
||||||
|
|
||||||
[![Hackage Version](https://img.shields.io/hackage/v/graphql.svg)](https://hackage.haskell.org/package/graphql)
|
[![Hackage Version](https://img.shields.io/hackage/v/graphql.svg)](https://hackage.haskell.org/package/graphql)
|
||||||
|
[![Build Status](https://img.shields.io/travis/jdnavarro/graphql-haskell.svg)](https://travis-ci.org/jdnavarro/graphql-haskell)
|
||||||
|
|
||||||
For now this only provides the data types to represent the GraphQL AST,
|
For now this only provides the data types to represent the GraphQL AST,
|
||||||
but the idea is to be a Haskell port of
|
but the idea is to be a Haskell port of
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: graphql
|
name: graphql
|
||||||
version: 0.2
|
version: 0.2.1
|
||||||
synopsis: Haskell GraphQL implementation
|
synopsis: Haskell GraphQL implementation
|
||||||
description:
|
description:
|
||||||
This package provides a rudimentary parser for the
|
This package provides a rudimentary parser for the
|
||||||
|
@ -14,8 +14,10 @@ copyright: Copyright (C) 2015 J. Daniel Navarro
|
||||||
category: Web
|
category: Web
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
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
|
extra-source-files: README.md CHANGELOG.md stack.yaml
|
||||||
|
data-files: tests/data/*.graphql
|
||||||
|
tests/data/*.graphql.golden
|
||||||
|
|
||||||
library
|
library
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
flags: {}
|
||||||
|
packages:
|
||||||
|
- '.'
|
||||||
|
extra-deps: []
|
||||||
|
resolver: lts-3.4
|
|
@ -0,0 +1,5 @@
|
||||||
|
flags: {}
|
||||||
|
packages:
|
||||||
|
- '.'
|
||||||
|
extra-deps: []
|
||||||
|
resolver: lts-2.22
|
|
@ -1,5 +0,0 @@
|
||||||
flags: {}
|
|
||||||
packages:
|
|
||||||
- '.'
|
|
||||||
extra-deps: []
|
|
||||||
resolver: lts-3.4
|
|
|
@ -0,0 +1 @@
|
||||||
|
stack-7.10.yaml
|
|
@ -1,6 +1,10 @@
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
|
#if !MIN_VERSION_base(4,8,0)
|
||||||
|
import Control.Applicative ((<$>), (<*>), pure)
|
||||||
|
#endif
|
||||||
import Control.Monad ((>=>))
|
import Control.Monad ((>=>))
|
||||||
import Data.Attoparsec.Text (parseOnly)
|
import Data.Attoparsec.Text (parseOnly)
|
||||||
import Data.ByteString.Lazy.Char8 as B8
|
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 (defaultMain)
|
||||||
import Test.Tasty.Golden (goldenVsString)
|
import Test.Tasty.Golden (goldenVsString)
|
||||||
|
|
||||||
|
import Paths_graphql (getDataFileName)
|
||||||
import Data.GraphQL.Parser (document)
|
import Data.GraphQL.Parser (document)
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = defaultMain
|
main = defaultMain
|
||||||
$ goldenVsString "kitchen-sink.graphql"
|
=<< goldenVsString "kitchen-sink.graphql"
|
||||||
"./tests/data/kitchen-sink.graphql.golden"
|
<$> getDataFileName "tests/data/kitchen-sink.graphql.graphql.golden"
|
||||||
(parse "./tests/data/kitchen-sink.graphql")
|
<*> (parse <$> getDataFileName "tests/data/kitchen-sink.graphql")
|
||||||
where
|
where
|
||||||
parse = fmap (parseOnly document) . TIO.readFile
|
parse = fmap (parseOnly document) . TIO.readFile
|
||||||
>=> pure . either B8.pack (flip B8.snoc '\n' . B8.pack . show)
|
>=> pure . either B8.pack (flip B8.snoc '\n' . B8.pack . show)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue