SteveGilham / altcover

Cross-platform coverage gathering and processing tool set for dotnet/.Net Framework and Mono
MIT License
501 stars 18 forks source link

AltCover.exe does not generate .xml and AltCover.Recorder.g.dll files #60

Closed AlexSala07 closed 5 years ago

AlexSala07 commented 5 years ago

I tried running the following code: AltCover.exe -i=</PATH/> -o=</PATH/> --xmlReport=</PATH/> --opencover --single --linecover --test.cs

Then the files get instrumented and written to the "-o path". After that i get the following message: Coverage Report: </Path/>.xml

Next, i get more messages. E.g.: </PATH/>.dll <= </PATH/>, Version=xxx, Culture=xxx, PublicKeyToken=xxx

The problem is that, while printing these messages the program stops or crashes and I can't type anything more in the CMD. The only thing I can do is cancel the program using "CTRL + C" which gets me back to the CMD.

If I then, try to run the following command: altcover runner --collect -r=</PATH/> It will throw me this warning: "Recorder Assembly AltCover.Recorder.g.dll not found in the nominated directory."

To sum up, the program runs, instruments and writes some of the files, then crashes/stops. Following that, no report.xml or AltCover.Recorder.g.dll are created which don't allow altcover runner to run correctly.

AlexSala07 commented 5 years ago

I forgot to mention that if i run AltCover.exe on an empty folder it works and will generate the necessary files.

SteveGilham commented 5 years ago

The behaviour you describe suggests to me that whatever your trailing argument actually is, it's launching a process which isn't terminating.

The --test.cs, as it is, looks suspicious. If it is exactly that string, then a usage error should be thrown. If it is -- test.cs, with a space after the --, then an attempt will be made to execute the rest of the line following the -- as a command in a separate process.

As there is no --save argument in the initial call, but there is some form of -- executable given, any coverage collection would be written directly to the XML report on process termination; so a runner --collect would have nothing to do in the best case. However, as you've flattened all the paths to </path/> it's not at all obvious in the report if you are even pointing the runner at the correct directory.