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
@@ -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_ */
|