Try new setup-haskell
[lsp-test.git] / .github / workflows / haskell.yml
index 32c54b90c649ce802d73806751cd3a0c55d68e61..77048ed38d0d523c3f9284f692b3336baec8e85e 100644 (file)
@@ -1,26 +1,71 @@
 name: Haskell CI
 
-on: [push]
-
+on: [push, pull_request]
 jobs:
   build:
    
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
+
+    env:
+      hieref: d9d21fb0675280e20e837dbeb5715dab65e9c6be
+
+    strategy:
+      fail-fast: false
+      matrix:
+        ghc: ['8.8.3', '8.6.5', '8.4.4']
+        os: [ubuntu-latest, macOS-latest, windows-latest]
+        exclude:
+          - os: macOS-latest
+            ghc: '8.4.4' # fails due to ghc panic
 
     steps:
     - uses: actions/checkout@v1
-    - name: Install dependencies
-      run: cabal install --only-dependencies --enable-tests
-    - name: Install HIE
+    - uses: actions/setup-haskell@v1.1
+      with:
+        ghc-version: ${{ matrix.ghc }}
+        cabal-version: '3.0'
+    - run: cabal update
+
+    - name: Clone HIE
+      uses: actions/checkout@v1
+      with:
+        repository: haskell/haskell-ide-engine
+        submodules: recursive
+        ref: ${{ env.hieref }}
+        path: haskell-ide-engine
+
+    - name: Cache Cabal
+      uses: actions/cache@v1.1.0
+      with:
+        path: ~/.cabal
+        key: ${{ runner.OS }}-${{ matrix.ghc }}-cabal-${{ env.hieref }}
+        restore-keys: |
+          ${{ runner.OS }}-${{ matrix.ghc }}-cabal
+
+    - name: Cache Hoogle
+      uses: actions/cache@v1.1.0
+      with:
+        path: ~/.hoogle
+        key: ${{ runner.OS }}-${{ matrix.ghc }}-hoogle-${{ env.hieref }}
+
+    - name: Build HIE
       run: |
-        pushd $HOME
-        git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
-        cd haskell-ide-engine
-        cabal v2-install hie
-        cabal v2-install hoogle
-        hoogle generate
+        pushd ../haskell-ide-engine
+        cabal install hie
+        cabal install hoogle
         popd
+    - name: Generate hoogle database
+      run: |
+        if [ -d $HOME/.hoogle ]; then
+           echo "hoogle database already built"
+           exit 0
+        fi
+        hoogle generate
+    - name: Install JS Language Server
+      run: npm install javascript-typescript-langserver
     - name: Build
-      run: cabal v2-build
-    - name: Run tests
-      run: cabal v2-test
+      run: cabal build
+    - name: Test
+      run: |
+        export PATH=$PATH:$(npm bin) 
+        cabal test