Search code examples
visual-studio-codeelixirvscode-extensionselixir-mixex-unit

Elixir: VS Code ExUnit cannot find Mix


I cannot load or run my tests, from within VS Code.

I'm a new user to Elixir, and to VS Code. I'm running Lubuntu 21.10 (Impish). I've downloaded Erlang/OTP 25 (.deb), and Elixir 1.14 (precompiled binary in /usr/share/elixir), and can get anything I need running in a Bash terminal. Again, in a standard QTerminal window, erl, iex, mix, elixir, etc. all work fine.

In VS Code, however, I get some errors. I feel stupid, but I'm coming from Sublime Text, so please forgive me.

In the left pane of VS Code, ExUnit shows an error (red):

Test Explorer error

Clicking on this error gives me this, on the bottom right pane. The command line options, passed to mix test, seem to be the default configuration:

Output window: mix: not found

This result is bizarre to me, because I can open the integrated terminal, execute /bin/sh, and then run the exact mix test line that's displayed:

enter image description here

/usr/share/elixir/bin has been added to my PATH variable, in ~/.bashrc, ~/.profile, and /etc/environment.

However, I am further confused by all tests being excluded, and wonder if there's some connection to the core issue:

enter image description here

Note that I can run my tests just fine, using different command line options. I've tried adding tags, but that didn't fix the problem.

I tried Google'ing this, and played around with my settings. Here is what I have configured in the "User" settings.json, and I made sure nothing overrides this in "Workspace" settings:

enter image description here

Changing the useNativeTesting setting doesn't solve the problem.

On another (?) note, I get a "failed to run elixir" upon VS Code startup:

enter image description here

Again, I have no problem running commands from a Linux terminal, or from a terminal within VS Code.

Plot twist: If I remove the precompiled Elixir 1.14, and downgrade to an older version, via apt, the problem goes away. But Lubuntu 21.10 doesn't offer Elixir 1.14, and I'm really into using the new dbg() feature.

But for now, I cannot load or run my tests, from within VS Code, apparently because Mix cannot be found.


Solution

  • Thanks to Daniel Imms, from the VS Code team, for answering my question on Twitter:

    "Try moving where ever you init mix and elixir (.bashrc?) into your .bash_profile and then logging out and in again or restarting. I'm guessing it's in your bashrc which doesn't run in non-interactive sessions like in tasks."