setup-pixi icon indicating copy to clipboard operation
setup-pixi copied to clipboard

Custom shell wrapper doesn't work with powershell

Open melund opened this issue 1 year ago • 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

melund avatar Feb 15 '24 13:02 melund

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

ruben-arts avatar Feb 15 '24 13:02 ruben-arts

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

pavelzw avatar Feb 15 '24 15:02 pavelzw

maybe also add a test for cmd.exe

pavelzw avatar Feb 15 '24 15:02 pavelzw

@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".

melund avatar Feb 17 '24 15:02 melund

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}

ruben-arts avatar Feb 17 '24 15:02 ruben-arts

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 :(

melund avatar Feb 17 '24 15:02 melund

Ahh. Ok. I hadn't tried your way

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

I will give that a try.

melund avatar Feb 17 '24 15:02 melund

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?

ruben-arts avatar Feb 17 '24 16:02 ruben-arts

They cross path I think :)

melund avatar Feb 17 '24 16:02 melund

@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

melund avatar Feb 19 '24 09:02 melund

@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.

melund avatar Feb 21 '24 13:02 melund

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? https://github.com/prefix-dev/setup-pixi/blob/20681dbcbf237e7ff110345f31abf0e2afc0d758/.github/workflows/test.yml#L336-L338

pavelzw avatar Feb 21 '24 13:02 pavelzw

Does this work for your use case?

@melund did you get around to try this?

pavelzw avatar Sep 28 '24 09:09 pavelzw

@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

melund avatar Sep 29 '24 06:09 melund