** (Mix) The task "coveralls" could not be found

I’m trying to install and run excoveralls in an umbrella app. Installation and compilation work just fine – I see the excoveralls folder inside dep and "0.16.0" inside the mix.lock. mix.exs includes:

{:excoveralls, "~> 0.16.0", only: [:dev], runtime: false},

However, when I try to run mix coveralls, I get

** (Mix) The task "coveralls" could not be found

Curiously, there is NOT a folder created inside of _build… which would explain why the mix task could not be found. But why didn’t this compile?

This is an umbrella app… the dependency was listed in the root mix.exs with the following modifier to the mix.exs:

test_coverage: [
        tool: ExCoveralls
      preferred_cli_env: [
        coveralls: :test,
        "coveralls.detail": :test

And I followed the documentation’s advice for umbrellas and added

test_coverage: [
        tool: ExCoveralls

to the other mix.exs files.

But still no dice.

The only thing that is unusual about this repository is that up till now, the built-in Erlang :cover library was being tapped to do coverage reports. We’d do this:

mix test --cover

So the only guess I have is that it’s somehow interfering with ExCoveralls, but I can’t pinpoint it. I have tried deleting the _build and deps directories, but the result is the same.

Anyone have ideas? Thanks in advance!

What is the command you are using exactly that is failing? (I assume it’s mix coveralls?)

Additionally, what does your entry in your mix.exs def deps function look like for this dependency?

Original message updated…

In an umbrella app, you’ve got (at least) three mix files so that it was jumps out to me in terms of mix not working the way you were expecting.

I believe you are only adding the :excoveralls dependency in :dev environments,

but you also want it available in the :test environment that mix test uses by default (and you are using in :preferred_cli_env). Try:

{:excoveralls, "~> 0.16.0", only: [:dev, :test], runtime: false},

1 Like

oiy, I think you’re right. :man_facepalming:

I ended up trying this again in a fresh branch and the problem was gone. Thank you for input!

1 Like