dependinator.rb 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. class Dependinator
  2. constructor :configurator, :project_config_manager, :test_includes_extractor, :file_path_utils, :rake_wrapper, :file_wrapper
  3. def touch_force_rebuild_files
  4. @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath )
  5. @file_wrapper.touch( @configurator.project_release_force_rebuild_filepath ) if (@configurator.project_release_build)
  6. end
  7. def load_release_object_deep_dependencies(dependencies_list)
  8. dependencies_list.each { |dependencies_file| @rake_wrapper.load_dependencies( dependencies_file ) }
  9. end
  10. def enhance_release_file_dependencies(files)
  11. files.each do |filepath|
  12. @rake_wrapper[filepath].enhance( [@configurator.project_release_force_rebuild_filepath] ) if (@project_config_manager.release_config_changed)
  13. @rake_wrapper[filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  14. end
  15. end
  16. def load_test_object_deep_dependencies(files_list)
  17. dependencies_list = @file_path_utils.form_test_dependencies_filelist(files_list)
  18. dependencies_list.each { |dependencies_file| @rake_wrapper.load_dependencies(dependencies_file) }
  19. end
  20. def enhance_runner_dependencies(runner_filepath)
  21. @rake_wrapper[runner_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  22. @rake_wrapper[runner_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  23. end
  24. def enhance_shallow_include_lists_dependencies(include_lists)
  25. include_lists.each do |include_list_filepath|
  26. @rake_wrapper[include_list_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  27. @rake_wrapper[include_list_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  28. end
  29. end
  30. def enhance_preprocesed_file_dependencies(files)
  31. files.each do |filepath|
  32. @rake_wrapper[filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  33. @rake_wrapper[filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  34. end
  35. end
  36. def enhance_mock_dependencies(mocks_list)
  37. # if input configuration or ceedling changes, make sure these guys get rebuilt
  38. mocks_list.each do |mock_filepath|
  39. @rake_wrapper[mock_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  40. @rake_wrapper[mock_filepath].enhance( [@configurator.cmock_unity_helper] ) if (@configurator.cmock_unity_helper)
  41. @rake_wrapper[mock_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  42. @rake_wrapper[mock_filepath].enhance( [@configurator.cmock_build_info_filepath] )
  43. end
  44. end
  45. def enhance_dependencies_dependencies(dependencies)
  46. dependencies.each do |dependencies_filepath|
  47. @rake_wrapper[dependencies_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  48. @rake_wrapper[dependencies_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  49. end
  50. end
  51. def enhance_test_build_object_dependencies(objects)
  52. objects.each do |object_filepath|
  53. @rake_wrapper[object_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  54. @rake_wrapper[object_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  55. end
  56. end
  57. def enhance_results_dependencies(result_filepath)
  58. @rake_wrapper[result_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
  59. @rake_wrapper[result_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
  60. end
  61. def setup_test_executable_dependencies(test, objects)
  62. @rake_wrapper.create_file_task( @file_path_utils.form_test_executable_filepath(test), objects)
  63. end
  64. end