41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								require 'constants'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class GeneratorHelper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  constructor :streaminator
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def test_results_error_handler(executable, shell_result)
							 | 
						||
| 
								 | 
							
								    notice = ''
							 | 
						||
| 
								 | 
							
								    error  = false
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (shell_result[:output].nil? or shell_result[:output].strip.empty?)
							 | 
						||
| 
								 | 
							
								      error = true
							 | 
						||
| 
								 | 
							
								      # mirror style of generic tool_executor failure output
							 | 
						||
| 
								 | 
							
								      notice  = "\n" +
							 | 
						||
| 
								 | 
							
								                "ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
							 | 
						||
| 
								 | 
							
								                "> Produced no output to $stdout.\n"
							 | 
						||
| 
								 | 
							
								    elsif ((shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN).nil?)
							 | 
						||
| 
								 | 
							
								      error = true
							 | 
						||
| 
								 | 
							
								      # mirror style of generic tool_executor failure output
							 | 
						||
| 
								 | 
							
								      notice  = "\n" +
							 | 
						||
| 
								 | 
							
								                "ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
							 | 
						||
| 
								 | 
							
								                "> Produced no final test result counts in $stdout:\n" +
							 | 
						||
| 
								 | 
							
								                "#{shell_result[:output].strip}\n"
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (error)
							 | 
						||
| 
								 | 
							
								      # since we told the tool executor to ignore the exit code, handle it explicitly here
							 | 
						||
| 
								 | 
							
								      notice += "> And exited with status: [#{shell_result[:exit_code]}] (count of failed tests).\n" if (shell_result[:exit_code] != nil)
							 | 
						||
| 
								 | 
							
								      notice += "> And then likely crashed.\n"                                                       if (shell_result[:exit_code] == nil)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      notice += "> This is often a symptom of a bad memory access in source or test code.\n\n"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      @streaminator.stderr_puts(notice, Verbosity::COMPLAIN)
							 | 
						||
| 
								 | 
							
								      raise      
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								end
							 |