Skip to content

IO.Process.spawn on windows insert additional quotes, leading to errors for certain kinds of commands #8547

@Rob23oba

Description

@Rob23oba

Prerequisites

Please put an X between the brackets as you perform the following steps:

Description

IO.Process.spawn inserts additional unnecessary quotes, leading to problems trying to execute e.g. cmd.exe /c echo hi because the current quoting turns it into "cmd.exe" "/c" "echo" "hi", producing an error unknown command ""echo"". Avoiding unnecessary quoting should solve this issue.

Context

This came up while trying to write a test for #8534. The "solution" I used highlights another problem which is that the command string is not correctly quoted.

Steps to Reproduce

#eval return (← IO.Process.output { cmd := "cmd.exe", args := #["/c", "echo", "hi"] }).stderr

Expected behavior: The process should run successfully and produce no stderr. The output should be: "hi\r\n".

Actual behavior: The process produces an error message along the lines of unknown command ""echo"".

Versions

Lean 4.21.0-nightly-2025-05-30

Impact

Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P-mediumWe may work on this issue if we find the timebugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions