ceedling 0.28.2 → 0.28.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
|
2
|
+
|
|
3
|
+
Unity Project - A Test Framework for C
|
|
4
|
+
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
5
|
+
[Released under MIT License. Please refer to license.txt for details]
|
|
6
|
+
|
|
7
|
+
This Framework is an optional add-on to Unity. By including unity_framework.h in place of unity.h,
|
|
8
|
+
you may now work with Unity in a manner similar to CppUTest. This framework adds the concepts of
|
|
9
|
+
test groups and gives finer control of your tests over the command line.
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/* Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
|
2
|
+
* ==========================================
|
|
3
|
+
* Unity Project - A Test Framework for C
|
|
4
|
+
* Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
5
|
+
* [Released under MIT License. Please refer to license.txt for details]
|
|
6
|
+
* ========================================== */
|
|
7
|
+
|
|
8
|
+
#include "unity_fixture.h"
|
|
9
|
+
#include "unity_internals.h"
|
|
10
|
+
#include <string.h>
|
|
11
|
+
|
|
12
|
+
struct UNITY_FIXTURE_T UnityFixture;
|
|
13
|
+
|
|
14
|
+
/* If you decide to use the function pointer approach.
|
|
15
|
+
* Build with -D UNITY_OUTPUT_CHAR=outputChar and include <stdio.h>
|
|
16
|
+
* int (*outputChar)(int) = putchar; */
|
|
17
|
+
|
|
18
|
+
#if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA)
|
|
19
|
+
void setUp(void) { /*does nothing*/ }
|
|
20
|
+
void tearDown(void) { /*does nothing*/ }
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
static void announceTestRun(unsigned int runNumber)
|
|
24
|
+
{
|
|
25
|
+
UnityPrint("Unity test run ");
|
|
26
|
+
UnityPrintNumberUnsigned(runNumber+1);
|
|
27
|
+
UnityPrint(" of ");
|
|
28
|
+
UnityPrintNumberUnsigned(UnityFixture.RepeatCount);
|
|
29
|
+
UNITY_PRINT_EOL();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
int UnityMain(int argc, const char* argv[], void (*runAllTests)(void))
|
|
33
|
+
{
|
|
34
|
+
int result = UnityGetCommandLineOptions(argc, argv);
|
|
35
|
+
unsigned int r;
|
|
36
|
+
if (result != 0)
|
|
37
|
+
return result;
|
|
38
|
+
|
|
39
|
+
for (r = 0; r < UnityFixture.RepeatCount; r++)
|
|
40
|
+
{
|
|
41
|
+
UnityBegin(argv[0]);
|
|
42
|
+
announceTestRun(r);
|
|
43
|
+
runAllTests();
|
|
44
|
+
if (!UnityFixture.Verbose) UNITY_PRINT_EOL();
|
|
45
|
+
UnityEnd();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return (int)Unity.TestFailures;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static int selected(const char* filter, const char* name)
|
|
52
|
+
{
|
|
53
|
+
if (filter == 0)
|
|
54
|
+
return 1;
|
|
55
|
+
return strstr(name, filter) ? 1 : 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static int testSelected(const char* test)
|
|
59
|
+
{
|
|
60
|
+
return selected(UnityFixture.NameFilter, test);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static int groupSelected(const char* group)
|
|
64
|
+
{
|
|
65
|
+
return selected(UnityFixture.GroupFilter, group);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void UnityTestRunner(unityfunction* setup,
|
|
69
|
+
unityfunction* testBody,
|
|
70
|
+
unityfunction* teardown,
|
|
71
|
+
const char* printableName,
|
|
72
|
+
const char* group,
|
|
73
|
+
const char* name,
|
|
74
|
+
const char* file,
|
|
75
|
+
unsigned int line)
|
|
76
|
+
{
|
|
77
|
+
if (testSelected(name) && groupSelected(group))
|
|
78
|
+
{
|
|
79
|
+
Unity.TestFile = file;
|
|
80
|
+
Unity.CurrentTestName = printableName;
|
|
81
|
+
Unity.CurrentTestLineNumber = line;
|
|
82
|
+
if (!UnityFixture.Verbose)
|
|
83
|
+
UNITY_OUTPUT_CHAR('.');
|
|
84
|
+
else
|
|
85
|
+
{
|
|
86
|
+
UnityPrint(printableName);
|
|
87
|
+
#ifndef UNITY_REPEAT_TEST_NAME
|
|
88
|
+
Unity.CurrentTestName = NULL;
|
|
89
|
+
#endif
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
Unity.NumberOfTests++;
|
|
93
|
+
UnityMalloc_StartTest();
|
|
94
|
+
UnityPointer_Init();
|
|
95
|
+
|
|
96
|
+
UNITY_EXEC_TIME_START();
|
|
97
|
+
|
|
98
|
+
if (TEST_PROTECT())
|
|
99
|
+
{
|
|
100
|
+
setup();
|
|
101
|
+
testBody();
|
|
102
|
+
}
|
|
103
|
+
if (TEST_PROTECT())
|
|
104
|
+
{
|
|
105
|
+
teardown();
|
|
106
|
+
}
|
|
107
|
+
if (TEST_PROTECT())
|
|
108
|
+
{
|
|
109
|
+
UnityPointer_UndoAllSets();
|
|
110
|
+
if (!Unity.CurrentTestFailed)
|
|
111
|
+
UnityMalloc_EndTest();
|
|
112
|
+
}
|
|
113
|
+
UnityConcludeFixtureTest();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
void UnityIgnoreTest(const char* printableName, const char* group, const char* name)
|
|
118
|
+
{
|
|
119
|
+
if (testSelected(name) && groupSelected(group))
|
|
120
|
+
{
|
|
121
|
+
Unity.NumberOfTests++;
|
|
122
|
+
Unity.TestIgnores++;
|
|
123
|
+
if (!UnityFixture.Verbose)
|
|
124
|
+
UNITY_OUTPUT_CHAR('!');
|
|
125
|
+
else
|
|
126
|
+
{
|
|
127
|
+
UnityPrint(printableName);
|
|
128
|
+
UNITY_PRINT_EOL();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
/*------------------------------------------------- */
|
|
135
|
+
/* Malloc and free stuff */
|
|
136
|
+
#define MALLOC_DONT_FAIL -1
|
|
137
|
+
static int malloc_count;
|
|
138
|
+
static int malloc_fail_countdown = MALLOC_DONT_FAIL;
|
|
139
|
+
|
|
140
|
+
void UnityMalloc_StartTest(void)
|
|
141
|
+
{
|
|
142
|
+
malloc_count = 0;
|
|
143
|
+
malloc_fail_countdown = MALLOC_DONT_FAIL;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
void UnityMalloc_EndTest(void)
|
|
147
|
+
{
|
|
148
|
+
malloc_fail_countdown = MALLOC_DONT_FAIL;
|
|
149
|
+
if (malloc_count != 0)
|
|
150
|
+
{
|
|
151
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "This test leaks!");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
void UnityMalloc_MakeMallocFailAfterCount(int countdown)
|
|
156
|
+
{
|
|
157
|
+
malloc_fail_countdown = countdown;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* These definitions are always included from unity_fixture_malloc_overrides.h */
|
|
161
|
+
/* We undef to use them or avoid conflict with <stdlib.h> per the C standard */
|
|
162
|
+
#undef malloc
|
|
163
|
+
#undef free
|
|
164
|
+
#undef calloc
|
|
165
|
+
#undef realloc
|
|
166
|
+
|
|
167
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
168
|
+
static unsigned char unity_heap[UNITY_INTERNAL_HEAP_SIZE_BYTES];
|
|
169
|
+
static size_t heap_index;
|
|
170
|
+
#else
|
|
171
|
+
#include <stdlib.h>
|
|
172
|
+
#endif
|
|
173
|
+
|
|
174
|
+
typedef struct GuardBytes
|
|
175
|
+
{
|
|
176
|
+
size_t size;
|
|
177
|
+
size_t guard_space;
|
|
178
|
+
} Guard;
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
static const char end[] = "END";
|
|
182
|
+
|
|
183
|
+
void* unity_malloc(size_t size)
|
|
184
|
+
{
|
|
185
|
+
char* mem;
|
|
186
|
+
Guard* guard;
|
|
187
|
+
size_t total_size = size + sizeof(Guard) + sizeof(end);
|
|
188
|
+
|
|
189
|
+
if (malloc_fail_countdown != MALLOC_DONT_FAIL)
|
|
190
|
+
{
|
|
191
|
+
if (malloc_fail_countdown == 0)
|
|
192
|
+
return NULL;
|
|
193
|
+
malloc_fail_countdown--;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (size == 0) return NULL;
|
|
197
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
198
|
+
if (heap_index + total_size > UNITY_INTERNAL_HEAP_SIZE_BYTES)
|
|
199
|
+
{
|
|
200
|
+
guard = NULL;
|
|
201
|
+
}
|
|
202
|
+
else
|
|
203
|
+
{
|
|
204
|
+
guard = (Guard*)&unity_heap[heap_index];
|
|
205
|
+
heap_index += total_size;
|
|
206
|
+
}
|
|
207
|
+
#else
|
|
208
|
+
guard = (Guard*)UNITY_FIXTURE_MALLOC(total_size);
|
|
209
|
+
#endif
|
|
210
|
+
if (guard == NULL) return NULL;
|
|
211
|
+
malloc_count++;
|
|
212
|
+
guard->size = size;
|
|
213
|
+
guard->guard_space = 0;
|
|
214
|
+
mem = (char*)&(guard[1]);
|
|
215
|
+
memcpy(&mem[size], end, sizeof(end));
|
|
216
|
+
|
|
217
|
+
return (void*)mem;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
static int isOverrun(void* mem)
|
|
221
|
+
{
|
|
222
|
+
Guard* guard = (Guard*)mem;
|
|
223
|
+
char* memAsChar = (char*)mem;
|
|
224
|
+
guard--;
|
|
225
|
+
|
|
226
|
+
return guard->guard_space != 0 || strcmp(&memAsChar[guard->size], end) != 0;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
static void release_memory(void* mem)
|
|
230
|
+
{
|
|
231
|
+
Guard* guard = (Guard*)mem;
|
|
232
|
+
guard--;
|
|
233
|
+
|
|
234
|
+
malloc_count--;
|
|
235
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
236
|
+
if (mem == unity_heap + heap_index - guard->size - sizeof(end))
|
|
237
|
+
{
|
|
238
|
+
heap_index -= (guard->size + sizeof(Guard) + sizeof(end));
|
|
239
|
+
}
|
|
240
|
+
#else
|
|
241
|
+
UNITY_FIXTURE_FREE(guard);
|
|
242
|
+
#endif
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
void unity_free(void* mem)
|
|
246
|
+
{
|
|
247
|
+
int overrun;
|
|
248
|
+
|
|
249
|
+
if (mem == NULL)
|
|
250
|
+
{
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
overrun = isOverrun(mem);
|
|
255
|
+
release_memory(mem);
|
|
256
|
+
if (overrun)
|
|
257
|
+
{
|
|
258
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during free()");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
void* unity_calloc(size_t num, size_t size)
|
|
263
|
+
{
|
|
264
|
+
void* mem = unity_malloc(num * size);
|
|
265
|
+
if (mem == NULL) return NULL;
|
|
266
|
+
memset(mem, 0, num * size);
|
|
267
|
+
return mem;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
void* unity_realloc(void* oldMem, size_t size)
|
|
271
|
+
{
|
|
272
|
+
Guard* guard = (Guard*)oldMem;
|
|
273
|
+
void* newMem;
|
|
274
|
+
|
|
275
|
+
if (oldMem == NULL) return unity_malloc(size);
|
|
276
|
+
|
|
277
|
+
guard--;
|
|
278
|
+
if (isOverrun(oldMem))
|
|
279
|
+
{
|
|
280
|
+
release_memory(oldMem);
|
|
281
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during realloc()");
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (size == 0)
|
|
285
|
+
{
|
|
286
|
+
release_memory(oldMem);
|
|
287
|
+
return NULL;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (guard->size >= size) return oldMem;
|
|
291
|
+
|
|
292
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC /* Optimization if memory is expandable */
|
|
293
|
+
if (oldMem == unity_heap + heap_index - guard->size - sizeof(end) &&
|
|
294
|
+
heap_index + size - guard->size <= UNITY_INTERNAL_HEAP_SIZE_BYTES)
|
|
295
|
+
{
|
|
296
|
+
release_memory(oldMem); /* Not thread-safe, like unity_heap generally */
|
|
297
|
+
return unity_malloc(size); /* No memcpy since data is in place */
|
|
298
|
+
}
|
|
299
|
+
#endif
|
|
300
|
+
newMem = unity_malloc(size);
|
|
301
|
+
if (newMem == NULL) return NULL; /* Do not release old memory */
|
|
302
|
+
memcpy(newMem, oldMem, guard->size);
|
|
303
|
+
release_memory(oldMem);
|
|
304
|
+
return newMem;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
/*-------------------------------------------------------- */
|
|
309
|
+
/*Automatic pointer restoration functions */
|
|
310
|
+
struct PointerPair
|
|
311
|
+
{
|
|
312
|
+
void** pointer;
|
|
313
|
+
void* old_value;
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
static struct PointerPair pointer_store[UNITY_MAX_POINTERS];
|
|
317
|
+
static int pointer_index = 0;
|
|
318
|
+
|
|
319
|
+
void UnityPointer_Init(void)
|
|
320
|
+
{
|
|
321
|
+
pointer_index = 0;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
void UnityPointer_Set(void** pointer, void* newValue, UNITY_LINE_TYPE line)
|
|
325
|
+
{
|
|
326
|
+
if (pointer_index >= UNITY_MAX_POINTERS)
|
|
327
|
+
{
|
|
328
|
+
UNITY_TEST_FAIL(line, "Too many pointers set");
|
|
329
|
+
}
|
|
330
|
+
else
|
|
331
|
+
{
|
|
332
|
+
pointer_store[pointer_index].pointer = pointer;
|
|
333
|
+
pointer_store[pointer_index].old_value = *pointer;
|
|
334
|
+
*pointer = newValue;
|
|
335
|
+
pointer_index++;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
void UnityPointer_UndoAllSets(void)
|
|
340
|
+
{
|
|
341
|
+
while (pointer_index > 0)
|
|
342
|
+
{
|
|
343
|
+
pointer_index--;
|
|
344
|
+
*(pointer_store[pointer_index].pointer) =
|
|
345
|
+
pointer_store[pointer_index].old_value;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
int UnityGetCommandLineOptions(int argc, const char* argv[])
|
|
350
|
+
{
|
|
351
|
+
int i;
|
|
352
|
+
UnityFixture.Verbose = 0;
|
|
353
|
+
UnityFixture.GroupFilter = 0;
|
|
354
|
+
UnityFixture.NameFilter = 0;
|
|
355
|
+
UnityFixture.RepeatCount = 1;
|
|
356
|
+
|
|
357
|
+
if (argc == 1)
|
|
358
|
+
return 0;
|
|
359
|
+
|
|
360
|
+
for (i = 1; i < argc; )
|
|
361
|
+
{
|
|
362
|
+
if (strcmp(argv[i], "-v") == 0)
|
|
363
|
+
{
|
|
364
|
+
UnityFixture.Verbose = 1;
|
|
365
|
+
i++;
|
|
366
|
+
}
|
|
367
|
+
else if (strcmp(argv[i], "-g") == 0)
|
|
368
|
+
{
|
|
369
|
+
i++;
|
|
370
|
+
if (i >= argc)
|
|
371
|
+
return 1;
|
|
372
|
+
UnityFixture.GroupFilter = argv[i];
|
|
373
|
+
i++;
|
|
374
|
+
}
|
|
375
|
+
else if (strcmp(argv[i], "-n") == 0)
|
|
376
|
+
{
|
|
377
|
+
i++;
|
|
378
|
+
if (i >= argc)
|
|
379
|
+
return 1;
|
|
380
|
+
UnityFixture.NameFilter = argv[i];
|
|
381
|
+
i++;
|
|
382
|
+
}
|
|
383
|
+
else if (strcmp(argv[i], "-r") == 0)
|
|
384
|
+
{
|
|
385
|
+
UnityFixture.RepeatCount = 2;
|
|
386
|
+
i++;
|
|
387
|
+
if (i < argc)
|
|
388
|
+
{
|
|
389
|
+
if (*(argv[i]) >= '0' && *(argv[i]) <= '9')
|
|
390
|
+
{
|
|
391
|
+
unsigned int digit = 0;
|
|
392
|
+
UnityFixture.RepeatCount = 0;
|
|
393
|
+
while (argv[i][digit] >= '0' && argv[i][digit] <= '9')
|
|
394
|
+
{
|
|
395
|
+
UnityFixture.RepeatCount *= 10;
|
|
396
|
+
UnityFixture.RepeatCount += (unsigned int)argv[i][digit++] - '0';
|
|
397
|
+
}
|
|
398
|
+
i++;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else
|
|
403
|
+
{
|
|
404
|
+
/* ignore unknown parameter */
|
|
405
|
+
i++;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return 0;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
void UnityConcludeFixtureTest(void)
|
|
412
|
+
{
|
|
413
|
+
if (Unity.CurrentTestIgnored)
|
|
414
|
+
{
|
|
415
|
+
Unity.TestIgnores++;
|
|
416
|
+
UNITY_PRINT_EOL();
|
|
417
|
+
}
|
|
418
|
+
else if (!Unity.CurrentTestFailed)
|
|
419
|
+
{
|
|
420
|
+
if (UnityFixture.Verbose)
|
|
421
|
+
{
|
|
422
|
+
UnityPrint(" PASS");
|
|
423
|
+
UNITY_EXEC_TIME_STOP();
|
|
424
|
+
UNITY_PRINT_EXEC_TIME();
|
|
425
|
+
UNITY_PRINT_EOL();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
else /* Unity.CurrentTestFailed */
|
|
429
|
+
{
|
|
430
|
+
Unity.TestFailures++;
|
|
431
|
+
UNITY_PRINT_EOL();
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
Unity.CurrentTestFailed = 0;
|
|
435
|
+
Unity.CurrentTestIgnored = 0;
|
|
436
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* Copyright (c) 2010 James Grenning and Contributed to Unity Project
|
|
2
|
+
* ==========================================
|
|
3
|
+
* Unity Project - A Test Framework for C
|
|
4
|
+
* Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
5
|
+
* [Released under MIT License. Please refer to license.txt for details]
|
|
6
|
+
* ========================================== */
|
|
7
|
+
|
|
8
|
+
#ifndef UNITY_FIXTURE_H_
|
|
9
|
+
#define UNITY_FIXTURE_H_
|
|
10
|
+
|
|
11
|
+
#include "unity.h"
|
|
12
|
+
#include "unity_internals.h"
|
|
13
|
+
#include "unity_fixture_malloc_overrides.h"
|
|
14
|
+
#include "unity_fixture_internals.h"
|
|
15
|
+
|
|
16
|
+
int UnityMain(int argc, const char* argv[], void (*runAllTests)(void));
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#define TEST_GROUP(group)\
|
|
20
|
+
static const char* TEST_GROUP_##group = #group
|
|
21
|
+
|
|
22
|
+
#define TEST_SETUP(group) void TEST_##group##_SETUP(void);\
|
|
23
|
+
void TEST_##group##_SETUP(void)
|
|
24
|
+
|
|
25
|
+
#define TEST_TEAR_DOWN(group) void TEST_##group##_TEAR_DOWN(void);\
|
|
26
|
+
void TEST_##group##_TEAR_DOWN(void)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
#define TEST(group, name) \
|
|
30
|
+
void TEST_##group##_##name##_(void);\
|
|
31
|
+
void TEST_##group##_##name##_run(void);\
|
|
32
|
+
void TEST_##group##_##name##_run(void)\
|
|
33
|
+
{\
|
|
34
|
+
UnityTestRunner(TEST_##group##_SETUP,\
|
|
35
|
+
TEST_##group##_##name##_,\
|
|
36
|
+
TEST_##group##_TEAR_DOWN,\
|
|
37
|
+
"TEST(" #group ", " #name ")",\
|
|
38
|
+
TEST_GROUP_##group, #name,\
|
|
39
|
+
__FILE__, __LINE__);\
|
|
40
|
+
}\
|
|
41
|
+
void TEST_##group##_##name##_(void)
|
|
42
|
+
|
|
43
|
+
#define IGNORE_TEST(group, name) \
|
|
44
|
+
void TEST_##group##_##name##_(void);\
|
|
45
|
+
void TEST_##group##_##name##_run(void);\
|
|
46
|
+
void TEST_##group##_##name##_run(void)\
|
|
47
|
+
{\
|
|
48
|
+
UnityIgnoreTest("IGNORE_TEST(" #group ", " #name ")", TEST_GROUP_##group, #name);\
|
|
49
|
+
}\
|
|
50
|
+
void TEST_##group##_##name##_(void)
|
|
51
|
+
|
|
52
|
+
/* Call this for each test, insider the group runner */
|
|
53
|
+
#define RUN_TEST_CASE(group, name) \
|
|
54
|
+
{ void TEST_##group##_##name##_run(void);\
|
|
55
|
+
TEST_##group##_##name##_run(); }
|
|
56
|
+
|
|
57
|
+
/* This goes at the bottom of each test file or in a separate c file */
|
|
58
|
+
#define TEST_GROUP_RUNNER(group)\
|
|
59
|
+
void TEST_##group##_GROUP_RUNNER(void);\
|
|
60
|
+
void TEST_##group##_GROUP_RUNNER(void)
|
|
61
|
+
|
|
62
|
+
/* Call this from main */
|
|
63
|
+
#define RUN_TEST_GROUP(group)\
|
|
64
|
+
{ void TEST_##group##_GROUP_RUNNER(void);\
|
|
65
|
+
TEST_##group##_GROUP_RUNNER(); }
|
|
66
|
+
|
|
67
|
+
/* CppUTest Compatibility Macros */
|
|
68
|
+
#ifndef UNITY_EXCLUDE_CPPUTEST_ASSERTS
|
|
69
|
+
/* Sets a pointer and automatically restores it to its old value after teardown */
|
|
70
|
+
#define UT_PTR_SET(ptr, newPointerValue) UnityPointer_Set((void**)&(ptr), (void*)(newPointerValue), __LINE__)
|
|
71
|
+
#define TEST_ASSERT_POINTERS_EQUAL(expected, actual) TEST_ASSERT_EQUAL_PTR((expected), (actual))
|
|
72
|
+
#define TEST_ASSERT_BYTES_EQUAL(expected, actual) TEST_ASSERT_EQUAL_HEX8(0xff & (expected), 0xff & (actual))
|
|
73
|
+
#define FAIL(message) TEST_FAIL_MESSAGE((message))
|
|
74
|
+
#define CHECK(condition) TEST_ASSERT_TRUE((condition))
|
|
75
|
+
#define LONGS_EQUAL(expected, actual) TEST_ASSERT_EQUAL_INT((expected), (actual))
|
|
76
|
+
#define STRCMP_EQUAL(expected, actual) TEST_ASSERT_EQUAL_STRING((expected), (actual))
|
|
77
|
+
#define DOUBLES_EQUAL(expected, actual, delta) TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual))
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
/* You must compile with malloc replacement, as defined in unity_fixture_malloc_overrides.h */
|
|
81
|
+
void UnityMalloc_MakeMallocFailAfterCount(int countdown);
|
|
82
|
+
|
|
83
|
+
#endif /* UNITY_FIXTURE_H_ */
|