Skip to content

Commit 631392f

Browse files
unknownunknown
authored andcommitted
added error handling to tests, now they wont stop when one test fails... unless its a super duper massive failure
1 parent 60ccf1d commit 631392f

File tree

7 files changed

+82
-33
lines changed

7 files changed

+82
-33
lines changed

TESTS/API/AnalogIn/AnalogIn.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,21 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
3636
return verbose_test_setup_handler(number_of_cases);
3737
}
3838

39+
// Handle test failures, keep testing, dont stop
40+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
41+
greentea_case_failure_abort_handler(source, reason);
42+
return STATUS_CONTINUE;
43+
}
44+
3945
// Test cases
46+
// TODO: take pin names from config file or generate from pinmap file
4047
Case cases[] = {
41-
Case("Test Analog Input on A0", AnalogInput_Test<A0,A1,A2,A3,A4,A5>),
42-
Case("Test Analog Input on A1", AnalogInput_Test<A1,A2,A3,A4,A5,A0>),
43-
Case("Test Analog Input on A2", AnalogInput_Test<A2,A3,A4,A5,A0,A1>),
44-
Case("Test Analog Input on A3", AnalogInput_Test<A3,A4,A5,A0,A1,A2>),
45-
Case("Test Analog Input on A4", AnalogInput_Test<A4,A5,A0,A1,A2,A3>),
46-
Case("Test Analog Input on A5", AnalogInput_Test<A5,A0,A1,A2,A3,A4>),
48+
Case("Test Analog Input on A0", AnalogInput_Test<A0,A1,A2,A3,A4,A5>,greentea_failure_handler),
49+
Case("Test Analog Input on A1", AnalogInput_Test<A1,A2,A3,A4,A5,A0>,greentea_failure_handler),
50+
Case("Test Analog Input on A2", AnalogInput_Test<A2,A3,A4,A5,A0,A1>,greentea_failure_handler),
51+
Case("Test Analog Input on A3", AnalogInput_Test<A3,A4,A5,A0,A1,A2>,greentea_failure_handler),
52+
Case("Test Analog Input on A4", AnalogInput_Test<A4,A5,A0,A1,A2,A3>,greentea_failure_handler),
53+
Case("Test Analog Input on A5", AnalogInput_Test<A5,A0,A1,A2,A3,A4>,greentea_failure_handler),
4754
};
4855

4956
Specification specification(test_setup, cases);

TESTS/API/AnalogOut/AnalogOut.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
3434
return verbose_test_setup_handler(number_of_cases);
3535
}
3636

37+
// Handle test failures, keep testing, dont stop
3738
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
3839
greentea_case_failure_abort_handler(source, reason);
3940
return STATUS_CONTINUE;

TESTS/API/DigitalIO/DigitalIO.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,25 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
2626
return verbose_test_setup_handler(number_of_cases);
2727
}
2828

29+
// Handle test failures, keep testing, dont stop
30+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
31+
greentea_case_failure_abort_handler(source, reason);
32+
return STATUS_CONTINUE;
33+
}
34+
2935
// Test cases
36+
// TODO: take pinnames from config file
3037
Case cases[] = {
31-
Case("Testing Digital I/O on D2", DigitalIO_Test<D2,D3>),
32-
Case("Testing Digital I/O on D3", DigitalIO_Test<D3,D2>),
33-
Case("Testing Digital I/O on D4", DigitalIO_Test<D4,D5>),
34-
Case("Testing Digital I/O on D5", DigitalIO_Test<D5,D4>),
35-
Case("Testing Digital I/O on D6", DigitalIO_Test<D6,D7>),
36-
Case("Testing Digital I/O on D7", DigitalIO_Test<D7,D6>),
37-
Case("Testing Digital I/O on D8", DigitalIO_Test<D8,D9>),
38-
Case("Testing Digital I/O on D9", DigitalIO_Test<D9,D8>),
39-
Case("Testing Digital I/O on D0", DigitalIO_Test<D0,D1>),
40-
Case("Testing Digital I/O on D1", DigitalIO_Test<D1,D0>),
38+
Case("Testing Digital I/O on D2", DigitalIO_Test<D2,D3>,greentea_failure_handler),
39+
Case("Testing Digital I/O on D3", DigitalIO_Test<D3,D2>,greentea_failure_handler),
40+
Case("Testing Digital I/O on D4", DigitalIO_Test<D4,D5>,greentea_failure_handler),
41+
Case("Testing Digital I/O on D5", DigitalIO_Test<D5,D4>,greentea_failure_handler),
42+
Case("Testing Digital I/O on D6", DigitalIO_Test<D6,D7>,greentea_failure_handler),
43+
Case("Testing Digital I/O on D7", DigitalIO_Test<D7,D6>,greentea_failure_handler),
44+
Case("Testing Digital I/O on D8", DigitalIO_Test<D8,D9>,greentea_failure_handler),
45+
Case("Testing Digital I/O on D9", DigitalIO_Test<D9,D8>,greentea_failure_handler),
46+
Case("Testing Digital I/O on D0", DigitalIO_Test<D0,D1>,greentea_failure_handler),
47+
Case("Testing Digital I/O on D1", DigitalIO_Test<D1,D0>,greentea_failure_handler),
4148

4249
};
4350

TESTS/API/I2C/I2C.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,18 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
4848
return verbose_test_setup_handler(number_of_cases);
4949
}
5050

