name: Haskell CI
on: [push]
-
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+
+ env:
+ hieref: cd0d1eb88334c359b8a220f2aebec703d66012ff
+
+ 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
+ - name: Install JS Language Server
+ run: npm install -g javascript-typescript-langserver
- name: Build
run: cabal build
- name: Test
run: |
- export PATH=$PATH:$HOME/.cabal/bin
+ echo $PATH
+ echo $(npm bin)
+ export PATH=$PATH:$(npm bin)
cabal test
-# 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
diag ^. severity `shouldBe` Just DsError
diag ^. source `shouldBe` Just "bios"
- describe "rename" $
- it "works" $ runSession "hie" fullCaps "test/data" $ do
- doc <- openDoc "Rename.hs" "haskell"
- rename doc (Position 1 0) "bar"
- documentContents doc >>= liftIO . shouldBe "main = bar\nbar = return 42\n"
+ describe "rename" $ do
+ it "works" $ pendingWith "HaRe not in hie-bios yet"
+ it "works on javascript" $
+ runSession "javascript-typescript-stdio" fullCaps "test/data/javascriptPass" $ do
+ doc <- openDoc "test.js" "javascript"
+ rename doc (Position 2 11) "bar"
+ documentContents doc >>= liftIO . (`shouldContain` "function bar()") . T.unpack
+
+ -- runSession "hie" fullCaps "test/data" $ do
+ -- doc <- openDoc "Rename.hs" "haskell"
+ -- rename doc (Position 1 0) "bar"
+ -- documentContents doc >>= liftIO . shouldBe "main = bar\nbar = return 42\n"
describe "getHover" $
it "works" $ runSession "hie" fullCaps "test/data/renamePass" $ do