redirecting the unittests error output

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jan 15 04:29:01 PST 2015


On 1/15/2015 4:32 AM, ref2401 wrote:
> Unfortunately i'm new to using shells.
>
> I use standard windows cmd. Here is my script:
>
> dmd main.d -debug -unittest -wi
>
> if %errorLevel% equ 0 (
>      start main.exe
> ) else (
>      echo --- Building failed! ---
>      pause
> )
>
> I wrote "start main.exe 2> errorFile" but it doesn't work. errorFile is
> empty.
>

Open up a command prompt and execute dmd with a nonexistent file name.

dmd foo.d 2> err.txt

You will find that dmd prints an error to err.txt, specifically that it 
can't find foo.d. (You can find more info about stdio handles and the 
command line at [1]).

Now execute it like this:

start dmd foo.d 2> err.txt

And you will find an empty err.txt. This is because you are redirecting 
the output of stderr from the *start* program, and not from dmd (you can 
read more about the start command at [2]). I'm not aware of anyway to 
redirect the output of a command or program executed by start.


More information about the Digitalmars-d-learn mailing list