60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule(/#{PROJECT_TEST_FILE_PREFIX}#{'.+'+TEST_RUNNER_FILE_SUFFIX}#{'\\'+EXTENSION_SOURCE}$/ => [
							 | 
						||
| 
								 | 
							
								    proc do |task_name|
							 | 
						||
| 
								 | 
							
								      @ceedling[:file_finder].find_test_input_for_runner_file(task_name)
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  ]) do |runner|
							 | 
						||
| 
								 | 
							
								  @ceedling[:generator].generate_test_runner(TEST_SYM, runner.source, runner.name)
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule(/#{PROJECT_TEST_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
							 | 
						||
| 
								 | 
							
								    proc do |task_name|
							 | 
						||
| 
								 | 
							
								      @ceedling[:file_finder].find_compilation_input_file(task_name)
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  ]) do |object|
							 | 
						||
| 
								 | 
							
								  @ceedling[:generator].generate_object_file(
							 | 
						||
| 
								 | 
							
								    TOOLS_TEST_COMPILER,
							 | 
						||
| 
								 | 
							
								    TEST_SYM,
							 | 
						||
| 
								 | 
							
								    object.source,
							 | 
						||
| 
								 | 
							
								    object.name,
							 | 
						||
| 
								 | 
							
								    @ceedling[:file_path_utils].form_test_build_list_filepath( object.name ) )
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule(/#{PROJECT_TEST_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_EXECUTABLE}$/) do |bin_file|
							 | 
						||
| 
								 | 
							
								  @ceedling[:generator].generate_executable_file(
							 | 
						||
| 
								 | 
							
								    TOOLS_TEST_LINKER,
							 | 
						||
| 
								 | 
							
								    TEST_SYM,
							 | 
						||
| 
								 | 
							
								    bin_file.prerequisites,
							 | 
						||
| 
								 | 
							
								    bin_file.name,
							 | 
						||
| 
								 | 
							
								    @ceedling[:file_path_utils].form_test_build_map_filepath( bin_file.name ) )
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								rule(/#{PROJECT_TEST_RESULTS_PATH}\/#{'.+\\'+EXTENSION_TESTPASS}$/ => [
							 | 
						||
| 
								 | 
							
								    proc do |task_name|
							 | 
						||
| 
								 | 
							
								      @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  ]) do |test_result|
							 | 
						||
| 
								 | 
							
								  @ceedling[:generator].generate_test_results(TOOLS_TEST_FIXTURE, TEST_SYM, test_result.source, test_result.name)
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace TEST_SYM do
							 | 
						||
| 
								 | 
							
								  # use rules to increase efficiency for large projects (instead of iterating through all sources and creating defined tasks)
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  rule(/^#{TEST_TASK_ROOT}\S+$/ => [ # test task names by regex
							 | 
						||
| 
								 | 
							
								      proc do |task_name|
							 | 
						||
| 
								 | 
							
								        test = task_name.sub(/#{TEST_TASK_ROOT}/, '')
							 | 
						||
| 
								 | 
							
								        test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" if not (test.start_with?(PROJECT_TEST_FILE_PREFIX))
							 | 
						||
| 
								 | 
							
								        @ceedling[:file_finder].find_test_from_file_path(test)
							 | 
						||
| 
								 | 
							
								      end
							 | 
						||
| 
								 | 
							
								  ]) do |test|
							 | 
						||
| 
								 | 
							
								    @ceedling[:rake_wrapper][:directories].invoke
							 | 
						||
| 
								 | 
							
								    @ceedling[:test_invoker].setup_and_invoke([test.source])
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 |