From 553e10da30e4453aa8927c4400dd0181bdc53c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1nos?= Date: Mon, 9 Jan 2023 19:28:08 +0100 Subject: [PATCH] Initialer Commit mit Test Programm --- .vscode/settings.json | 3 + build/test/cache/defines_dependency.yml | 3 + build/test/cache/input.yml | 242 ++++++++++++++++++ build/test/cache/test_example.c | 61 +++++ build/test/dependencies/cmock.d | 6 + build/test/dependencies/example.d | 1 + build/test/dependencies/test_example.d | 4 + build/test/dependencies/test_example_runner.d | 4 + build/test/dependencies/unity.d | 4 + build/test/out/c/cmock.o | Bin 0 -> 11248 bytes build/test/out/c/example.o | Bin 0 -> 3456 bytes build/test/out/c/test_example.o | Bin 0 -> 5944 bytes build/test/out/c/test_example_runner.o | Bin 0 -> 9120 bytes build/test/out/c/unity.o | Bin 0 -> 57160 bytes build/test/out/test_example.out | Bin 0 -> 58832 bytes build/test/preprocess/files/test_example.c | 61 +++++ build/test/preprocess/includes/test_example.c | 3 + build/test/results/test_example.pass | 18 ++ build/test/runners/test_example_runner.c | 81 ++++++ project-build.sh | 2 + project.yml | 101 ++++++++ src/c/example.c | 10 + src/c/example.h | 6 + test/c/test_example.c | 32 +++ test/support/.gitkeep | 0 25 files changed, 642 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 build/test/cache/defines_dependency.yml create mode 100644 build/test/cache/input.yml create mode 100644 build/test/cache/test_example.c create mode 100644 build/test/dependencies/cmock.d create mode 100644 build/test/dependencies/example.d create mode 100644 build/test/dependencies/test_example.d create mode 100644 build/test/dependencies/test_example_runner.d create mode 100644 build/test/dependencies/unity.d create mode 100644 build/test/out/c/cmock.o create mode 100644 build/test/out/c/example.o create mode 100644 build/test/out/c/test_example.o create mode 100644 build/test/out/c/test_example_runner.o create mode 100644 build/test/out/c/unity.o create mode 100755 build/test/out/test_example.out create mode 100644 build/test/preprocess/files/test_example.c create mode 100644 build/test/preprocess/includes/test_example.c create mode 100644 build/test/results/test_example.pass create mode 100644 build/test/runners/test_example_runner.c create mode 100644 project-build.sh create mode 100644 project.yml create mode 100644 src/c/example.c create mode 100644 src/c/example.h create mode 100644 test/c/test_example.c create mode 100644 test/support/.gitkeep diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..06b0842 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.dimInactiveRegions": false +} \ No newline at end of file diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml new file mode 100644 index 0000000..89da61c --- /dev/null +++ b/build/test/cache/defines_dependency.yml @@ -0,0 +1,3 @@ +--- +src/c/example.c: +- TEST diff --git a/build/test/cache/input.yml b/build/test/cache/input.yml new file mode 100644 index 0000000..3a17ccd --- /dev/null +++ b/build/test/cache/input.yml @@ -0,0 +1,242 @@ +--- +:project: + :use_exceptions: false + :use_mocks: true + :compile_threads: 1 + :test_threads: 1 + :use_test_preprocessor: true + :use_preprocessor_directives: false + :use_deep_dependencies: false + :generate_deep_dependencies: true + :auto_link_deep_dependencies: false + :test_file_prefix: test_ + :options_paths: [] + :release_build: false + :use_auxiliary_dependencies: true + :build_root: build + :which_ceedling: gem + :ceedling_version: 0.31.1 + :default_tasks: + - test:all +:release_build: + :use_assembly: false + :artifacts: [] +:paths: + :test: + - "+:test/**" + - "-:test/support" + :source: + - src/** + :support: + - test/support + :include: [] + :libraries: [] + :test_toolchain_include: [] + :release_toolchain_include: [] +:files: + :test: [] + :source: [] + :assembly: [] + :support: [] + :include: [] +:environment: +- :rake_columns: '120' +:defines: + :test: + - &1 [] + - TEST + :test_preprocess: + - *1 + - TEST + :release: [] + :release_preprocess: [] + :use_test_definition: false + :common: [] +:libraries: + :flag: "-l${1}" + :path_flag: "-L ${1}" + :test: [] + :test_preprocess: [] + :release: [] + :release_preprocess: [] + :placement: :end + :system: [] +:flags: {} +:extension: + :header: ".h" + :source: ".c" + :assembly: ".s" + :object: ".o" + :libraries: + - ".a" + - ".so" + :executable: ".out" + :map: ".map" + :list: ".lst" + :testpass: ".pass" + :testfail: ".fail" + :dependencies: ".d" +:unity: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] +:cmock: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] + :includes: [] + :mock_prefix: mock_ + :when_no_prototypes: :warn + :enforce_strict_ordering: true + :plugins: + - :ignore + - :callback + :treat_as: + uint8: HEX8 + uint16: HEX16 + uint32: UINT32 + int8: INT8 + bool: UINT8 + :mock_path: build/test/mocks + :verbosity: 3 + :unity_helper: false +:cexception: + :vendor_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor" + :defines: [] +:test_runner: + :includes: [] + :file_suffix: _runner +:tools: + :test_compiler: + :executable: gcc + :name: default_test_compiler + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-DGNU_COMPILER" + - "-g" + - '' + - -c "${1}" + - -o "${2}" + - "-MMD" + - -MF "${4}" + :test_fixture: + :executable: "${1}" + :name: default_test_fixture + :stderr_redirect: :auto + :background_exec: :none + :optional: false + :arguments: [] + :test_linker: + :executable: gcc + :name: default_test_linker + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - '' + - '"${1}"' + - "${5}" + - -o "${2}" + - '' + - "${4}" + - '' + :test_file_preprocessor: + :executable: gcc + :name: default_test_file_preprocessor + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - "-E" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - '"${1}"' + - -o "${2}" + :test_file_preprocessor_directives: + :executable: gcc + :name: default_test_file_preprocessor_directives + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - "-E" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - "-fdirectives-only" + - '"${1}"' + - -o "${2}" + :test_includes_preprocessor: + :executable: gcc + :name: default_test_includes_preprocessor + :stderr_redirect: :none + :background_exec: :none + :optional: false + :arguments: + - '' + - '' + - "-E" + - "-MM" + - "-MG" + - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR + - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE + - "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR + - "-D$": DEFINES_TEST_PREPROCESS + - "-DGNU_COMPILER" + - '"${1}"' +:test_compiler: + :arguments: [] +:test_linker: + :arguments: [] +:test_fixture: + :arguments: [] + :link_objects: [] +:test_includes_preprocessor: + :arguments: [] +:test_file_preprocessor: + :arguments: [] +:test_file_preprocessor_directives: + :arguments: [] +:test_dependencies_generator: + :arguments: [] +:release_compiler: + :arguments: [] +:release_linker: + :arguments: [] +:release_assembler: + :arguments: [] +:release_dependencies_generator: + :arguments: [] +:plugins: + :load_paths: + - "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins" + :enabled: + - stdout_pretty_tests_report + - module_generator + :display_raw_test_results: false + :stdout_pretty_tests_report_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report" + :module_generator_path: "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/module_generator" +:gcov: + :reports: + - HtmlDetailed + :gcovr: + :html_medium_threshold: 75 + :html_high_threshold: 90 +:module_generator: + :project_root: "./" + :source_root: src/ + :test_root: test/ diff --git a/build/test/cache/test_example.c b/build/test/cache/test_example.c new file mode 100644 index 0000000..4849938 --- /dev/null +++ b/build/test/cache/test_example.c @@ -0,0 +1,61 @@ +#include "src/c/example.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + + + +void test_runExampleTest(void) + +{ + + + + + + int result; + + int input = 1; + + + + + + + + result = something(input); + + + + + + + + UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(29), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/dependencies/cmock.d b/build/test/dependencies/cmock.d new file mode 100644 index 0000000..7d1cf5d --- /dev/null +++ b/build/test/dependencies/cmock.d @@ -0,0 +1,6 @@ +build/test/out/c/cmock.o: \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/example.d b/build/test/dependencies/example.d new file mode 100644 index 0000000..000875b --- /dev/null +++ b/build/test/dependencies/example.d @@ -0,0 +1 @@ +build/test/out/c/example.o: src/c/example.c src/c/example.h diff --git a/build/test/dependencies/test_example.d b/build/test/dependencies/test_example.d new file mode 100644 index 0000000..661b361 --- /dev/null +++ b/build/test/dependencies/test_example.d @@ -0,0 +1,4 @@ +build/test/out/c/test_example.o: test/c/test_example.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/c/example.h diff --git a/build/test/dependencies/test_example_runner.d b/build/test/dependencies/test_example_runner.d new file mode 100644 index 0000000..f06029a --- /dev/null +++ b/build/test/dependencies/test_example_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_example_runner.o: \ + build/test/runners/test_example_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/unity.d b/build/test/dependencies/unity.d new file mode 100644 index 0000000..e42504d --- /dev/null +++ b/build/test/dependencies/unity.d @@ -0,0 +1,4 @@ +build/test/out/c/unity.o: \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/out/c/cmock.o b/build/test/out/c/cmock.o new file mode 100644 index 0000000000000000000000000000000000000000..05e8e541a04db164e9293395287f605375657a05 GIT binary patch literal 11248 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 AU;qFB literal 0 HcmV?d00001 diff --git a/build/test/out/c/example.o b/build/test/out/c/example.o new file mode 100644 index 0000000000000000000000000000000000000000..b3b2c653c37397624b28a105435000f5e881522b GIT binary patch literal 3456 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 a-E#?qirpzzU`}!NA9DV`ZD~qExBoB7bhIk~ literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_example_runner.o b/build/test/out/c/test_example_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..3bfed1d1120e5a8de1aec729786e0ab7d647a5ea GIT binary patch literal 9120 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 GuKyoB$EW%L literal 0 HcmV?d00001 diff --git a/build/test/out/c/unity.o b/build/test/out/c/unity.o new file mode 100644 index 0000000000000000000000000000000000000000..d80b36629d9c89c05f0be576026b98ada1284593 GIT binary patch literal 57160 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 literal 0 HcmV?d00001 diff --git a/build/test/out/test_example.out b/build/test/out/test_example.out new file mode 100755 index 0000000000000000000000000000000000000000..1a1d98c385e5852953028deab8d7e163c44245b9 GIT binary patch literal 58832 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 literal 0 HcmV?d00001 diff --git a/build/test/preprocess/files/test_example.c b/build/test/preprocess/files/test_example.c new file mode 100644 index 0000000..4849938 --- /dev/null +++ b/build/test/preprocess/files/test_example.c @@ -0,0 +1,61 @@ +#include "src/c/example.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + + + +void test_runExampleTest(void) + +{ + + + + + + int result; + + int input = 1; + + + + + + + + result = something(input); + + + + + + + + UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(29), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/preprocess/includes/test_example.c b/build/test/preprocess/includes/test_example.c new file mode 100644 index 0000000..bbfee81 --- /dev/null +++ b/build/test/preprocess/includes/test_example.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- src/c/example.h diff --git a/build/test/results/test_example.pass b/build/test/results/test_example.pass new file mode 100644 index 0000000..87524e5 --- /dev/null +++ b/build/test/results/test_example.pass @@ -0,0 +1,18 @@ +--- +:source: + :path: test/c + :file: test_example.c +:successes: +- :test: test_runExampleTest + :line: 16 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 1 + :passed: 1 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0009594130001460144 diff --git a/build/test/runners/test_example_runner.c b/build/test/runners/test_example_runner.c new file mode 100644 index 0000000..440a31d --- /dev/null +++ b/build/test/runners/test_example_runner.c @@ -0,0 +1,81 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_runExampleTest(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_example.c"); + run_test(test_runExampleTest, "test_runExampleTest", 16); + + return UnityEnd(); +} diff --git a/project-build.sh b/project-build.sh new file mode 100644 index 0000000..bfaee8e --- /dev/null +++ b/project-build.sh @@ -0,0 +1,2 @@ +#Aktuell wird nur getestet +ceedling test:all \ No newline at end of file diff --git a/project.yml b/project.yml new file mode 100644 index 0000000..e253248 --- /dev/null +++ b/project.yml @@ -0,0 +1,101 @@ +--- + +# Notes: +# Sample project C code is not presently written to produce a release artifact. +# As such, release build options are disabled. +# This sample, therefore, only demonstrates running a collection of unit tests. + +:project: + :use_exceptions: FALSE + :use_test_preprocessor: TRUE + :use_auxiliary_dependencies: TRUE + :build_root: build +# :release_build: TRUE + :test_file_prefix: test_ + :which_ceedling: gem + :ceedling_version: 0.31.1 + :default_tasks: + - test:all + +#:test_build: +# :use_assembly: TRUE + +#:release_build: +# :output: MyApp.out +# :use_assembly: FALSE + +:environment: + +:extension: + :executable: .out + +:paths: + :test: + - +:test/** + - -:test/support + :source: + - src/** + :support: + - test/support + :libraries: [] + +:defines: + # in order to add common defines: + # 1) remove the trailing [] from the :common: section + # 2) add entries to the :common: section (e.g. :test: has TEST defined) + :common: &common_defines [] + :test: + - *common_defines + - TEST + :test_preprocess: + - *common_defines + - TEST + +:cmock: + :mock_prefix: mock_ + :when_no_prototypes: :warn + :enforce_strict_ordering: TRUE + :plugins: + - :ignore + - :callback + :treat_as: + uint8: HEX8 + uint16: HEX16 + uint32: UINT32 + int8: INT8 + bool: UINT8 + +# Add -gcov to the plugins list to make sure of the gcov plugin +# You will need to have gcov and gcovr both installed to make it work. +# For more information on these options, see docs in plugins/gcov +:gcov: + :reports: + - HtmlDetailed + :gcovr: + :html_medium_threshold: 75 + :html_high_threshold: 90 + +#:tools: +# Ceedling defaults to using gcc for compiling, linking, etc. +# As [:tools] is blank, gcc will be used (so long as it's in your system path) +# See documentation to configure a given toolchain for use + +# LIBRARIES +# These libraries are automatically injected into the build process. Those specified as +# common will be used in all types of builds. Otherwise, libraries can be injected in just +# tests or releases. These options are MERGED with the options in supplemental yaml files. +:libraries: + :placement: :end + :flag: "-l${1}" + :path_flag: "-L ${1}" + :system: [] # for example, you might list 'm' to grab the math library + :test: [] + :release: [] + +:plugins: + :load_paths: + - "#{Ceedling.load_path}" + :enabled: + - stdout_pretty_tests_report + - module_generator +... diff --git a/src/c/example.c b/src/c/example.c new file mode 100644 index 0000000..00a943e --- /dev/null +++ b/src/c/example.c @@ -0,0 +1,10 @@ +#include +#include +#include + +#include "example.h" + + +int something(int a){ + return a; +} diff --git a/src/c/example.h b/src/c/example.h new file mode 100644 index 0000000..d762748 --- /dev/null +++ b/src/c/example.h @@ -0,0 +1,6 @@ +#ifndef EXAMPLE_H +#define EXAMPLE_H + +int something(int a); + +#endif \ No newline at end of file diff --git a/test/c/test_example.c b/test/c/test_example.c new file mode 100644 index 0000000..8c6e062 --- /dev/null +++ b/test/c/test_example.c @@ -0,0 +1,32 @@ +#ifdef TEST +#include "unity.h" +//in example.h wird die Funktion deklariert +#include "example.h" + +//Vor- bzw. Nachbereitung +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +//Hier läuft der Test +void test_runExampleTest(void) +{ + /* arrange */ + //Hier die Werte eingeben + int result; + int input = 1; + + /* act */ + //Die Funktion wird ausgeführt + result = something(input); + + /* assert */ + //Vergleichen + TEST_ASSERT_EQUAL_INT(1, result); +} + +#endif // TEST \ No newline at end of file diff --git a/test/support/.gitkeep b/test/support/.gitkeep new file mode 100644 index 0000000..e69de29