51+
// Handle test failures, keep testing, dont stop
52+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
53+
greentea_case_failure_abort_handler(source, reason);
54+
return STATUS_CONTINUE;
55+
}
56+
5157
// Test cases
5258
Case cases[] = {
53-
Case("Testing TMP102 Temperature Read",test_tmp102),
54-
Case("Testing EEProm Write",test_eeprom_W),
55-
Case("Testing EEProm Read",test_eeprom_R),
56-
// Case("Testing EEProm WR",test_eeprom_WR),
59+
Case("Testing TMP102 Temperature Read",test_tmp102,greentea_failure_handler),
60+
Case("Testing EEProm Write",test_eeprom_W,greentea_failure_handler),
61+
Case("Testing EEProm Read",test_eeprom_R,greentea_failure_handler),
62+
// Case("Testing EEProm WR",test_eeprom_WR,greentea_failure_handler),
5763
};
5864

5965
Specification specification(test_setup, cases);

TESTS/API/InterruptIn/InterruptIn.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,25 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
4949
return verbose_test_setup_handler(number_of_cases);
5050
}
5151

52+
// Handle test failures, keep testing, dont stop
53+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
54+
greentea_case_failure_abort_handler(source, reason);
55+
return STATUS_CONTINUE;
56+
}
57+
5258
// Test cases
59+
// TODO: take pins from pinnames.h or from config file
5360
Case cases[] = {
54-
Case("Test InterruptIn on D0", InterruptInTest<D0,D1>),
55-
Case("Test InterruptIn on D1", InterruptInTest<D1,D0>),
56-
Case("Test InterruptIn on D2", InterruptInTest<D2,D3>),
57-
Case("Test InterruptIn on D3", InterruptInTest<D3,D2>),
58-
Case("Test InterruptIn on D4", InterruptInTest<D4,D5>),
59-
Case("Test InterruptIn on D5", InterruptInTest<D5,D4>),
60-
Case("Test InterruptIn on D6", InterruptInTest<D6,D7>),
61-
Case("Test InterruptIn on D7", InterruptInTest<D7,D6>),
62-
Case("Test InterruptIn on D8", InterruptInTest<D8,D9>),
63-
Case("Test InterruptIn on D9", InterruptInTest<D9,D8>),
61+
Case("Test InterruptIn on D0", InterruptInTest<D0,D1>,greentea_failure_handler),
62+
Case("Test InterruptIn on D1", InterruptInTest<D1,D0>,greentea_failure_handler),
63+
Case("Test InterruptIn on D2", InterruptInTest<D2,D3>,greentea_failure_handler),
64+
Case("Test InterruptIn on D3", InterruptInTest<D3,D2>,greentea_failure_handler),
65+
Case("Test InterruptIn on D4", InterruptInTest<D4,D5>,greentea_failure_handler),
66+
Case("Test InterruptIn on D5", InterruptInTest<D5,D4>,greentea_failure_handler),
67+
Case("Test InterruptIn on D6", InterruptInTest<D6,D7>,greentea_failure_handler),
68+
Case("Test InterruptIn on D7", InterruptInTest<D7,D6>,greentea_failure_handler),
69+
Case("Test InterruptIn on D8", InterruptInTest<D8,D9>,greentea_failure_handler),
70+
Case("Test InterruptIn on D9", InterruptInTest<D9,D8>,greentea_failure_handler),
6471
};
6572

6673
Specification specification(test_setup, cases);

TESTS/API/SPI/SPI.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,15 @@ utest::v1::status_t test_setup(const size_t number_of_cases) {
3333
return verbose_test_setup_handler(number_of_cases);
3434
}
3535

36-
// // Test cases
36+
// Handle test failures, keep testing, dont stop
37+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
38+
greentea_case_failure_abort_handler(source, reason);
39+
return STATUS_CONTINUE;
40+
}
41+
42+
// Test cases
3743
Case cases[] = {
38-
Case("Testing SPI via SD Write", test_sd_write),
44+
Case("Testing SPI via SD Write", test_sd_write,greentea_failure_handler),
3945
};
4046

4147
Specification specification(test_setup, cases);

TESTS/API/UART/UART.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,30 @@ void test_uart_single(){
2828
TEST_ASSERT(true);
2929
}
3030

31+
// TODO: add more verbose tests
32+
// - different speeds (9600 / 115200 / ...etc)
33+
// - flush buffers
34+
// - write longer strings
35+
// - special characters
36+
// - send break characters
37+
// ...etc
38+
3139
utest::v1::status_t test_setup(const size_t number_of_cases) {
3240
// Setup Greentea using a reasonable timeout in seconds
3341
GREENTEA_SETUP(40, "default_auto");
3442
return verbose_test_setup_handler(number_of_cases);
3543
}
3644

45+
// Handle test failures, keep testing, dont stop
46+
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason) {
47+
greentea_case_failure_abort_handler(source, reason);
48+
return STATUS_CONTINUE;
49+
}
50+
3751
// Test cases
52+
// TODO: take pins from config file or from pinnames.h
3853
Case cases[] = {
39-
Case("Testing UART on D1/D0, single byte W/R ", test_uart_single),
54+
Case("Testing UART on D1/D0, single byte W/R ", test_uart_single, greentea_failure_handler),
4055
};
4156

4257
Specification specification(test_setup, cases);

0 commit comments

Comments
 (0)