winetest: Add option -x to extract all test.

This commit is contained in:
Detlef Riekenberg 2009-04-17 22:02:26 +02:00 committed by Alexandre Julliard
parent 1f07bc02c1
commit dc0beeb976
1 changed files with 53 additions and 3 deletions

View File

@ -769,6 +769,48 @@ static BOOL WINAPI ctrl_handler(DWORD ctrl_type)
return FALSE; return FALSE;
} }
static BOOL CALLBACK
extract_only_proc (HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam)
{
const char *target_dir = (const char *)lParam;
char filename[MAX_PATH];
if (test_filtered_out( lpszName, NULL )) return TRUE;
strcpy(filename, lpszName);
CharLowerA(filename);
extract_test( &wine_tests[nr_of_files], target_dir, filename );
nr_of_files++;
return TRUE;
}
static void extract_only (const char *target_dir)
{
BOOL res;
report (R_DIR, target_dir);
res = CreateDirectoryA( target_dir, NULL );
if (!res && GetLastError() != ERROR_ALREADY_EXISTS)
report (R_FATAL, "Could not create directory: %s (%d)", target_dir, GetLastError ());
nr_of_files = 0;
report (R_STATUS, "Counting tests");
if (!EnumResourceNames (NULL, MAKEINTRESOURCE(TESTRES), EnumTestFileProc, (LPARAM)&nr_of_files))
report (R_FATAL, "Can't enumerate test files: %d", GetLastError ());
wine_tests = xmalloc (nr_of_files * sizeof wine_tests[0] );
report (R_STATUS, "Extracting tests");
report (R_PROGRESS, 0, nr_of_files);
nr_of_files = 0;
if (!EnumResourceNames (NULL, MAKEINTRESOURCE(TESTRES), extract_only_proc, (LPARAM)target_dir))
report (R_FATAL, "Can't enumerate test files: %d", GetLastError ());
report (R_DELTA, 0, "Extracting: Done");
}
static void static void
usage (void) usage (void)
{ {
@ -783,12 +825,14 @@ usage (void)
" -q quiet mode, no output at all\n" " -q quiet mode, no output at all\n"
" -o FILE put report into FILE, do not submit\n" " -o FILE put report into FILE, do not submit\n"
" -s FILE submit FILE, do not run tests\n" " -s FILE submit FILE, do not run tests\n"
" -t TAG include TAG of characters [-.0-9a-zA-Z] in the report\n"); " -t TAG include TAG of characters [-.0-9a-zA-Z] in the report\n"
" -x DIR Extract tests to DIR (default: .\\wct) and exit\n");
} }
int main( int argc, char *argv[] ) int main( int argc, char *argv[] )
{ {
char *logname = NULL; char *logname = NULL;
const char *extract = NULL;
const char *cp, *submit = NULL; const char *cp, *submit = NULL;
int reset_env = 1; int reset_env = 1;
int poweroff = 0; int poweroff = 0;
@ -797,7 +841,7 @@ int main( int argc, char *argv[] )
if (!LoadStringA( 0, IDS_BUILD_ID, build_id, sizeof(build_id) )) build_id[0] = 0; if (!LoadStringA( 0, IDS_BUILD_ID, build_id, sizeof(build_id) )) build_id[0] = 0;
for (i = 1; argv[i]; i++) for (i = 1; i < argc && argv[i]; i++)
{ {
if (!strcmp(argv[i], "--help")) { if (!strcmp(argv[i], "--help")) {
usage (); usage ();
@ -867,13 +911,19 @@ int main( int argc, char *argv[] )
exit (2); exit (2);
} }
break; break;
case 'x':
if (!(extract = argv[++i]))
extract = ".\\wct";
extract_only (extract);
break;
default: default:
report (R_ERROR, "invalid option: -%c", argv[i][1]); report (R_ERROR, "invalid option: -%c", argv[i][1]);
usage (); usage ();
exit (2); exit (2);
} }
} }
if (!submit) { if (!submit && !extract) {
report (R_STATUS, "Starting up"); report (R_STATUS, "Starting up");
if (!running_on_visible_desktop ()) if (!running_on_visible_desktop ())