prefix-dev/setup-pixi

Custom shell wrapper doesn't work with powershell

melund opened this issue ยท 14 comments

When using the custom shell wrapper with powershell I get an error from github actions:

I am doing something like this on Windows runner.

- run:
    pytest 
  shell: pixi run pwsh -e test {0}

image

The pixi run command sends all info after the initial command to the task.
I think something like this could work:

- name: Run test with powershell
  run: pytest
  shell: pixi run -e test pwsh -File {0}

Note the run pwsh -e test -> run -e test pwsh

This should be updated in the readme (and we should add a test for it as well)

maybe also add a test for cmd.exe

@ruben-arts

I think something like this could work:
shell: pixi run -e test pwsh -File {0}

It doesn't seem to work.

image

It is odd, because GitHub Actions Docs does seem to indicate that is possible. Maybe they do something special if they detect the first argument is "pwsh" or "powershell".

Yeah I experienced the same, that's why we added this to the documentation and tests in #79

- run: |
    python --version | Select-String "3.11"
  shell: pixi run pwsh -Command {0}

You can use the environment with:

- run: pytest
  shell: pixi run -e test pwsh -Command {0}

Powershell can't run scripts without the right extension. So GitHub Actions does something special when they detect the first command is "pwsh". This seem to work for me though:

shell: pwsh -command "pixi run -e test pwsh '{0}'"

But now as nice to look at :(

Ahh. Ok. I hadn't tried your way

shell: pixi run -e test pwsh -Command {0}

I will give that a try.

Powershell can't run scripts without the right extension. So GitHub Actions does something special when they detect the first command is "pwsh". This seem to work for me though:

shell: pwsh -command "pixi run -e test pwsh '{0}'"

But now as nice to look at :(

Was this a reaction to my latest comment or did we comment at the same time?

They cross path I think :)

@ruben-arts, I am not sure your suggestion (pixi run -e test pwsh -Command {0}) works.

It doesn't produce any errors, but it doesn't run my code either. Or maybe it only runs the first line of run section. I have not tested that.

If I use my workaround:

shell: pwsh -command "pixi run -e test pwsh '{0}'"

Then the code actually runs.

See these screenshots from my pipeline:

With your suggestion nothing runs:

image

With: pwsh -command "pixi run -e test pwsh '{0}'" it runs:

image

@pavelzw did you guys see my last post? Easy to overlook in closed issue ๐Ÿ˜… I dont mind creating a new issue if you think it is needed.

Yeah, I didn't try to reproduce this yet... Is the issue maybe that it's multiple files?

Does this work for your use case?

- run: |
python --version | Select-String "3.11"
shell: pixi run pwsh -Command {0}

Does this work for your use case?

@melund did you get around to try this?

@pavelzw: Yes that doesn't work:

https://github.com/melund/test-pixi/actions/runs/11090308043/job/30812485079#step:5:5

Only: shell: pwsh -command "pixi run -e test pwsh '{0}'" seems to work