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
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
||||
[![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,
|
||||
but the idea is to be a Haskell port of
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 #-}
|
||||
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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue