preprocessinator.rb 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class Preprocessinator
  2. attr_reader :preprocess_file_proc
  3. constructor :preprocessinator_helper, :preprocessinator_includes_handler, :preprocessinator_file_handler, :task_invoker, :file_path_utils, :yaml_wrapper
  4. def setup
  5. # fashion ourselves callbacks @preprocessinator_helper can use
  6. @preprocess_includes_proc = Proc.new { |filepath| self.preprocess_shallow_includes(filepath) }
  7. @preprocess_file_proc = Proc.new { |filepath| self.preprocess_file(filepath) }
  8. end
  9. def preprocess_test_and_invoke_test_mocks(test)
  10. @preprocessinator_helper.preprocess_includes(test, @preprocess_includes_proc)
  11. mocks_list = @preprocessinator_helper.assemble_mocks_list(test)
  12. @preprocessinator_helper.preprocess_mockable_headers(mocks_list, @preprocess_file_proc)
  13. @task_invoker.invoke_test_mocks(mocks_list)
  14. @preprocessinator_helper.preprocess_test_file(test, @preprocess_file_proc)
  15. return mocks_list
  16. end
  17. def preprocess_shallow_includes(filepath)
  18. dependencies_rule = @preprocessinator_includes_handler.form_shallow_dependencies_rule(filepath)
  19. includes = @preprocessinator_includes_handler.extract_shallow_includes(dependencies_rule)
  20. @preprocessinator_includes_handler.write_shallow_includes_list(
  21. @file_path_utils.form_preprocessed_includes_list_filepath(filepath), includes)
  22. end
  23. def preprocess_file(filepath)
  24. @preprocessinator_includes_handler.invoke_shallow_includes_list(filepath)
  25. @preprocessinator_file_handler.preprocess_file( filepath, @yaml_wrapper.load(@file_path_utils.form_preprocessed_includes_list_filepath(filepath)) )
  26. end
  27. end