Skip to content

Commit

Permalink
Fix test_runner.c modern warning (#3451)
Browse files Browse the repository at this point in the history
  • Loading branch information
SBird1337 authored Oct 23, 2023
2 parents 3b8446d + b0b6e16 commit 4aabd09
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 13 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@ ELF = $(ROM:.gba=.elf)
MAP = $(ROM:.gba=.map)
SYM = $(ROM:.gba=.sym)

ifeq ($(MODERN),0)
TEST_OBJ_DIR_NAME := build/test
else
TEST_OBJ_DIR_NAME := build/modern-test
endif
TESTELF = $(ROM:.gba=-test.elf)
HEADLESSELF = $(ROM:.gba=-test-headless.elf)

Expand Down
1 change: 1 addition & 0 deletions include/test/test.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct TestRunnerState
u8 expectedResult;
bool8 expectLeaks:1;
bool8 inBenchmark:1;
bool8 tearDown:1;
u32 timeoutSeconds;
};

Expand Down
28 changes: 21 additions & 7 deletions test/test_runner.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ static bool32 PrefixMatch(const char *pattern, const char *string)
enum
{
STATE_INIT,
STATE_NEXT_TEST,
STATE_ASSIGN_TEST,
STATE_RUN_TEST,
STATE_REPORT_RESULT,
STATE_NEXT_TEST,
STATE_EXIT,
};

Expand Down Expand Up @@ -152,17 +153,15 @@ void CB2_TestRunner(void)
}
else
{
gTestRunnerState.state = STATE_NEXT_TEST;
gTestRunnerState.test = __start_tests - 1;
gTestRunnerState.state = STATE_ASSIGN_TEST;
gTestRunnerState.test = __start_tests;
}
gTestRunnerState.exitCode = 0;
gTestRunnerState.skipFilename = NULL;

break;

case STATE_NEXT_TEST:
gTestRunnerState.test++;

case STATE_ASSIGN_TEST:
if (gTestRunnerState.test == __stop_tests)
{
gTestRunnerState.state = STATE_EXIT;
Expand All @@ -172,6 +171,7 @@ void CB2_TestRunner(void)
if (gTestRunnerState.test->runner != &gAssumptionsRunner
&& !PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name))
{
gTestRunnerState.state = STATE_NEXT_TEST;
return;
}

Expand All @@ -191,6 +191,8 @@ void CB2_TestRunner(void)
sCurrentTest.address = (uintptr_t)gTestRunnerState.test;
sCurrentTest.state = CURRENT_TEST_STATE_ESTIMATE;

// If AssignCostToRunner fails, we want to report the failure.
gTestRunnerState.state = STATE_REPORT_RESULT;
if (AssignCostToRunner() == gTestRunnerI)
gTestRunnerState.state = STATE_RUN_TEST;
else
Expand All @@ -204,7 +206,10 @@ void CB2_TestRunner(void)
SeedRng(0);
SeedRng2(0);
if (gTestRunnerState.test->runner->setUp)
{
gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data);
gTestRunnerState.tearDown = TRUE;
}
// NOTE: Assumes that the compiler interns __FILE__.
if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) // Assumption fails for tests in this file.
{
Expand All @@ -216,13 +221,17 @@ void CB2_TestRunner(void)
gTestRunnerState.test->runner->run(gTestRunnerState.test->data);
}
break;

case STATE_REPORT_RESULT:
REG_TM2CNT_H = 0;

gTestRunnerState.state = STATE_NEXT_TEST;

if (gTestRunnerState.test->runner->tearDown)
if (gTestRunnerState.tearDown && gTestRunnerState.test->runner->tearDown)
{
gTestRunnerState.test->runner->tearDown(gTestRunnerState.test->data);
gTestRunnerState.tearDown = FALSE;
}

if (gTestRunnerState.result == TEST_RESULT_PASS
&& !gTestRunnerState.expectLeaks)
Expand Down Expand Up @@ -342,6 +351,11 @@ void CB2_TestRunner(void)

break;

case STATE_NEXT_TEST:
gTestRunnerState.state = STATE_ASSIGN_TEST;
gTestRunnerState.test++;
break;

case STATE_EXIT:
MgbaExit_(gTestRunnerState.exitCode);
break;
Expand Down
19 changes: 13 additions & 6 deletions tools/mgba-rom-test-hydra/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* parses the output to display human-readable progress.
*
* Output lines starting with "GBA Debug: :" are parsed as commands to
* Hydra, other output lines starting with "GBA Debug: " are parsed as
* output from the current test, and any other lines are parsed as
* output from the mgba-rom-test process itself.
* Hydra, other output lines starting with "GBA Debug: " or with "GBA: "
* are parsed as output from the current test, and any other lines are
* parsed as output from the mgba-rom-test process itself.
*
* COMMANDS
* N: Sets the test name to the remainder of the line.
Expand Down Expand Up @@ -75,10 +75,17 @@ static void handle_read(int i, struct Runner *runner)
{
eol++;
size_t n = eol - sol;
if (runner->input_buffer_size >= strlen("GBA Debug: ")
&& !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: ")))
char *soc;
if (runner->input_buffer_size >= strlen("GBA: ")
&& !strncmp(sol, "GBA: ", strlen("GBA: ")))
{
char *soc = sol + strlen("GBA Debug: ");
soc = sol + strlen("GBA: ");
goto buffer_output;
}
else if (runner->input_buffer_size >= strlen("GBA Debug: ")
&& !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: ")))
{
soc = sol + strlen("GBA Debug: ");
if (soc[0] == ':')
{
switch (soc[1])
Expand Down

0 comments on commit 4aabd09

Please sign in to comment.