ceedling 0.28.2 → 0.28.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/ceedling +3 -0
- data/assets/ceedling.cmd +1 -0
- data/assets/default_gitignore +5 -0
- data/assets/project_with_guts.yml +1 -0
- data/assets/project_with_guts_gcov.yml +3 -0
- data/assets/test_example_file_verbose.c +12 -0
- data/bin/ceedling +30 -6
- data/docs/CeedlingPacket.md +135 -23
- data/docs/CeedlingPacket.odt +0 -0
- data/examples/blinky/rakefile.rb +2 -1
- data/lib/ceedling/configurator.rb +7 -5
- data/lib/ceedling/configurator_builder.rb +10 -7
- data/lib/ceedling/configurator_plugins.rb +29 -24
- data/lib/ceedling/configurator_setup.rb +0 -1
- data/lib/ceedling/defaults.rb +7 -2
- data/lib/ceedling/dependinator.rb +10 -2
- data/lib/ceedling/file_finder.rb +57 -49
- data/lib/ceedling/file_path_utils.rb +12 -4
- data/lib/ceedling/file_wrapper.rb +4 -0
- data/lib/ceedling/generator.rb +4 -3
- data/lib/ceedling/generator_test_results.rb +15 -13
- data/lib/ceedling/plugin_manager.rb +18 -18
- data/lib/ceedling/plugin_reportinator.rb +3 -2
- data/lib/ceedling/plugin_reportinator_helper.rb +2 -3
- data/lib/ceedling/preprocessinator_extractor.rb +2 -2
- data/lib/ceedling/preprocessinator_includes_handler.rb +5 -0
- data/lib/ceedling/rakefile.rb +1 -0
- data/lib/ceedling/release_invoker_helper.rb +5 -2
- data/lib/ceedling/rules_release.rake +2 -1
- data/lib/ceedling/rules_tests.rake +18 -9
- data/lib/ceedling/rules_tests_deep_dependencies.rake +2 -2
- data/lib/ceedling/task_invoker.rb +15 -3
- data/lib/ceedling/tasks_vendor.rake +3 -3
- data/lib/ceedling/test_invoker.rb +39 -12
- data/lib/ceedling/test_invoker_helper.rb +5 -1
- data/lib/ceedling/tool_executor.rb +8 -4
- data/lib/ceedling/version.rb +1 -1
- data/out.fail +21 -0
- data/plugins/beep/README.md +22 -0
- data/plugins/beep/lib/beep.rb +40 -0
- data/plugins/bullseye/bullseye.rake +43 -36
- data/plugins/bullseye/config/defaults.yml +4 -0
- data/plugins/bullseye/lib/bullseye.rb +27 -5
- data/plugins/command_hooks/lib/command_hooks.rb +3 -0
- data/plugins/gcov/README.md +34 -1
- data/plugins/gcov/config/defaults.yml +3 -3
- data/plugins/gcov/gcov.rake +7 -5
- data/plugins/gcov/lib/gcov.rb +3 -1
- data/plugins/gcov/lib/gcov_constants.rb +2 -0
- data/plugins/junit_tests_report/lib/junit_tests_report.rb +12 -9
- data/plugins/module_generator/lib/module_generator.rb +14 -1
- data/plugins/module_generator/module_generator.rake +21 -4
- data/plugins/raw_output_report/lib/raw_output_report.rb +41 -0
- data/spec/gcov/gcov_deployment_spec.rb +1 -1
- data/spec/gcov/gcov_test_cases_spec.rb +2 -2
- data/spec/generator_test_results_spec.rb +5 -0
- data/spec/preprocessinator_includes_handler_spec.rb +1 -0
- data/spec/spec_system_helper.rb +178 -4
- data/spec/support/test_example.fail +1 -0
- data/spec/support/test_example.pass +1 -0
- data/spec/support/test_example_empty.pass +1 -0
- data/spec/support/test_example_ignore.pass +1 -0
- data/spec/support/test_example_mangled.pass +1 -0
- data/spec/support/test_example_with_time.pass +22 -0
- data/spec/system/deployment_spec.rb +33 -0
- data/vendor/cmock/README.md +4 -3
- data/vendor/cmock/docs/CMock_Summary.md +1 -1
- data/vendor/cmock/lib/cmock_config.rb +4 -0
- data/vendor/cmock/lib/cmock_generator.rb +5 -2
- data/vendor/cmock/lib/cmock_generator_plugin_array.rb +4 -4
- data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +9 -11
- data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +0 -1
- data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +2 -3
- data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +2 -4
- data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +0 -2
- data/vendor/cmock/lib/cmock_generator_utils.rb +16 -3
- data/vendor/cmock/lib/cmock_header_parser.rb +59 -34
- data/vendor/cmock/release/build.info +1 -1
- data/vendor/cmock/release/version.info +1 -1
- data/vendor/cmock/scripts/create_makefile.rb +17 -2
- data/vendor/cmock/src/cmock.c +13 -7
- data/vendor/cmock/test/test_helper.rb +11 -10
- data/vendor/cmock/test/unit/cmock_config_test.rb +4 -2
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +10 -4
- data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +20 -12
- data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +2 -2
- data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +2 -2
- data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +3 -3
- data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +8 -6
- data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +27 -10
- data/vendor/cmock/test/unit/cmock_header_parser_test.rb +108 -20
- data/vendor/cmock/vendor/c_exception/Gemfile +4 -0
- data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -0
- data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -0
- data/vendor/cmock/vendor/c_exception/README.md +162 -0
- data/vendor/cmock/vendor/c_exception/Rakefile +42 -0
- data/vendor/cmock/vendor/c_exception/docs/CException.md +292 -0
- data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.h +110 -0
- data/vendor/cmock/vendor/c_exception/makefile +24 -0
- data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
- data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
- data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -0
- data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -0
- data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +67 -0
- data/vendor/cmock/vendor/unity/README.md +231 -0
- data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +118 -0
- data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
- data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
- data/vendor/cmock/vendor/unity/auto/generate_module.rb +308 -0
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +457 -0
- data/vendor/cmock/vendor/unity/auto/parse_output.rb +323 -0
- data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +252 -0
- data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +25 -0
- data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +6 -0
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +139 -0
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +136 -0
- data/vendor/cmock/vendor/unity/auto/unity_to_junit.py +146 -0
- data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -0
- data/vendor/cmock/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
- data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +779 -0
- data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +433 -0
- data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +192 -0
- data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +260 -0
- data/vendor/cmock/vendor/unity/docs/license.txt +21 -0
- data/vendor/cmock/vendor/unity/examples/example_1/makefile +71 -0
- data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +5 -0
- data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
- data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
- data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
- data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
- data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
- data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
- data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
- data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
- data/vendor/cmock/vendor/unity/examples/example_2/makefile +70 -0
- data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +5 -0
- data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
- data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
- data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
- data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
- data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
- data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
- data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
- data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
- data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
- data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
- data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
- data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +43 -0
- data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +249 -0
- data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +13 -0
- data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
- data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
- data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
- data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
- data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
- data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
- data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
- data/vendor/cmock/vendor/unity/examples/unity_config.h +247 -0
- data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +48 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
- data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +436 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +83 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +51 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +47 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +75 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +22 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +543 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +57 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
- data/vendor/cmock/vendor/unity/release/build.info +2 -0
- data/vendor/cmock/vendor/unity/release/version.info +2 -0
- data/vendor/cmock/vendor/unity/src/unity.c +1572 -0
- data/vendor/cmock/vendor/unity/src/unity.h +503 -0
- data/vendor/cmock/vendor/unity/src/unity_internals.h +924 -0
- data/vendor/cmock/vendor/unity/test/Makefile +68 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +57 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +55 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +15 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +67 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +70 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +58 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +67 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +70 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
- data/vendor/cmock/vendor/unity/test/rakefile +125 -0
- data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +260 -0
- data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
- data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +78 -0
- data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +78 -0
- data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +49 -0
- data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +50 -0
- data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
- data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
- data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
- data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +101 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +90 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +80 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +95 -0
- data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -0
- data/vendor/cmock/vendor/unity/test/testdata/CException.h +11 -0
- data/vendor/cmock/vendor/unity/test/testdata/Defs.h +8 -0
- data/vendor/cmock/vendor/unity/test/testdata/cmock.h +14 -0
- data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +13 -0
- data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +186 -0
- data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -0
- data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +195 -0
- data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1252 -0
- data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +113 -0
- data/vendor/cmock/vendor/unity/test/tests/testunity.c +5371 -0
- data/vendor/unity/auto/generate_test_runner.rb +30 -10
- data/vendor/unity/auto/parse_output.rb +212 -109
- data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +9 -10
- data/vendor/unity/docs/UnityAssertionsReference.md +11 -2
- data/vendor/unity/docs/UnityConfigurationGuide.md +90 -55
- data/vendor/unity/docs/UnityGettingStartedGuide.md +6 -5
- data/vendor/unity/docs/UnityHelperScriptsGuide.md +23 -5
- data/vendor/unity/examples/unity_config.h +8 -0
- data/vendor/unity/extras/fixture/src/unity_fixture.c +4 -0
- data/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
- data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +2 -2
- data/vendor/unity/release/build.info +1 -1
- data/vendor/unity/release/version.info +1 -1
- data/vendor/unity/src/unity.c +64 -57
- data/vendor/unity/src/unity.h +111 -7
- data/vendor/unity/src/unity_internals.h +173 -73
- data/vendor/unity/test/Makefile +5 -1
- data/vendor/unity/test/testdata/testRunnerGenerator.c +4 -1
- data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +4 -1
- data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +4 -1
- data/vendor/unity/test/tests/testparameterized.c +5 -2
- data/vendor/unity/test/tests/testunity.c +34 -0
- metadata +150 -2
@@ -14,15 +14,20 @@ class ConfiguratorPlugins
|
|
14
14
|
def add_load_paths(config)
|
15
15
|
plugin_paths = {}
|
16
16
|
|
17
|
-
config[:plugins][:
|
18
|
-
|
17
|
+
config[:plugins][:enabled].each do |plugin|
|
18
|
+
config[:plugins][:load_paths].each do |root|
|
19
|
+
path = File.join(root, plugin)
|
19
20
|
|
20
|
-
|
21
|
-
|
21
|
+
is_script_plugin = ( not @file_wrapper.directory_listing( File.join( path, 'lib', '*.rb' ) ).empty? )
|
22
|
+
is_rake_plugin = ( not @file_wrapper.directory_listing( File.join( path, '*.rake' ) ).empty? )
|
22
23
|
|
23
|
-
if
|
24
|
+
if is_script_plugin or is_rake_plugin
|
24
25
|
plugin_paths[(plugin + '_path').to_sym] = path
|
25
|
-
|
26
|
+
|
27
|
+
if is_script_plugin
|
28
|
+
@system_wrapper.add_load_path( File.join( path, 'lib') )
|
29
|
+
end
|
30
|
+
break
|
26
31
|
end
|
27
32
|
end
|
28
33
|
end
|
@@ -32,12 +37,13 @@ class ConfiguratorPlugins
|
|
32
37
|
|
33
38
|
|
34
39
|
# gather up and return .rake filepaths that exist on-disk
|
35
|
-
def find_rake_plugins(config)
|
40
|
+
def find_rake_plugins(config, plugin_paths)
|
41
|
+
@rake_plugins = []
|
36
42
|
plugins_with_path = []
|
37
43
|
|
38
|
-
config[:plugins][:
|
39
|
-
|
40
|
-
rake_plugin_path = File.join(
|
44
|
+
config[:plugins][:enabled].each do |plugin|
|
45
|
+
if path = plugin_paths[(plugin + '_path').to_sym]
|
46
|
+
rake_plugin_path = File.join(path, "#{plugin}.rake")
|
41
47
|
if (@file_wrapper.exist?(rake_plugin_path))
|
42
48
|
plugins_with_path << rake_plugin_path
|
43
49
|
@rake_plugins << plugin
|
@@ -50,16 +56,16 @@ class ConfiguratorPlugins
|
|
50
56
|
|
51
57
|
|
52
58
|
# gather up and return just names of .rb classes that exist on-disk
|
53
|
-
def find_script_plugins(config)
|
54
|
-
|
55
|
-
config[:plugins][:enabled].each do |plugin|
|
56
|
-
script_plugin_path = File.join(root, plugin, "lib", "#{plugin}.rb")
|
59
|
+
def find_script_plugins(config, plugin_paths)
|
60
|
+
@script_plugins = []
|
57
61
|
|
62
|
+
config[:plugins][:enabled].each do |plugin|
|
63
|
+
if path = plugin_paths[(plugin + '_path').to_sym]
|
64
|
+
script_plugin_path = File.join(path, "lib", "#{plugin}.rb")
|
58
65
|
|
59
66
|
if @file_wrapper.exist?(script_plugin_path)
|
60
67
|
@script_plugins << plugin
|
61
68
|
end
|
62
|
-
|
63
69
|
end
|
64
70
|
end
|
65
71
|
|
@@ -68,13 +74,12 @@ class ConfiguratorPlugins
|
|
68
74
|
|
69
75
|
|
70
76
|
# gather up and return configuration .yml filepaths that exist on-disk
|
71
|
-
def find_config_plugins(config)
|
77
|
+
def find_config_plugins(config, plugin_paths)
|
72
78
|
plugins_with_path = []
|
73
79
|
|
74
|
-
config[:plugins][:
|
75
|
-
|
76
|
-
config_plugin_path = File.join(
|
77
|
-
|
80
|
+
config[:plugins][:enabled].each do |plugin|
|
81
|
+
if path = plugin_paths[(plugin + '_path').to_sym]
|
82
|
+
config_plugin_path = File.join(path, "config", "#{plugin}.yml")
|
78
83
|
|
79
84
|
if @file_wrapper.exist?(config_plugin_path)
|
80
85
|
plugins_with_path << config_plugin_path
|
@@ -87,12 +92,12 @@ class ConfiguratorPlugins
|
|
87
92
|
|
88
93
|
|
89
94
|
# gather up and return default .yml filepaths that exist on-disk
|
90
|
-
def find_plugin_defaults(config)
|
95
|
+
def find_plugin_defaults(config, plugin_paths)
|
91
96
|
defaults_with_path = []
|
92
97
|
|
93
|
-
config[:plugins][:
|
94
|
-
|
95
|
-
default_path = File.join(
|
98
|
+
config[:plugins][:enabled].each do |plugin|
|
99
|
+
if path = plugin_paths[(plugin + '_path').to_sym]
|
100
|
+
default_path = File.join(path, 'config', 'defaults.yml')
|
96
101
|
|
97
102
|
if @file_wrapper.exist?(default_path)
|
98
103
|
defaults_with_path << default_path
|
@@ -76,7 +76,6 @@ class ConfiguratorSetup
|
|
76
76
|
def validate_paths(config)
|
77
77
|
validation = []
|
78
78
|
|
79
|
-
validation << @configurator_validator.validate_filepath(config, :project, :build_root)
|
80
79
|
if config[:cmock][:unity_helper]
|
81
80
|
config[:cmock][:unity_helper].each do |path|
|
82
81
|
validation << @configurator_validator.validate_filepath_simple( path, :cmock, :unity_helper )
|
data/lib/ceedling/defaults.rb
CHANGED
@@ -4,7 +4,7 @@ require 'ceedling/file_path_utils'
|
|
4
4
|
|
5
5
|
#this should be defined already, but not always during system specs
|
6
6
|
CEEDLING_VENDOR = File.expand_path(File.dirname(__FILE__) + '/../../vendor') unless defined? CEEDLING_VENDOR
|
7
|
-
CEEDLING_PLUGINS = [
|
7
|
+
CEEDLING_PLUGINS = [] unless defined? CEEDLING_PLUGINS
|
8
8
|
|
9
9
|
DEFAULT_TEST_COMPILER_TOOL = {
|
10
10
|
:executable => FilePathUtils.os_executable_ext('gcc').freeze,
|
@@ -21,6 +21,8 @@ DEFAULT_TEST_COMPILER_TOOL = {
|
|
21
21
|
"-c \"${1}\"".freeze,
|
22
22
|
"-o \"${2}\"".freeze,
|
23
23
|
# gcc's list file output options are complex; no use of ${3} parameter in default config
|
24
|
+
"-MMD".freeze,
|
25
|
+
"-MF \"${4}\"".freeze,
|
24
26
|
].freeze
|
25
27
|
}
|
26
28
|
|
@@ -158,6 +160,8 @@ DEFAULT_RELEASE_COMPILER_TOOL = {
|
|
158
160
|
"-c \"${1}\"".freeze,
|
159
161
|
"-o \"${2}\"".freeze,
|
160
162
|
# gcc's list file output options are complex; no use of ${3} parameter in default config
|
163
|
+
"-MMD".freeze,
|
164
|
+
"-MF \"${4}\"".freeze,
|
161
165
|
].freeze
|
162
166
|
}
|
163
167
|
|
@@ -242,6 +246,7 @@ DEFAULT_CEEDLING_CONFIG = {
|
|
242
246
|
:test_threads => 1,
|
243
247
|
:use_test_preprocessor => false,
|
244
248
|
:use_deep_dependencies => false,
|
249
|
+
:generate_deep_dependencies => true, # only applicable if use_deep_dependencies is true
|
245
250
|
:test_file_prefix => 'test_',
|
246
251
|
:options_paths => [],
|
247
252
|
:release_build => false,
|
@@ -347,7 +352,7 @@ DEFAULT_CEEDLING_CONFIG = {
|
|
347
352
|
:release_dependencies_generator => { :arguments => [] },
|
348
353
|
|
349
354
|
:plugins => {
|
350
|
-
:load_paths =>
|
355
|
+
:load_paths => CEEDLING_PLUGINS,
|
351
356
|
:enabled => [],
|
352
357
|
}
|
353
358
|
}.freeze
|
@@ -11,7 +11,11 @@ class Dependinator
|
|
11
11
|
|
12
12
|
|
13
13
|
def load_release_object_deep_dependencies(dependencies_list)
|
14
|
-
dependencies_list.each
|
14
|
+
dependencies_list.each do |dependencies_file|
|
15
|
+
if File.exists?(dependencies_file)
|
16
|
+
@rake_wrapper.load_dependencies( dependencies_file )
|
17
|
+
end
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
|
@@ -25,7 +29,11 @@ class Dependinator
|
|
25
29
|
|
26
30
|
def load_test_object_deep_dependencies(files_list)
|
27
31
|
dependencies_list = @file_path_utils.form_test_dependencies_filelist(files_list)
|
28
|
-
dependencies_list.each
|
32
|
+
dependencies_list.each do |dependencies_file|
|
33
|
+
if File.exists?(dependencies_file)
|
34
|
+
@rake_wrapper.load_dependencies(dependencies_file)
|
35
|
+
end
|
36
|
+
end
|
29
37
|
end
|
30
38
|
|
31
39
|
|
data/lib/ceedling/file_finder.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake' # for adding ext() method to string
|
3
|
+
require 'thread'
|
4
|
+
|
3
5
|
|
4
6
|
class FileFinder
|
7
|
+
SEMAPHORE = Mutex.new
|
5
8
|
|
6
9
|
constructor :configurator, :file_finder_helper, :cacheinator, :file_path_utils, :file_wrapper, :yaml_wrapper
|
7
10
|
|
8
11
|
def prepare_search_sources
|
9
|
-
@all_test_source_and_header_file_collection =
|
12
|
+
@all_test_source_and_header_file_collection =
|
10
13
|
@configurator.collection_all_tests +
|
11
|
-
@configurator.collection_all_source +
|
14
|
+
@configurator.collection_all_source +
|
12
15
|
@configurator.collection_all_headers
|
13
16
|
end
|
14
17
|
|
@@ -25,19 +28,19 @@ class FileFinder
|
|
25
28
|
def find_header_input_for_mock_file(mock_file)
|
26
29
|
found_path = find_header_file(mock_file)
|
27
30
|
mock_input = found_path
|
28
|
-
|
31
|
+
|
29
32
|
if (@configurator.project_use_test_preprocessor)
|
30
33
|
mock_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
|
31
34
|
end
|
32
|
-
|
35
|
+
|
33
36
|
return mock_input
|
34
37
|
end
|
35
|
-
|
38
|
+
|
36
39
|
|
37
40
|
def find_source_from_test(test, complain)
|
38
41
|
test_prefix = @configurator.project_test_file_prefix
|
39
42
|
source_paths = @configurator.collection_all_source
|
40
|
-
|
43
|
+
|
41
44
|
source = File.basename(test).sub(/#{test_prefix}/, '')
|
42
45
|
|
43
46
|
# we don't blow up if a test file has no corresponding source file
|
@@ -49,31 +52,31 @@ class FileFinder
|
|
49
52
|
extension_source = @configurator.extension_source
|
50
53
|
|
51
54
|
test_file = File.basename(runner_path).sub(/#{@configurator.test_runner_file_suffix}#{'\\'+extension_source}/, extension_source)
|
52
|
-
|
55
|
+
|
53
56
|
found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
|
54
57
|
|
55
58
|
return found_path
|
56
59
|
end
|
57
60
|
|
58
|
-
|
61
|
+
|
59
62
|
def find_test_input_for_runner_file(runner_path)
|
60
63
|
found_path = find_test_from_runner_path(runner_path)
|
61
64
|
runner_input = found_path
|
62
|
-
|
65
|
+
|
63
66
|
if (@configurator.project_use_test_preprocessor)
|
64
67
|
runner_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
|
65
68
|
end
|
66
|
-
|
69
|
+
|
67
70
|
return runner_input
|
68
71
|
end
|
69
|
-
|
72
|
+
|
70
73
|
|
71
74
|
def find_test_from_file_path(file_path)
|
72
75
|
test_file = File.basename(file_path).ext(@configurator.extension_source)
|
73
|
-
|
76
|
+
|
74
77
|
found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
|
75
|
-
|
76
|
-
return found_path
|
78
|
+
|
79
|
+
return found_path
|
77
80
|
end
|
78
81
|
|
79
82
|
|
@@ -81,59 +84,64 @@ class FileFinder
|
|
81
84
|
file = File.basename(file_path)
|
82
85
|
return @file_finder_helper.find_file_in_collection(file, @all_test_source_and_header_file_collection, :error)
|
83
86
|
end
|
84
|
-
|
85
|
-
|
87
|
+
|
88
|
+
|
86
89
|
def find_compilation_input_file(file_path, complain=:error, release=false)
|
87
90
|
found_file = nil
|
88
|
-
|
91
|
+
|
89
92
|
source_file = File.basename(file_path).ext(@configurator.extension_source)
|
90
93
|
|
91
94
|
# We only collect files that already exist when we start up.
|
92
95
|
# FileLists can produce undesired results for dynamically generated files depending on when they're accessed.
|
93
96
|
# So collect mocks and runners separately and right now.
|
94
|
-
if (source_file =~ /#{@configurator.test_runner_file_suffix}/)
|
95
|
-
found_file =
|
96
|
-
@file_finder_helper.find_file_in_collection(
|
97
|
-
source_file,
|
98
|
-
@file_wrapper.directory_listing( File.join(@configurator.project_test_runners_path, '*') ),
|
99
|
-
complain)
|
100
|
-
|
101
|
-
elsif (@configurator.project_use_mocks and (source_file =~ /#{@configurator.cmock_mock_prefix}/))
|
102
|
-
found_file =
|
103
|
-
@file_finder_helper.find_file_in_collection(
|
104
|
-
source_file,
|
105
|
-
@file_wrapper.directory_listing( File.join(@configurator.cmock_mock_path, '*') ),
|
106
|
-
complain)
|
107
|
-
|
108
|
-
elsif release
|
109
|
-
found_file =
|
110
|
-
@file_finder_helper.find_file_in_collection(
|
111
|
-
source_file,
|
112
|
-
@configurator.collection_release_existing_compilation_input,
|
113
|
-
complain)
|
114
|
-
else
|
115
|
-
found_file =
|
116
|
-
@file_finder_helper.find_file_in_collection(
|
117
|
-
source_file,
|
118
|
-
@configurator.collection_all_existing_compilation_input,
|
119
|
-
complain)
|
120
|
-
end
|
121
97
|
|
98
|
+
SEMAPHORE.synchronize {
|
99
|
+
|
100
|
+
if (source_file =~ /#{@configurator.test_runner_file_suffix}/)
|
101
|
+
found_file =
|
102
|
+
@file_finder_helper.find_file_in_collection(
|
103
|
+
source_file,
|
104
|
+
@file_wrapper.directory_listing( File.join(@configurator.project_test_runners_path, '*') ),
|
105
|
+
complain)
|
106
|
+
|
107
|
+
elsif (@configurator.project_use_mocks and (source_file =~ /#{@configurator.cmock_mock_prefix}/))
|
108
|
+
found_file =
|
109
|
+
@file_finder_helper.find_file_in_collection(
|
110
|
+
source_file,
|
111
|
+
@file_wrapper.directory_listing( File.join(@configurator.cmock_mock_path, '*') ),
|
112
|
+
complain)
|
113
|
+
|
114
|
+
elsif release
|
115
|
+
found_file =
|
116
|
+
@file_finder_helper.find_file_in_collection(
|
117
|
+
source_file,
|
118
|
+
@configurator.collection_release_existing_compilation_input,
|
119
|
+
complain)
|
120
|
+
else
|
121
|
+
temp_complain = (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY) ? :ignore : complain
|
122
|
+
found_file =
|
123
|
+
@file_finder_helper.find_file_in_collection(
|
124
|
+
source_file,
|
125
|
+
@configurator.collection_all_existing_compilation_input,
|
126
|
+
temp_complain)
|
127
|
+
found_file ||= find_assembly_file(file_path, false) if (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY)
|
128
|
+
end
|
129
|
+
}
|
122
130
|
return found_file
|
123
131
|
end
|
124
132
|
|
125
|
-
|
133
|
+
|
126
134
|
def find_source_file(file_path, complain)
|
127
135
|
source_file = File.basename(file_path).ext(@configurator.extension_source)
|
128
136
|
return @file_finder_helper.find_file_in_collection(source_file, @configurator.collection_all_source, complain)
|
129
137
|
end
|
130
138
|
|
131
|
-
|
132
|
-
def find_assembly_file(file_path)
|
139
|
+
|
140
|
+
def find_assembly_file(file_path, complain = :error)
|
133
141
|
assembly_file = File.basename(file_path).ext(@configurator.extension_assembly)
|
134
|
-
return @file_finder_helper.find_file_in_collection(assembly_file, @configurator.collection_all_assembly,
|
142
|
+
return @file_finder_helper.find_file_in_collection(assembly_file, @configurator.collection_all_assembly, complain)
|
135
143
|
end
|
136
|
-
|
144
|
+
|
137
145
|
def find_file_from_list(file_path, file_list, complain)
|
138
146
|
return @file_finder_helper.find_file_in_collection(file_path, file_list, complain)
|
139
147
|
end
|
@@ -116,6 +116,10 @@ class FilePathUtils
|
|
116
116
|
return File.join( @configurator.project_test_build_cache_path, File.basename(filepath) )
|
117
117
|
end
|
118
118
|
|
119
|
+
def form_test_dependencies_filepath(filepath)
|
120
|
+
return File.join( @configurator.project_test_dependencies_path, File.basename(filepath).ext(@configurator.extension_dependencies) )
|
121
|
+
end
|
122
|
+
|
119
123
|
def form_pass_results_filepath(filepath)
|
120
124
|
return File.join( @configurator.project_test_results_path, File.basename(filepath).ext(@configurator.extension_testpass) )
|
121
125
|
end
|
@@ -133,11 +137,15 @@ class FilePathUtils
|
|
133
137
|
end
|
134
138
|
|
135
139
|
def form_runner_object_filepath_from_test(filepath)
|
136
|
-
return (
|
140
|
+
return (form_test_build_c_object_filepath(filepath)).sub(/(#{@configurator.extension_object})$/, "#{@configurator.test_runner_file_suffix}\\1")
|
141
|
+
end
|
142
|
+
|
143
|
+
def form_test_build_c_object_filepath(filepath)
|
144
|
+
return File.join( @configurator.project_test_build_output_c_path, File.basename(filepath).ext(@configurator.extension_object) )
|
137
145
|
end
|
138
146
|
|
139
|
-
def
|
140
|
-
return File.join( @configurator.
|
147
|
+
def form_test_build_asm_object_filepath(filepath)
|
148
|
+
return File.join( @configurator.project_test_build_output_asm_path, File.basename(filepath).ext(@configurator.extension_object) )
|
141
149
|
end
|
142
150
|
|
143
151
|
def form_test_executable_filepath(filepath)
|
@@ -161,7 +169,7 @@ class FilePathUtils
|
|
161
169
|
end
|
162
170
|
|
163
171
|
def form_test_build_objects_filelist(sources)
|
164
|
-
return (@file_wrapper.instantiate_file_list(sources)).pathmap("#{@configurator.
|
172
|
+
return (@file_wrapper.instantiate_file_list(sources)).pathmap("#{@configurator.project_test_build_output_c_path}/%n#{@configurator.extension_object}")
|
165
173
|
end
|
166
174
|
|
167
175
|
def form_preprocessed_mockable_headers_filelist(mocks)
|
data/lib/ceedling/generator.rb
CHANGED
@@ -78,9 +78,9 @@ class Generator
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
def generate_object_file(tool, operation, context, source, object, list='')
|
81
|
+
def generate_object_file(tool, operation, context, source, object, list='', dependencies='')
|
82
82
|
shell_result = {}
|
83
|
-
arg_hash = {:tool => tool, :operation => operation, :context => context, :source => source, :object => object, :list => list}
|
83
|
+
arg_hash = {:tool => tool, :operation => operation, :context => context, :source => source, :object => object, :list => list, :dependencies => dependencies}
|
84
84
|
@plugin_manager.pre_compile_execute(arg_hash)
|
85
85
|
|
86
86
|
@streaminator.stdout_puts("Compiling #{File.basename(arg_hash[:source])}...", Verbosity::NORMAL)
|
@@ -89,7 +89,8 @@ class Generator
|
|
89
89
|
@flaginator.flag_down( operation, context, source ),
|
90
90
|
arg_hash[:source],
|
91
91
|
arg_hash[:object],
|
92
|
-
arg_hash[:list]
|
92
|
+
arg_hash[:list],
|
93
|
+
arg_hash[:dependencies])
|
93
94
|
|
94
95
|
begin
|
95
96
|
shell_result = @tool_executor.exec( command[:line], command[:options] )
|
@@ -1,19 +1,20 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake' # for .ext()
|
3
3
|
require 'ceedling/constants'
|
4
|
-
|
4
|
+
|
5
5
|
class GeneratorTestResults
|
6
6
|
|
7
7
|
constructor :configurator, :generator_test_results_sanity_checker, :yaml_wrapper
|
8
|
-
|
8
|
+
|
9
9
|
def process_and_write_results(unity_shell_result, results_file, test_file)
|
10
10
|
output_file = results_file
|
11
|
-
|
11
|
+
|
12
12
|
results = get_results_structure
|
13
|
-
|
13
|
+
|
14
14
|
results[:source][:path] = File.dirname(test_file)
|
15
15
|
results[:source][:file] = File.basename(test_file)
|
16
|
-
|
16
|
+
results[:time] = unity_shell_result[:time] unless unity_shell_result[:time].nil?
|
17
|
+
|
17
18
|
# process test statistics
|
18
19
|
if (unity_shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN)
|
19
20
|
results[:counts][:total] = $1.to_i
|
@@ -24,7 +25,7 @@ class GeneratorTestResults
|
|
24
25
|
|
25
26
|
# remove test statistics lines
|
26
27
|
output_string = unity_shell_result[:output].sub(TEST_STDOUT_STATISTICS_PATTERN, '')
|
27
|
-
|
28
|
+
|
28
29
|
output_string.lines do |line|
|
29
30
|
# process unity output
|
30
31
|
case line
|
@@ -44,13 +45,13 @@ class GeneratorTestResults
|
|
44
45
|
results[:stdout] << line.chomp
|
45
46
|
end
|
46
47
|
end
|
47
|
-
|
48
|
+
|
48
49
|
@generator_test_results_sanity_checker.verify(results, unity_shell_result[:exit_code])
|
49
|
-
|
50
|
+
|
50
51
|
output_file = results_file.ext(@configurator.extension_testfail) if (results[:counts][:failed] > 0)
|
51
|
-
|
52
|
+
|
52
53
|
@yaml_wrapper.dump(output_file, results)
|
53
|
-
|
54
|
+
|
54
55
|
return { :result_file => output_file, :result => results }
|
55
56
|
end
|
56
57
|
|
@@ -64,19 +65,20 @@ class GeneratorTestResults
|
|
64
65
|
:ignores => [],
|
65
66
|
:counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0},
|
66
67
|
:stdout => [],
|
68
|
+
:time => 0.0
|
67
69
|
}
|
68
70
|
end
|
69
|
-
|
71
|
+
|
70
72
|
def extract_line_elements(line, filename)
|
71
73
|
# handle anything preceding filename in line as extra output to be collected
|
72
74
|
stdout = nil
|
73
75
|
stdout_regex = /(.+)#{Regexp.escape(filename)}.+/i
|
74
|
-
|
76
|
+
|
75
77
|
if (line =~ stdout_regex)
|
76
78
|
stdout = $1.clone
|
77
79
|
line.sub!(/#{Regexp.escape(stdout)}/, '')
|
78
80
|
end
|
79
|
-
|
81
|
+
|
80
82
|
# collect up test results minus and extra output
|
81
83
|
elements = (line.strip.split(':'))[1..-1]
|
82
84
|
|