|  | 
| 9 | 9 | VAR_USE_SUBDIR         = "USE_SUBDIR".freeze | 
| 10 | 10 | VAR_EXPECT_EXAMPLES    = "EXPECT_EXAMPLES".freeze | 
| 11 | 11 | VAR_EXPECT_UNITTESTS   = "EXPECT_UNITTESTS".freeze | 
|  | 12 | +VAR_ARDUINO_CI_PRE_UNIT_TEST_RUN_SCRIPT  = "ARDUINO_CI_PRE_UNIT_TEST_RUN_SCRIPT".freeze | 
|  | 13 | +VAR_ARDUINO_CI_POST_UNIT_TEST_RUN_SCRIPT = "ARDUINO_CI_POST_UNIT_TEST_RUN_SCRIPT".freeze | 
| 12 | 14 | 
 | 
| 13 | 15 | @failure_count = 0 | 
| 14 | 16 | @passfail = proc { |result| result ? "✓" : "✗" } | 
| @@ -62,6 +64,8 @@ def self.parse(options) | 
| 62 | 64 |         puts "       prior to any automated library installation or testing (e.g. to install unofficial libraries)" | 
| 63 | 65 |         puts " - #{VAR_CUSTOM_INIT_SCRIPT_SHELL} - if set, this will override the" | 
| 64 | 66 |         puts "       default shell (/bin/sh) used to execute #{VAR_CUSTOM_INIT_SCRIPT} with." | 
|  | 67 | +        puts " - #{VAR_ARDUINO_CI_PRE_UNIT_TEST_RUN_SCRIPT} and/or #{VAR_ARDUINO_CI_POST_UNIT_TEST_RUN_SCRIPT}" | 
|  | 68 | +        puts "       if set, run the script before/after each unit test run" | 
| 65 | 69 |         puts " - #{VAR_USE_SUBDIR} - if set, the script will install the library from this subdirectory of the cwd" | 
| 66 | 70 |         puts " - #{VAR_EXPECT_EXAMPLES} - if set, testing will fail if no example sketches are present" | 
| 67 | 71 |         puts " - #{VAR_EXPECT_UNITTESTS} - if set, testing will fail if no unit tests are present" | 
| @@ -425,6 +429,7 @@ def perform_unit_tests(cpp_library, file_config) | 
| 425 | 429 |   platforms.each do |p| | 
| 426 | 430 |     puts | 
| 427 | 431 |     compilers.each do |gcc_binary| | 
|  | 432 | +      run_custom_script(VAR_ARDUINO_CI_PRE_UNIT_TEST_RUN_SCRIPT, p, gcc_binary) | 
| 428 | 433 |       # before compiling the tests, build a shared library of everything except the test code | 
| 429 | 434 |       got_shared_library = true | 
| 430 | 435 |       attempt_multiline("Build shared library with #{gcc_binary} for #{p}") do | 
| @@ -459,6 +464,7 @@ def perform_unit_tests(cpp_library, file_config) | 
| 459 | 464 |           cpp_library.run_test_file(exe) | 
| 460 | 465 |         end | 
| 461 | 466 |       end | 
|  | 467 | +      run_custom_script(VAR_ARDUINO_CI_POST_UNIT_TEST_RUN_SCRIPT, p, gcc_binary) | 
| 462 | 468 |     end | 
| 463 | 469 |   end | 
| 464 | 470 | end | 
|  | 
0 commit comments