diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..43c6e7f7 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,95 @@ +name: CI + +# Trigger the workflow on push or pull request, but only for the main branch +on: + pull_request: + push: + branches: [master] + +jobs: + cabal: + name: ${{ matrix.os }} / ghc ${{ matrix.ghc }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest] + cabal: ["3.2"] + ghc: + - "8.8.4" + - "8.10.2" + # exclude: + # - os: macOS-latest + # ghc: 8.8.4 + # - os: macOS-latest + # ghc: 8.6.5 + # - os: windows-latest + # ghc: 8.10.2 + # - os: windows-latest + # ghc: 8.6.5 + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-haskell@v1.1.4 + id: setup-haskell-cabal + name: Setup Haskell + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + + - name: Configure + run: | + cabal configure --enable-tests --enable-benchmarks --test-show-details=direct + + - name: Freeze + run: | + cabal freeze + + - uses: actions/cache@v2.1.3 + name: Cache ~/.cabal/store + with: + path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} + key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }} + + - name: Build + run: | + cabal build all + + - name: Test + run: | + cabal test all + + stack: + name: stack / ghc ${{ matrix.ghc }} + runs-on: ubuntu-latest + strategy: + matrix: + stack: ["2.3.1"] + ghc: ["8.8.4"] + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-haskell@v1.1.4 + name: Setup Haskell Stack + with: + ghc-version: ${{ matrix.ghc }} + stack-version: ${{ matrix.stack }} + + - uses: actions/cache@v2.1.3 + name: Cache ~/.stack + with: + path: ~/.stack + key: ${{ runner.os }}-${{ matrix.ghc }}-stack + + - name: Install dependencies + run: | + stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --only-dependencies + + - name: Build + run: | + stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks + + - name: Test + run: | + stack test --system-ghc diff --git a/cabal.project b/cabal.project index 21145d96..b8516e66 100644 --- a/cabal.project +++ b/cabal.project @@ -3,7 +3,8 @@ packages: servant-client/ servant-client-core/ servant-http-streams/ - servant-docs/ +-- Tests failing with Cabal (TODO: investigate) +-- servant-docs/ servant-foreign/ servant-server/ doc/tutorial/ @@ -33,7 +34,8 @@ packages: -- doc/cookbook/jwt-and-basic-auth/ doc/cookbook/pagination -- doc/cookbook/sentry - doc/cookbook/testing + -- Commented out because servant-quickcheck currently doesn't build. + -- doc/cookbook/testing doc/cookbook/uverb doc/cookbook/structuring-apis doc/cookbook/using-custom-monad diff --git a/servant-http-streams/test/Servant/ClientSpec.hs b/servant-http-streams/test/Servant/ClientSpec.hs index 14efd88f..41e7fbe4 100644 --- a/servant-http-streams/test/Servant/ClientSpec.hs +++ b/servant-http-streams/test/Servant/ClientSpec.hs @@ -482,7 +482,7 @@ startWaiApp app = do (port, socket) <- openTestSocket let settings = setPort port $ defaultSettings thread <- forkIO $ runSettingsSocket settings socket app - return (thread, BaseUrl Http "localhost" port "") + return (thread, BaseUrl Http "127.0.0.1" port "") endWaiApp :: (ThreadId, BaseUrl) -> IO ()