I've got a test result log to parse that is basically just a bunch of key=value
pairs on sequential lines separated by a //
at the end.
Everything seems great except the output file. In normal Notepad, it looks fine. In Notepad++, it has a bunch of extra lines. When viewing symbols from the output file, original file lines end in CR
and wholly blank new lines are injected as CRLF
.
It's input file looks the same in both, and all lines end in CRLF
. I would like its output file to look the same in both.
What do I need to fix for that desired behavior? I tried adding a gsub to strip away lines that were blank after the first replace, contents = contents.gsub(/^\n/m, "")
but that doesn't seem to change the output.
Input File, test_results.log:
// Test_App=moduleTwo_test.exe Test_Function=genericTestOne() Test_Iterations=5 Test_Health=100 % Test_Result=PASSED Test_Path=C:\rb-tests\moduleTwo_test.exe // Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe // Test_App=subModuleOne_test.exe Test_Function=genericTestOne() Test_Iterations=5 Test_Health=100 % Test_Result=PASSED Test_Path=C:\rb-tests\subModuleOne_test.exe //
Ruby Script, find_fails.rb
this_dir = File.dirname(ARGV[0])
this_file = File.open(ARGV[0], "rb")
contents = this_file.read
contents = contents.gsub(/\/\/[ ](?>(?:(?!\/\/).))*?PASSED.*?(?=\/\/)/m, "")
contents = contents.gsub(/^\n/m, "")
File.write(this_dir + "\\fails.log", contents)
Output File, fails.log, as seen in Notepad++
// Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe //
Desired Output file/format for fails.log, and what it already looks like in normal Notepad:
// Test_App=subModuleOne_test.exe Test_Function=iAlwaysFail() Test_Iterations=5 Test_Failures=5 Test_Health=0 % Test_Result=FAILED Retest_Iterations=20 Retest_Failures=20 Retest_Health=0 % Retest_Result=FAILED Test_Path=C:\rb-tests\subModuleOne_test.exe //