diff --git a/tests/commands/test_test.py b/tests/commands/test_test.py index 38fb7eb2..4110188f 100644 --- a/tests/commands/test_test.py +++ b/tests/commands/test_test.py @@ -78,3 +78,87 @@ int main() { validate_cliresult(result) assert "Multiple ways to build" not in result.output + + +def test_setup_teardown_are_compilable(clirunner, validate_cliresult, tmpdir): + + project_dir = tmpdir.mkdir("project") + project_dir.join("platformio.ini").write( + """ +[env:embedded] +platform = ststm32 +framework = stm32cube +board = nucleo_f401re +test_transport = custom + +[env:native] +platform = native + +""" + ) + + test_dir = project_dir.mkdir("test") + test_dir.join("test_main.c").write( + """ +#include +#include + +void setUp(){ + printf("setUp called"); +} +void tearDown(){ + printf("tearDown called"); +} + +void dummy_test(void) { + TEST_ASSERT_EQUAL(1, 1); +} + +int main() { + UNITY_BEGIN(); + RUN_TEST(dummy_test); + UNITY_END(); +} +""" + ) + + native_result = clirunner.invoke( + cmd_test, ["-d", str(project_dir), "-e", "native"], + ) + + test_dir.join("unittest_transport.h").write( + """ +#ifdef __cplusplus +extern "C" { +#endif + +void unittest_uart_begin(){} +void unittest_uart_putchar(char c){} +void unittest_uart_flush(){} +void unittest_uart_end(){} + +#ifdef __cplusplus +} +#endif +""" + ) + + embedded_result = clirunner.invoke( + cmd_test, + [ + "-d", + str(project_dir), + "--without-testing", + "--without-uploading", + "-e", + "embedded", + ], + ) + + validate_cliresult(native_result) + validate_cliresult(embedded_result) + + assert all(f in native_result.output for f in ("setUp called", "tearDown called")) + assert all( + "[FAILED]" not in out for out in (native_result.output, embedded_result.output) + )