0

我有一个要解析的测试结果日志,它基本上只是key=value顺序行上的一堆对,最后用 a 分隔//

除了输出文件,一切看起来都很棒。在普通记事本中,它看起来不错。在 Notepad++ 中,它有一堆额外的行。从输出文件查看符号时,原始文件行CRCRLF.

它的输入文件在两者中看起来都一样,并且所有行都以CRLF. 我希望它的输出文件在两者中看起来都一样。

对于所需的行为,我需要解决什么问题?我尝试添加一个 gsub 以去除第一次替换后空白的行,contents = contents.gsub(/^\n/m, "")但这似乎并没有改变输出。

输入文件,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 脚本,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)

输出文件,fails.log,如 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 

//

failed.log 的所需输出文件/格式,以及它在普通记事本中的样子:

// 
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 
//
4

0 回答 0