8 Commits

Author SHA1 Message Date
Hennadii Stepanov
ed313971c0
Do not escape double quotes for command line arguments on Windows (#113)
* refactor: Remove unused `util::is_ready()` function

Commit ffd4c731a2c7c09f34e7b81a16e04bdf91fa973d introduced the
`util::is_ready()` function, which has never been used internally and is
not part of the public API.

This change removes the function.

* refactor: Guard `util::quote_argument()` with `#ifdef __USING_WINDOWS__`

The `util::quote_argument()` function is specific to Windows and is used
in code already guarded by `#ifdef __USING_WINDOWS__`.

* Do not escape double quotes for command line arguments on Windows

This change fixes the handling of double quotes and aligns the behavior
with Python's `Popen` class. For example:
```
>py -3
>>> import subprocess
>>> p = subprocess.Popen("cmd.exe /c dir \"C:\\Program Files\"", stdout=subprocess.PIPE, text=True)
>>> print(f"Captured stdout:\n{stdout}")
```

Currently, the same command line processed by the `quote_argument()`
function looks like `cmd.exe /c dir "\"C:\Program" "Files\""`, which is
broken.

With this change, it looks correct: `cmd.exe /c dir "C:\Program Files"`.

* Add `test_double_quotes` test

The new test ensures that no regressions are introduced in the future.
2025-04-24 21:54:41 +05:30
Hennadii Stepanov
4025693dec
Fix exception when CreateProcessW fails and add test for it (#98)
* Fix exception when `CreateProcessW` fails

This change makes the behavior on Windows consistent with the behavior
on Linux.

* test: Add `test_exception`
2024-01-25 12:01:40 +05:30
Hennadii Stepanov
40bcc2daa9
Fix redirection from StdError on Windows (#96)
* Fix redirection from StdError on Windows

* test: Add cross-platform test for error redirection
2023-12-03 18:10:57 +05:30
Jan Christoph Uhde
d9ed0d606f
chore: improve CMake files (#85) 2023-03-21 08:39:25 +05:30
IbrahimSaad
399616b408
link tests targets with thread library (#79) 2022-06-11 11:02:05 +05:30
xoviat
f6799fcc34 WIP: add windows compatibility (#32)
* windows: add util functions

* windows: add cmake files

* windows: add travis.yml

* windows: address compatibility
- set cxx standard
- conditionally exclude codecvt

* windows: improve test coverage

* windows: improve test coverage

* windows: consolidate tests

* windows: disable failing test

* windows: modify read_atmost_n to use file object

* windows: modify read_all to use file object

* windows: update read_all test to use new api

* windows: implement main subprocess logic

* windows: add macro names

* windows: setup comm channels

* windows: compatibility fixes
2019-05-09 22:02:58 +05:30
Arun Muralidharan
871577770a
Revert "WIP: Add windows compatibility (#30)" (#31)
This reverts commit 5d92f4849276aa313dc1ba56c1556f4cca27fc7f.
2019-05-02 12:24:40 +05:30
xoviat
5d92f48492 WIP: Add windows compatibility (#30)
* add package files

* add windows compat to subprocess.hpp

* add test modifications

* repair test_read_all
2019-05-02 12:02:17 +05:30