[PATCH 0/1] MR8395: winetest: Fail just if output_size exceeds the limit.
CI is getting now near succeeding runs, but still shows failure. This seems to be, because [here](https://gitlab.winehq.org/wine/wine/-/blob/e9dcdf38041a1911d37117e0219dced5b...) it compares with unfiltered `size`: ``` if (status || size > MAX_OUTPUT_SIZE) failures++; ``` But it does not print the error before, because it compares [there](https://gitlab.winehq.org/wine/wine/-/blob/e9dcdf38041a1911d37117e0219dced5b...) with `output_size`: ``` if (output_size > MAX_OUTPUT_SIZE) xprintf( "%s:%s:%04lx The test prints too much data (%lu bytes)\n", test->name, subtest, pid, size ); ``` This patch does change this and increases the failures just when output_size exceeds the maximum. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8395
From: Bernhard Übelacker <bernhardu(a)mailbox.org> --- programs/winetest/main.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/programs/winetest/main.c b/programs/winetest/main.c index 755e4eb6e2c..7ab946e5950 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -927,16 +927,15 @@ static void *filter_data( const char *data, DWORD size, DWORD *output_size ) } static void report_test_done( struct wine_test *test, const char *subtest, const char *file, DWORD pid, DWORD ticks, - HANDLE out_file, UINT status, const char *data, DWORD size ) + HANDLE out_file, UINT status, const char *data, DWORD size, DWORD *output_size ) { char *filtered_data; - DWORD output_size; - if (!(filtered_data = filter_data( data, size, &output_size ))) return; + if (!(filtered_data = filter_data( data, size, output_size ))) return; - if (quiet_mode <= 1 || status || output_size > MAX_OUTPUT_SIZE) WriteFile( out_file, data, size, &size, NULL ); + if (quiet_mode <= 1 || status || *output_size > MAX_OUTPUT_SIZE) WriteFile( out_file, data, size, &size, NULL ); xprintf( "%s:%s:%04lx done (%d) in %lds %luB\n", test->name, subtest, pid, status, ticks / 1000, size ); - if (output_size > MAX_OUTPUT_SIZE) xprintf( "%s:%s:%04lx The test prints too much data (%lu bytes)\n", test->name, subtest, pid, size ); + if (*output_size > MAX_OUTPUT_SIZE) xprintf( "%s:%s:%04lx The test prints too much data (%lu bytes)\n", test->name, subtest, pid, size ); if (filtered_data && junit) { @@ -1028,7 +1027,7 @@ static void report_test_done( struct wine_test *test, const char *subtest, const output( junit, "<system-out>Test exited with status %d</system-out><failure/>", status ); output( junit, "</testcase>\n" ); } - if (output_size > MAX_OUTPUT_SIZE) + if (*output_size > MAX_OUTPUT_SIZE) { output( junit, " <testcase classname=\"%s:%s\" name=\"%s:%s output overflow\" file=\"%s\" assertions=\"%d\" time=\"%f\">", test->name, subtest, test->name, subtest, file, total, ticks / 1000.0 ); @@ -1065,7 +1064,7 @@ run_test (struct wine_test* test, const char* subtest, HANDLE out_file, const ch char *data, tmpname[MAX_PATH]; HANDLE tmpfile = create_temp_file( tmpname ); int status; - DWORD pid, size, start = GetTickCount(); + DWORD pid, size, output_size = 0, start = GetTickCount(); char *cmd = strmake("%s %s", test->exename, subtest); report_test_start( test, subtest, file ); @@ -1077,10 +1076,10 @@ run_test (struct wine_test* test, const char* subtest, HANDLE out_file, const ch free(cmd); data = flush_temp_file( tmpname, tmpfile, &size ); - report_test_done( test, subtest, file, pid, GetTickCount() - start, out_file, status, data, size ); + report_test_done( test, subtest, file, pid, GetTickCount() - start, out_file, status, data, size, &output_size ); free( data ); - if (status || size > MAX_OUTPUT_SIZE) failures++; + if (status || output_size > MAX_OUTPUT_SIZE) failures++; } if (failures) report (R_STATUS, "Running tests - %u failures", failures); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8395
participants (1)
-
Bernhard Übelacker