5 Jul
2025
5 Jul
'25
8:49 a.m.
yes the tests are likely run in pipeline without a full pledged console you can repro locally by running cmd (or the tests) like this: ```
./wine cmd /c "mode con" >& foobar < /dev/null; more foobar; rm -f foobar Device CON not found
this can be worked around (for gitlab pipeline) with something like this to run `MODE` command from within test_builtins.cmd:
`start cmd /c "mode con > foobar"`
and then inspect foobar's content (if needed)
./wine start cmd /c "mode con > foobar" >& /dev/null < /dev/null; more foobar; rm -f foobar Status for device CON: ....
(the details of convolution, if of any interest)
* start will always create a real console, so CON access will be what's expected
* but `MODE` is an external program under windows, and a cmd.exe' builtin in Wine, so using cmd /c will trigger either implementation
* but start doesn't force it's child to use its std io handles (so cmd is run with std io bound to the new console), so `MODE`'s output will not be seen from calling environment; we need to redirect mode output to a file within cmd's shell to fetch it's content from outter environment
* start will block until child finished execution, and will forward the exit code of `MODE` (either flavour), so checking `ERRORLEVEL` after the `start` command will get the exit code of `MODE` command
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7491#note_108897