Merge branch 'master' into github-actions
authorLuke Lau <luke_lau@icloud.com>
Mon, 25 Nov 2019 17:24:41 +0000 (17:24 +0000)
committerLuke Lau <luke_lau@icloud.com>
Mon, 25 Nov 2019 17:24:41 +0000 (17:24 +0000)
.github/workflows/haskell.yml
README.md
test/Test.hs
test/data/hie.yaml

index e4cdf76e2a374e073f0bf41cd65a654514df1c8f..7d90328b36500cabc19b5f5cbdec766f49534bde 100644 (file)
@@ -1,32 +1,61 @@
 name: Haskell CI
 
 on: [push]
-
 jobs:
   build:
    
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
+
+    env:
+      hieref: 52691a63087ceb585c8bdc2ea04b52df3b2eddf1
+
+    strategy:
+      matrix:
+        ghc: ['8.6.5']
+        os: [ubuntu-latest, macOS-latest]
 
     steps:
     - uses: actions/checkout@v1
-    - uses: actions/setup-haskell@v1
+    - uses: bubba/setup-haskell@macos-ghcup
       with:
-        ghc-version: '8.6.5'
+        ghc-version: ${{ matrix.ghc }}
         cabal-version: '3.0'
     - run: cabal update
-    - name: Install HIE
+
+    - name: Clone HIE
+      uses: actions/checkout@v1
+      with:
+        repository: mpickering/haskell-ide-engine
+        submodules: recursive
+        ref: ${{ env.hieref }}
+        path: haskell-ide-engine
+
+    - name: Cache Cabal
+      uses: actions/cache@v1
+      with:
+        path: ~/.cabal
+        key: ${{ runner.OS }}-${{ matrix.ghc }}-cabal-${{ hashFiles('../**/*.cabal') }}
+        restore-keys: |
+          ${{ runner.OS }}-${{ matrix.ghc }}-cabal
+
+    - name: Build HIE
       run: |
-        pushd $HOME
-        git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
-        cd haskell-ide-engine
+        # if [ -e $HOME/.cabal/bin/hie ]; then
+        #     echo "hie is already built"
+        #     exit 0
+        # fi
+        pushd ../haskell-ide-engine
         cabal install hie
         cabal install hoogle
-        export PATH=$PATH:$HOME/.cabal/bin
         hoogle generate
         popd
+        cabal v1-install Cabal --constraint "Cabal == 3.0.0.0"
+    - name: Install JS Language Server
+      run: npm install javascript-typescript-langserver
     - name: Build
       run: cabal build
-    - name: Test
-      run: |
-        export PATH=$PATH:$HOME/.cabal/bin
-        cabal test
+    # - name: Test
+    #   run: |
+    #     echo $PATH
+    #     export PATH=$PATH:$(npm bin) 
+    #     cabal run lsp-test:test:tests
index ce452fe715d8858a995bf5a19230a394e8700492..9f0251b3f841dbc46acb7c4fa2d5211338b20239 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lsp-test [![Build Status](https://travis-ci.com/bubba/lsp-test.svg?branch=master)](https://travis-ci.com/bubba/lsp-test) [![Hackage](https://img.shields.io/hackage/v/lsp-test.svg)](https://hackage.haskell.org/package/lsp-test-0.1.0.0)
+# lsp-test [![Actions Status](https://github.com/bubba/lsp-test/workflows/Haskell%20CI/badge.svg)](https://github.com/bubba/lsp-test/actions) [![Hackage](https://img.shields.io/hackage/v/lsp-test.svg)](https://hackage.haskell.org/package/lsp-test-0.1.0.0)
 lsp-test is a functional testing framework for Language Server Protocol servers.
 
 ```haskell
index 342d889f464d73ce9435c56148bc428c5a7844ae..22f8e21996df80c4b9e9a81b95d07edbab5e72d3 100644 (file)
@@ -16,7 +16,7 @@ import           Control.Monad
 import           Control.Lens hiding (List)
 import           GHC.Generics
 import           Language.Haskell.LSP.Messages
-import           Language.Haskell.LSP.Test
+import           Language.Haskell.LSP.Test hiding (runSession)
 import           Language.Haskell.LSP.Test.Replay
 import           Language.Haskell.LSP.Types
 import           Language.Haskell.LSP.Types.Lens as LSP hiding
@@ -27,6 +27,8 @@ import           System.Timeout
 {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
 {-# ANN module ("HLint: ignore Unnecessary hiding" :: String) #-}
 
+runSession = runSessionWithConfig (defaultConfig { logStdErr = True })
+
 main = hspec $ do
   describe "Session" $ do
     it "fails a test" $
@@ -44,7 +46,7 @@ main = hspec $ do
 
     describe "withTimeout" $ do
       it "times out" $
-        let sesh = runSession "hie" fullCaps "test/data/renamePass" $ do
+        let sesh = runSession "hie -d --bios-verbose" fullCaps "test/data/renamePass" $ do
                     openDoc "Desktop/simple.hs" "haskell"
                     -- won't receive a request - will timeout
                     -- incoming logging requests shouldn't increase the
Simple merge