Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
a580c6c2
Commit
a580c6c2
authored
Nov 19, 2008
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winetest: Allow to specify a subset of tests to run on the command line.
parent
db8783e7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
18 deletions
+56
-18
main.c
programs/winetest/main.c
+56
-18
No files found.
programs/winetest/main.c
View file @
a580c6c2
...
@@ -51,6 +51,35 @@ static const char whitespace[] = " \t\r\n";
...
@@ -51,6 +51,35 @@ static const char whitespace[] = " \t\r\n";
static
const
char
testexe
[]
=
"_test.exe"
;
static
const
char
testexe
[]
=
"_test.exe"
;
static
char
build_id
[
64
];
static
char
build_id
[
64
];
/* filters for running only specific tests */
static
char
*
filters
[
64
];
static
unsigned
int
nb_filters
=
0
;
/* check if test is being filtered out */
static
BOOL
test_filtered_out
(
LPCSTR
module
,
LPCSTR
testname
)
{
char
*
p
,
dllname
[
MAX_PATH
];
unsigned
int
i
,
len
;
strcpy
(
dllname
,
module
);
CharLowerA
(
dllname
);
p
=
strstr
(
dllname
,
testexe
);
if
(
p
)
*
p
=
0
;
len
=
strlen
(
dllname
);
if
(
!
nb_filters
)
return
FALSE
;
for
(
i
=
0
;
i
<
nb_filters
;
i
++
)
{
if
(
!
strncmp
(
dllname
,
filters
[
i
],
len
))
{
if
(
!
filters
[
i
][
len
])
return
FALSE
;
if
(
filters
[
i
][
len
]
!=
':'
)
continue
;
if
(
!
testname
||
!
strcmp
(
testname
,
&
filters
[
i
][
len
+
1
]
))
return
FALSE
;
}
}
return
TRUE
;
}
static
char
*
get_file_version
(
char
*
file_name
)
static
char
*
get_file_version
(
char
*
file_name
)
{
{
static
char
version
[
32
];
static
char
version
[
32
];
...
@@ -392,7 +421,8 @@ get_subtests (const char *tempdir, struct wine_test *test, LPTSTR res_name)
...
@@ -392,7 +421,8 @@ get_subtests (const char *tempdir, struct wine_test *test, LPTSTR res_name)
test
->
subtests
=
xrealloc
(
test
->
subtests
,
test
->
subtests
=
xrealloc
(
test
->
subtests
,
allocated
*
sizeof
(
char
*
));
allocated
*
sizeof
(
char
*
));
}
}
test
->
subtests
[
test
->
subtest_count
++
]
=
strdup
(
index
);
if
(
!
test_filtered_out
(
test
->
name
,
index
))
test
->
subtests
[
test
->
subtest_count
++
]
=
xstrdup
(
index
);
index
=
strtok
(
NULL
,
whitespace
);
index
=
strtok
(
NULL
,
whitespace
);
}
}
test
->
subtests
=
xrealloc
(
test
->
subtests
,
test
->
subtests
=
xrealloc
(
test
->
subtests
,
...
@@ -420,7 +450,7 @@ static BOOL CALLBACK
...
@@ -420,7 +450,7 @@ static BOOL CALLBACK
EnumTestFileProc
(
HMODULE
hModule
,
LPCTSTR
lpszType
,
EnumTestFileProc
(
HMODULE
hModule
,
LPCTSTR
lpszType
,
LPTSTR
lpszName
,
LONG_PTR
lParam
)
LPTSTR
lpszName
,
LONG_PTR
lParam
)
{
{
(
*
(
int
*
)
lParam
)
++
;
if
(
!
test_filtered_out
(
lpszName
,
NULL
))
(
*
(
int
*
)
lParam
)
++
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -432,6 +462,8 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
...
@@ -432,6 +462,8 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
char
dllname
[
MAX_PATH
];
char
dllname
[
MAX_PATH
];
HMODULE
dll
;
HMODULE
dll
;
if
(
test_filtered_out
(
lpszName
,
NULL
))
return
TRUE
;
/* Check if the main dll is present on this system */
/* Check if the main dll is present on this system */
CharLowerA
(
lpszName
);
CharLowerA
(
lpszName
);
strcpy
(
dllname
,
lpszName
);
strcpy
(
dllname
,
lpszName
);
...
@@ -582,7 +614,7 @@ static void
...
@@ -582,7 +614,7 @@ static void
usage
(
void
)
usage
(
void
)
{
{
fprintf
(
stderr
,
fprintf
(
stderr
,
"Usage: winetest [OPTION]...
\n\n
"
"Usage: winetest [OPTION]...
[TESTS]
\n\n
"
" -c console mode, no GUI
\n
"
" -c console mode, no GUI
\n
"
" -e preserve the environment
\n
"
" -e preserve the environment
\n
"
" -h print this message and exit
\n
"
" -h print this message and exit
\n
"
...
@@ -607,11 +639,14 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
...
@@ -607,11 +639,14 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
cmdLine
=
strtok
(
cmdLine
,
whitespace
);
cmdLine
=
strtok
(
cmdLine
,
whitespace
);
while
(
cmdLine
)
{
while
(
cmdLine
)
{
if
(
cmdLine
[
0
]
!=
'-'
||
cmdLine
[
2
])
{
if
(
cmdLine
[
0
]
!=
'-'
||
cmdLine
[
2
])
{
report
(
R_ERROR
,
"Not a single letter option: %s"
,
cmdLine
);
if
(
nb_filters
==
sizeof
(
filters
)
/
sizeof
(
filters
[
0
]))
usage
();
{
exit
(
2
);
report
(
R_ERROR
,
"Too many test filters specified"
);
exit
(
2
);
}
filters
[
nb_filters
++
]
=
xstrdup
(
cmdLine
);
}
}
switch
(
cmdLine
[
1
])
{
else
switch
(
cmdLine
[
1
])
{
case
'c'
:
case
'c'
:
report
(
R_TEXTMODE
);
report
(
R_TEXTMODE
);
interactive
=
0
;
interactive
=
0
;
...
@@ -672,21 +707,24 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
...
@@ -672,21 +707,24 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
SetEnvironmentVariableA
(
"WINETEST_REPORT_SUCCESS"
,
"0"
);
SetEnvironmentVariableA
(
"WINETEST_REPORT_SUCCESS"
,
"0"
);
}
}
while
(
!
tag
)
{
if
(
!
nb_filters
)
/* don't submit results when filtering */
if
(
!
interactive
)
{
report
(
R_FATAL
,
"Please specify a tag (-t option) if "
while
(
!
tag
)
{
"running noninteractive!"
);
if
(
!
interactive
)
if
(
guiAskTag
()
==
IDABORT
)
exit
(
1
);
report
(
R_FATAL
,
"Please specify a tag (-t option) if "
}
"running noninteractive!"
);
report
(
R_TAG
);
if
(
guiAskTag
()
==
IDABORT
)
exit
(
1
);
}
report
(
R_TAG
);
if
(
!
build_id
[
0
])
if
(
!
build_id
[
0
])
report
(
R_WARNING
,
"You won't be able to submit results without a valid build id.
\n
"
report
(
R_WARNING
,
"You won't be able to submit results without a valid build id.
\n
"
"To submit results, winetest needs to be built from a git checkout."
);
"To submit results, winetest needs to be built from a git checkout."
);
}
if
(
!
logname
)
{
if
(
!
logname
)
{
logname
=
run_tests
(
NULL
);
logname
=
run_tests
(
NULL
);
if
(
build_id
[
0
]
&&
if
(
build_id
[
0
]
&&
!
nb_filters
&&
report
(
R_ASK
,
MB_YESNO
,
"Do you want to submit the test results?"
)
==
IDYES
)
report
(
R_ASK
,
MB_YESNO
,
"Do you want to submit the test results?"
)
==
IDYES
)
if
(
!
send_file
(
logname
)
&&
!
DeleteFileA
(
logname
))
if
(
!
send_file
(
logname
)
&&
!
DeleteFileA
(
logname
))
report
(
R_WARNING
,
"Can't remove logfile: %u"
,
GetLastError
());
report
(
R_WARNING
,
"Can't remove logfile: %u"
,
GetLastError
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment