I'm trying to set up ceedling with a zephyr based repo. I have a very basic example minimal repo and minimal test setup. I can run individual tests successfully with cmake files and west build -p -b native_posix test/src -t run -d test/build
However there are many test files and using ceedling would be more efficient.
Beyond pointing to my tests & source paths, I've added the following to the basic example project.yml
:tools:
:test_compiler:
:executable: west
:arguments:
- build
- -p
- -b native_posix
- test/src
- -t run
I know that my tests are able to run because if I intentionally fail a test I get the following output:
>>> ceedling
Test 'test_hello_world.c'
-------------------------
Generating runner for test_hello_world.c...
Compiling test_hello_world_runner.c...
Loading Zephyr default modules (Zephyr base).
FATAL ERROR: command exited with status 1: /usr/bin/cmake --build /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling --target run
ERROR: Shell command failed.
> Shell executed command:
'west build -p -b native_posix test/src -d test/build/ceedling -t run'
> Produced output:
-- west build: making build dir /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling pristine
-- west build: generating a build system
-- Application: /home/myname/Code/zephyr_simple_application/application/app/test/src
-- Found Python3: /usr/bin/python3.10 (found suitable exact version "3.10.6") found components: Interpreter
-- Cache files will be written to: /home/myname/.cache/zephyr
-- Zephyr version: 3.2.99 (/home/myname/Code/zephyr_simple_application/zephyr)
-- Found west (found suitable version "1.0.0", minimum required is "0.7.1")
-- Board: native_posix
-- Found toolchain: host (gcc/ld)
-- Found Dtc: /usr/bin/dtc (found suitable version "1.6.1", minimum required is "1.4.6")
-- Found BOARD.dts: /home/myname/Code/zephyr_simple_application/zephyr/boards/posix/native_posix/native_posix.dts
-- Generated zephyr.dts: /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/dts.cmake
Parsing /home/myname/Code/zephyr_simple_application/application/app/test/src/Kconfig
Loaded configuration '/home/myname/Code/zephyr_simple_application/zephyr/boards/posix/native_posix/native_posix_defconfig'
Merged configuration '/home/myname/Code/zephyr_simple_application/application/app/test/src/prj.conf'
Configuration saved to '/home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/.config'
Kconfig header saved to '/home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 11.3.0
-- The CXX compiler identification is GNU 11.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/gcc
-- Generating test runner /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/runner/runner_test_hello_world.c
-- Generating cmock for header /home/myname/Code/zephyr_simple_application/zephyr/include/zephyr/zephyr.h
-- Generating cmock for header /home/myname/Code/zephyr_simple_application/zephyr/include/zephyr/toolchain.h
-- Generating cmock for header /home/myname/Code/zephyr_simple_application/zephyr/include/zephyr/kernel_includes.h
-- Generating cmock for header /home/myname/Code/zephyr_simple_application/zephyr/include/zephyr/types.h
-- Generating cmock for header ../../include/imported.h
-- Configuring done
-- Generating done
-- Build files have been written to: /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling
-- west build: running target run
[1/114] Preparing syscall dependency handling
[2/114] Generating include/generated/version.h
-- Zephyr version: 3.2.99 (/home/myname/Code/zephyr_simple_application/zephyr), build: v3.2.99-ncs2
[3/114] Generating misc/generated/syscalls_subdirs.trigger
[4/114] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
[5/114] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
[6/114] Generating include/generated/driver-validation.h
[7/114] Generating include/generated/kobj-types-enum.h, include/generated/otype-to-str.h, include/generated/otype-to-size.h
[8/114] Building C object zephyr/CMakeFiles/offsets.dir/arch/posix/core/offsets/offsets.c.obj
[9/114] Generating include/generated/offsets.h
[10/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
[11/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
[12/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
[13/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
[14/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
[15/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
[16/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
[17/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32c_sw.c.obj
[18/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32_sw.c.obj
[19/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc16_sw.c.obj
[20/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
[21/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
[22/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
[23/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc8_sw.c.obj
[24/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc7_sw.c.obj
[25/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
[26/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
[27/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
[28/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf.c.obj
[29/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/ring_buffer.c.obj
[30/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
[31/114] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
[32/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/irq.c.obj
[33/114] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
[34/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/fatal.c.obj
[35/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/swap.c.obj
[36/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/cpuhalt.c.obj
[37/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/posix_core.c.obj
[38/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/native_rtc.c.obj
[39/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/timer_model.c.obj
[40/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/hw_models_top.c.obj
[41/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/main.c.obj
[42/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/tracing.c.obj
[43/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/irq_handler.c.obj
[44/114] Building C object zephyr/soc/posix/inf_clock/CMakeFiles/soc__posix__inf_clock.dir/soc.c.obj
[45/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/cmdline_common.c.obj
[46/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/cmdline.c.obj
[47/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/cpu_wait.c.obj
[48/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/irq_ctrl.c.obj
[49/114] Building C object zephyr/boards/posix/native_posix/CMakeFiles/boards__posix__native_posix.dir/hw_counter.c.obj
[50/114] Building C object modules/nrf/tests/unity/CMakeFiles/..__nrf__tests__unity.dir/home/myname/Code/zephyr_simple_application/test/cmock/src/cmock.c.obj
[51/114] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/native_posix_timer.c.obj
[52/114] Building C object modules/nrf/tests/unity/CMakeFiles/..__nrf__tests__unity.dir/home/myname/Code/zephyr_simple_application/test/cmock/vendor/unity/src/unity.c.obj
[53/114] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/native_posix_console.c.obj
[54/114] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
[55/114] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
[56/114] Building C object modules/nrf/tests/unity/CMakeFiles/..__nrf__tests__unity.dir/src/generic_teardown.c.obj
[57/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
[58/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
[59/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
[60/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
[61/114] Building C object zephyr/arch/arch/posix/core/CMakeFiles/arch__posix__core.dir/thread.c.obj
[62/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
[63/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
[64/114] Generating linker_zephyr_pre1.cmd
[65/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
[66/114] Generating linker_zephyr_pre0.cmd
[67/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
[68/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
[69/114] Linking C static library zephyr/soc/posix/inf_clock/libsoc__posix__inf_clock.a
[70/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
[71/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
[72/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
[73/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
[74/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
[75/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
[76/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
[77/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
[78/114] Linking C static library zephyr/drivers/console/libdrivers__console.a
[79/114] Linking C static library zephyr/drivers/timer/libdrivers__timer.a
[80/114] Linking C static library zephyr/boards/posix/native_posix/libboards__posix__native_posix.a
[81/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
[82/114] Linking C static library modules/nrf/tests/unity/lib..__nrf__tests__unity.a
[83/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
[84/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
[85/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
[86/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
[87/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
[88/114] Linking C static library zephyr/libzephyr.a
[89/114] Linking C static library zephyr/arch/arch/posix/core/libarch__posix__core.a
[90/114] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
[91/114] Linking C static library zephyr/kernel/libkernel.a
[92/114] Generating runner/runner_test_hello_world.c
[93/114] Generating mocks/zephyr/cmock_zephyr.c
Creating mock for zephyr...
WARNING: No function prototypes found!
[94/114] Generating mocks/zephyr/cmock_kernel_includes.c
Creating mock for kernel_includes...
WARNING: No function prototypes found!
[95/114] Generating mocks/imported/cmock_imported.c
Creating mock for imported...
[96/114] Generating mocks/zephyr/cmock_toolchain.c
Creating mock for toolchain...
WARNING: No function prototypes found!
[97/114] Generating mocks/zephyr/cmock_types.c
Creating mock for types...
WARNING: No function prototypes found!
[98/114] Building C object CMakeFiles/app.dir/home/myname/Code/zephyr_simple_application/application/app/src/imported.c.obj
[99/114] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
[100/114] Building C object CMakeFiles/app.dir/home/myname/Code/zephyr_simple_application/application/app/src/uut.c.obj
[101/114] Building C object CMakeFiles/app.dir/mocks/zephyr/cmock_toolchain.c.obj
[102/114] Building C object CMakeFiles/app.dir/mocks/zephyr/cmock_types.c.obj
[103/114] Building C object CMakeFiles/app.dir/mocks/imported/cmock_imported.c.obj
[104/114] Building C object CMakeFiles/app.dir/mocks/zephyr/cmock_kernel_includes.c.obj
[105/114] Building C object CMakeFiles/app.dir/mocks/zephyr/cmock_zephyr.c.obj
In file included from /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/mocks/zephyr/cmock_zephyr.h:6,
from /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/mocks/zephyr/cmock_zephyr.c:4:
/home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/mocks/zephyr/zephyr.h:9:2: warning: #warning "<zephyr/zephyr.h> is deprecated, include <zephyr/kernel.h> instead" [-Wcpp]
9 | #warning "<zephyr/zephyr.h> is deprecated, include <zephyr/kernel.h> instead"
| ^~~~~~~
[106/114] Building C object CMakeFiles/app.dir/runner/runner_test_hello_world.c.obj
[107/114] Building C object CMakeFiles/app.dir/test_hello_world.c.obj
/home/myname/Code/zephyr_simple_application/application/app/test/src/test_hello_world.c: In function ‘test__add_numbers’:
/home/myname/Code/zephyr_simple_application/application/app/test/src/test_hello_world.c:29:5: warning: implicit declaration of function ‘__cmock_double_me_CMockExpectAndReturn’ [-Wimplicit-function-declaration]
29 | __cmock_double_me_CMockExpectAndReturn(0, 2, 4);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[108/114] Linking C static library app/libapp.a
[109/114] Linking C executable zephyr/zephyr_pre0.elf
[110/114] Generating dev_handles.c
[111/114] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/misc/empty_file.c.obj
[112/114] Building C object zephyr/CMakeFiles/zephyr_pre1.dir/dev_handles.c.obj
[113/114] Linking C executable zephyr/zephyr.elf
[113/114] cd /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling && /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/zephyr.exe
*** Booting Zephyr OS build v3.2.99-ncs2 ***
test_hello_world.c:17:test__true:PASS
test_hello_world.c:24:test__fail:FAIL: Expected TRUE Was FALSE
test_hello_world.c:27:test__add_numbers:PASS
-----------------------
3 Tests 1 Failures 0 Ignored
FAIL
PROJECT EXECUTION FAILED
FAILED: zephyr/CMakeFiles/run_native /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/CMakeFiles/run_native
cd /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling && /home/myname/Code/zephyr_simple_application/application/app/test/build/ceedling/zephyr/zephyr.exe
ninja: build stopped: subcommand failed.
> And exited with status: [1].
#<Thread:0x000055dab7d3c2e0 /var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/par_map.rb:7 run> terminated with exception (report_on_exception is true):
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/tool_executor.rb:88:in `exec': ShellExecutionException (ShellExecutionException)
from /var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/generator.rb:99:in `generate_object_file'
from /var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/rules_tests.rake:17:in `block in <top (required)>'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
from /usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
from /var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/task_invoker.rb:97:in `block in invoke_test_objects'
from /var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/par_map.rb:10:in `block (2 levels) in par_map'
rake aborted!
ShellExecutionException: ShellExecutionException
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/tool_executor.rb:88:in `exec'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/generator.rb:99:in `generate_object_file'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/rules_tests.rake:17:in `block in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/task_invoker.rb:97:in `block in invoke_test_objects'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/par_map.rb:10:in `block (2 levels) in par_map'
Tasks: TOP => build/test/out/c/test_hello_world_runner.o
(See full trace by running task with --trace)
ERROR: Ceedling Failed
In there you can see
test_hello_world.c:17:test__true:PASS
test_hello_world.c:24:test__fail:FAIL: Expected TRUE Was FALSE
test_hello_world.c:27:test__add_numbers:PASS
-----------------------
3 Tests 1 Failures 0 Ignored
So I know the tests are actually able to run, find their includes, etc The problem comes when I remove the intentionally failing test and everything (presumably) passes. I get an error that the .o files don't exist (and its true, that path isn't there in the build directory)
ceedling
Test 'test_hello_world.c'
-------------------------
Generating runner for test_hello_world.c...
Compiling test_hello_world_runner.c...
Loading Zephyr default modules (Zephyr base).
Compiling test_hello_world.c...
Loading Zephyr default modules (Zephyr base).
Compiling unity.c...
Loading Zephyr default modules (Zephyr base).
Compiling uut.c...
Loading Zephyr default modules (Zephyr base).
Compiling cmock.c...
Loading Zephyr default modules (Zephyr base).
Linking test_hello_world.out...
/usr/bin/ld: cannot find build/test/out/c/test_hello_world_runner.o: No such file or directory
/usr/bin/ld: cannot find build/test/out/c/test_hello_world.o: No such file or directory
/usr/bin/ld: cannot find build/test/out/c/unity.o: No such file or directory
/usr/bin/ld: cannot find build/test/out/c/uut.o: No such file or directory
/usr/bin/ld: cannot find build/test/out/c/cmock.o: No such file or directory
collect2: error: ld returned 1 exit status
ERROR: Shell command failed.
> Shell executed command:
'gcc "build/test/out/c/test_hello_world_runner.o" "build/test/out/c/test_hello_world.o" "build/test/out/c/unity.o" "build/test/out/c/uut.o" "build/test/out/c/cmock.o" -o "build/test/out/test_hello_world.out"'
> And exited with status: [1].
NOTICE: If the linker reports missing symbols, the following may be to blame:
1. Test lacks #include statements corresponding to needed source files.
2. Project search paths do not contain source files corresponding to #include statements in the test.
3. Test does not #include needed mocks.
rake aborted!
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/generator.rb:151:in `rescue in generate_executable_file'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/generator.rb:137:in `generate_executable_file'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/rules_tests.rake:39:in `block in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/task_invoker.rb:107:in `invoke_test_results'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/test_invoker.rb:125:in `block in setup_and_invoke'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/test_invoker.rb:51:in `setup_and_invoke'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/tasks_tests.rake:13:in `block (2 levels) in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/bin/ceedling:345:in `block in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/bin/ceedling:332:in `<top (required)>'
/usr/local/bin/ceedling:25:in `load'
/usr/local/bin/ceedling:25:in `<main>'
Caused by:
ShellExecutionException: ShellExecutionException
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/tool_executor.rb:88:in `exec'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/generator.rb:136:in `generate_executable_file'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/rules_tests.rake:39:in `block in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/task_invoker.rb:107:in `invoke_test_results'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/test_invoker.rb:125:in `block in setup_and_invoke'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/test_invoker.rb:51:in `setup_and_invoke'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/lib/ceedling/tasks_tests.rake:13:in `block (2 levels) in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/bin/ceedling:345:in `block in <top (required)>'
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/bin/ceedling:332:in `<top (required)>'
/usr/local/bin/ceedling:25:in `load'
/usr/local/bin/ceedling:25:in `<main>'
Tasks: TOP => build/test/results/test_hello_world.pass => build/test/out/test_hello_world.out
(See full trace by running task with --trace)
ERROR: Ceedling Failed
Can anyone help me with what I need to add to the ceedling configuration so it can find the generated files correctly?