Search code examples
continuous-integrationcode-coverageelm

How to successfully run elm-coverage?


I try to configure elm-coverage to be used in CI.

Installation was successful, installed using yarn as "elm-coverage": "0.2.0"

Our most recent command for running tests is

./node_modules/.bin/elm-test --compiler ./node_modules/.bin/elm app/frontend/elm/tests/

app/frontend/ is there, because elm app is within repository of rails app.

When I try to use coverage

elm-coverage --elm-test ./node_modules/.bin/elm-test -- --compiler ./node_modules/.bin/elm app/frontend/elm/tests/

in (ruby app's) root, it returns

MacBook-Pro-6:enectiva admin$ elm-coverage --elm-test ./node_modules/.bin/elm-test -- --compiler ./node_modules/.bin/elm app/frontend/elm/tests/
/Users/admin/git.enectiva.cz/enectiva/node_modules/elm-coverage/node_modules/find/index.js:33
      throw err;
      ^

Error:  does not exist.
    at Object.notExist (/Users/admin/git.enectiva.cz/enectiva/node_modules/elm-coverage/node_modules/find/index.js:41:12)
    at traverseAsync (/Users/admin/git.enectiva.cz/enectiva/node_modules/elm-coverage/node_modules/find/index.js:163:28)
    at /Users/admin/git.enectiva.cz/enectiva/node_modules/elm-coverage/node_modules/find/index.js:282:7
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)

Otherwise, I tried

MacBook-Pro-6:enectiva admin$ elm-coverage app/frontend/elm/tests/ --elm-test ./node_modules/.bin/elm-test
[12:57:01.68] Instrumenting sources...
[12:57:01.89] Something went wrong: 

I searched through issues in Github repository, it does not seem to be reported bug, so there must be something I missed.

Does anyone know, how to actually use it?


Solution

  • OK, I've had a bit more of a play with elm-coverage, as I've been able to get it to run on an Elm project of mine.

    Firstly elm-coverage has a --verbose flag which adds extra logging, so try running with that.

    I've had best results if I cd to the folder containing my elm.json file and run elm-coverage from there. In your case, this would look something like the following:

    cd app/frontend/elm && elm-coverage [source folder] --elm-test ../../../node_modules/.bin/elm-test
    

    [source folder] is the name of the folder containing your source files (not the tests). For me, [source folder] is src, but because that's the default I can omit it.