name: Haskell CI
on: [push]
-
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+
+ env:
+ hieref: 41b9cabcff790da4425ed7fab7cfb618e79bfd04
+
+ 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
+ echo $PATH
+ export PATH=$PATH:$(npm bin)
+ cabal run lsp-test:test:tests
-# 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
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
{-# 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" $
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