rules_tests.rake 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. rule(/#{PROJECT_TEST_FILE_PREFIX}#{'.+'+TEST_RUNNER_FILE_SUFFIX}#{'\\'+EXTENSION_SOURCE}$/ => [
  2. proc do |task_name|
  3. @ceedling[:file_finder].find_test_input_for_runner_file(task_name)
  4. end
  5. ]) do |runner|
  6. @ceedling[:generator].generate_test_runner(TEST_SYM, runner.source, runner.name)
  7. end
  8. rule(/#{PROJECT_TEST_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
  9. proc do |task_name|
  10. @ceedling[:file_finder].find_compilation_input_file(task_name)
  11. end
  12. ]) do |object|
  13. @ceedling[:generator].generate_object_file(
  14. TOOLS_TEST_COMPILER,
  15. TEST_SYM,
  16. object.source,
  17. object.name,
  18. @ceedling[:file_path_utils].form_test_build_list_filepath( object.name ) )
  19. end
  20. rule(/#{PROJECT_TEST_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_EXECUTABLE}$/) do |bin_file|
  21. @ceedling[:generator].generate_executable_file(
  22. TOOLS_TEST_LINKER,
  23. TEST_SYM,
  24. bin_file.prerequisites,
  25. bin_file.name,
  26. @ceedling[:file_path_utils].form_test_build_map_filepath( bin_file.name ) )
  27. end
  28. rule(/#{PROJECT_TEST_RESULTS_PATH}\/#{'.+\\'+EXTENSION_TESTPASS}$/ => [
  29. proc do |task_name|
  30. @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
  31. end
  32. ]) do |test_result|
  33. @ceedling[:generator].generate_test_results(TOOLS_TEST_FIXTURE, TEST_SYM, test_result.source, test_result.name)
  34. end
  35. namespace TEST_SYM do
  36. # use rules to increase efficiency for large projects (instead of iterating through all sources and creating defined tasks)
  37. rule(/^#{TEST_TASK_ROOT}\S+$/ => [ # test task names by regex
  38. proc do |task_name|
  39. test = task_name.sub(/#{TEST_TASK_ROOT}/, '')
  40. test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" if not (test.start_with?(PROJECT_TEST_FILE_PREFIX))
  41. @ceedling[:file_finder].find_test_from_file_path(test)
  42. end
  43. ]) do |test|
  44. @ceedling[:rake_wrapper][:directories].invoke
  45. @ceedling[:test_invoker].setup_and_invoke([test.source])
  46. end
  47. end