Open stotzd opened 1 year ago
You will need to give a bit more than that, because here it seems like your compiler and build system cannot find the "DSP280x_Device.h" and not a CMock failure.
Here is a sample gpio.h
#ifndef GPIO_H
#define GPIO_H
#include <stdint.h>
#include <stdbool.h>
#include "DSP280x_Device.h"
#include "DSP280x_Examples.h"
static inline bool gpio_get(uint16_t gpio_id)
{
/* code here */
}
void GPIO_init_Startup( void );
#endif /* GPIO_H */
Which will turn into this generated file in the mock folder:
#include "../../CodeVault/inc/sys/DSP280x_Examples.h"
#include "test/support/DSP280x_Device.h"
_Bool
gpio_get(uint16_t gpio_id);
void GPIO_init_Startup( void );
For some reason, the compiler cannot find "test/support/DSP280x_Device.h" but it can find "DSP280x_Device.h". Is there something wrong with my project.yaml maybe?
---
# 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.0
: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:
- ../../CodeVault/src/**
- ../../CodeVault/inc/**
:support:
- test/support
:libraries: []
:flags:
:test:
:compile:
:*: # use :*: for all sources.
- -Wno-trampolines # nested functions useful for defining stub callbacks
: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
- OSCCLK_MHZ=20U
:test:
- *common_defines
- TEST
:test_preprocess:
- *common_defines
- TEST
:cmock:
:treat_externs: :include
:treat_inlines: :include
: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
:report_include: "^../../CodeVault/src.*"
#: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
- gcov
...
I am attaching an example that fails. But if you remove the treat_inlines from the project.yaml it works.
Is this related to the use_test_preprocessor setting? If I set it to FALSE, then it seems to compile. Is this correct?
I see similar issues and behaviour. Seems that
:use_test_preprocessor: FALSE
somehow works.
ceedling version Ceedling:: 0.31.1 Unity:: 2.5.4 CMock:: 2.5.4 CException:: 1.3.3
I have a file "DSP280x_Device.h" under the test/support/ folder.
If I use treat_inlines and mock "gpio.h" (which includes "DSP280x_Device.h"), the generated "gpio.h" file under the mock folder will add the test/support/ path, which causes the compile to fail.