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
b446f749
Commit
b446f749
authored
Feb 25, 2009
by
Paul Vriens
Committed by
Alexandre Julliard
Feb 25, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winetest: Extend PATH if we have dlls that only come with .NET.
parent
ef5178af
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
1 deletion
+58
-1
main.c
programs/winetest/main.c
+58
-1
No files found.
programs/winetest/main.c
View file @
b446f749
...
@@ -44,6 +44,7 @@ struct wine_test
...
@@ -44,6 +44,7 @@ struct wine_test
int
subtest_count
;
int
subtest_count
;
char
**
subtests
;
char
**
subtests
;
char
*
exename
;
char
*
exename
;
char
*
maindllpath
;
};
};
char
*
tag
=
NULL
;
char
*
tag
=
NULL
;
...
@@ -61,6 +62,9 @@ static unsigned int nb_filters = 0;
...
@@ -61,6 +62,9 @@ static unsigned int nb_filters = 0;
static
HMODULE
hmscoree
;
static
HMODULE
hmscoree
;
static
HRESULT
(
WINAPI
*
pLoadLibraryShim
)(
LPCWSTR
,
LPCWSTR
,
LPVOID
,
HMODULE
*
);
static
HRESULT
(
WINAPI
*
pLoadLibraryShim
)(
LPCWSTR
,
LPCWSTR
,
LPVOID
,
HMODULE
*
);
/* To store the current PATH setting (related to .NET only provided dlls) */
static
char
*
curpath
;
/* check if test is being filtered out */
/* check if test is being filtered out */
static
BOOL
test_filtered_out
(
LPCSTR
module
,
LPCSTR
testname
)
static
BOOL
test_filtered_out
(
LPCSTR
module
,
LPCSTR
testname
)
{
{
...
@@ -341,6 +345,19 @@ static DWORD wait_process( HANDLE process, DWORD timeout )
...
@@ -341,6 +345,19 @@ static DWORD wait_process( HANDLE process, DWORD timeout )
return
WAIT_TIMEOUT
;
return
WAIT_TIMEOUT
;
}
}
static
void
append_path
(
const
char
*
path
)
{
char
*
newpath
;
newpath
=
xmalloc
(
strlen
(
curpath
)
+
1
+
strlen
(
path
)
+
1
);
strcpy
(
newpath
,
curpath
);
strcat
(
newpath
,
";"
);
strcat
(
newpath
,
path
);
SetEnvironmentVariableA
(
"PATH"
,
newpath
);
free
(
newpath
);
}
/* Run a command for MS milliseconds. If OUT != NULL, also redirect
/* Run a command for MS milliseconds. If OUT != NULL, also redirect
stdout to there.
stdout to there.
...
@@ -446,8 +463,16 @@ get_subtests (const char *tempdir, struct wine_test *test, LPTSTR res_name)
...
@@ -446,8 +463,16 @@ get_subtests (const char *tempdir, struct wine_test *test, LPTSTR res_name)
extract_test
(
test
,
tempdir
,
res_name
);
extract_test
(
test
,
tempdir
,
res_name
);
cmd
=
strmake
(
NULL
,
"%s --list"
,
test
->
exename
);
cmd
=
strmake
(
NULL
,
"%s --list"
,
test
->
exename
);
if
(
test
->
maindllpath
)
{
/* We need to add the path (to the main dll) to PATH */
append_path
(
test
->
maindllpath
);
}
status
=
run_ex
(
cmd
,
subfile
,
tempdir
,
5000
);
status
=
run_ex
(
cmd
,
subfile
,
tempdir
,
5000
);
err
=
GetLastError
();
err
=
GetLastError
();
if
(
test
->
maindllpath
)
{
/* Restore PATH again */
SetEnvironmentVariableA
(
"PATH"
,
curpath
);
}
free
(
cmd
);
free
(
cmd
);
if
(
status
==
-
2
)
if
(
status
==
-
2
)
...
@@ -538,11 +563,26 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
...
@@ -538,11 +563,26 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
strcpy
(
dllname
,
lpszName
);
strcpy
(
dllname
,
lpszName
);
*
strstr
(
dllname
,
testexe
)
=
0
;
*
strstr
(
dllname
,
testexe
)
=
0
;
wine_tests
[
nr_of_files
].
maindllpath
=
NULL
;
dll
=
LoadLibraryExA
(
dllname
,
NULL
,
LOAD_LIBRARY_AS_DATAFILE
);
dll
=
LoadLibraryExA
(
dllname
,
NULL
,
LOAD_LIBRARY_AS_DATAFILE
);
if
(
!
dll
&&
pLoadLibraryShim
)
if
(
!
dll
&&
pLoadLibraryShim
)
{
{
MultiByteToWideChar
(
CP_ACP
,
0
,
dllname
,
-
1
,
dllnameW
,
MAX_PATH
);
MultiByteToWideChar
(
CP_ACP
,
0
,
dllname
,
-
1
,
dllnameW
,
MAX_PATH
);
if
(
FAILED
(
pLoadLibraryShim
(
dllnameW
,
NULL
,
NULL
,
&
dll
)
))
dll
=
0
;
if
(
FAILED
(
pLoadLibraryShim
(
dllnameW
,
NULL
,
NULL
,
&
dll
)
))
dll
=
0
;
else
{
char
dllpath
[
MAX_PATH
];
/* We have a dll that cannot be found through LoadLibraryExA. This
* is the case for .NET provided dll's. We will add the directory
* where the dll resides to the PATH variable when dealing with
* the tests for this dll.
*/
GetModuleFileNameA
(
dll
,
dllpath
,
MAX_PATH
);
*
strrchr
(
dllpath
,
'\\'
)
=
'\0'
;
wine_tests
[
nr_of_files
].
maindllpath
=
xstrdup
(
dllpath
);
}
}
}
if
(
!
dll
)
{
if
(
!
dll
)
{
xprintf
(
" %s=dll is missing
\n
"
,
dllname
);
xprintf
(
" %s=dll is missing
\n
"
,
dllname
);
...
@@ -578,6 +618,12 @@ run_tests (char *logname)
...
@@ -578,6 +618,12 @@ run_tests (char *logname)
DWORD
strsize
;
DWORD
strsize
;
SECURITY_ATTRIBUTES
sa
;
SECURITY_ATTRIBUTES
sa
;
char
tmppath
[
MAX_PATH
],
tempdir
[
MAX_PATH
+
4
];
char
tmppath
[
MAX_PATH
],
tempdir
[
MAX_PATH
+
4
];
DWORD
needed
;
/* Get the current PATH only once */
needed
=
GetEnvironmentVariableA
(
"PATH"
,
NULL
,
0
);
curpath
=
xmalloc
(
needed
);
GetEnvironmentVariableA
(
"PATH"
,
curpath
,
needed
);
SetErrorMode
(
SEM_FAILCRITICALERRORS
|
SEM_NOGPFAULTERRORBOX
);
SetErrorMode
(
SEM_FAILCRITICALERRORS
|
SEM_NOGPFAULTERRORBOX
);
...
@@ -684,11 +730,21 @@ run_tests (char *logname)
...
@@ -684,11 +730,21 @@ run_tests (char *logname)
struct
wine_test
*
test
=
wine_tests
+
i
;
struct
wine_test
*
test
=
wine_tests
+
i
;
int
j
;
int
j
;
if
(
test
->
maindllpath
)
{
/* We need to add the path (to the main dll) to PATH */
append_path
(
test
->
maindllpath
);
}
for
(
j
=
0
;
j
<
test
->
subtest_count
;
j
++
)
{
for
(
j
=
0
;
j
<
test
->
subtest_count
;
j
++
)
{
report
(
R_STEP
,
"Running: %s:%s"
,
test
->
name
,
report
(
R_STEP
,
"Running: %s:%s"
,
test
->
name
,
test
->
subtests
[
j
]);
test
->
subtests
[
j
]);
run_test
(
test
,
test
->
subtests
[
j
],
logfile
,
tempdir
);
run_test
(
test
,
test
->
subtests
[
j
],
logfile
,
tempdir
);
}
}
if
(
test
->
maindllpath
)
{
/* Restore PATH again */
SetEnvironmentVariableA
(
"PATH"
,
curpath
);
}
}
}
report
(
R_DELTA
,
0
,
"Running: Done"
);
report
(
R_DELTA
,
0
,
"Running: Done"
);
...
@@ -697,6 +753,7 @@ run_tests (char *logname)
...
@@ -697,6 +753,7 @@ run_tests (char *logname)
logfile
=
0
;
logfile
=
0
;
remove_dir
(
tempdir
);
remove_dir
(
tempdir
);
free
(
wine_tests
);
free
(
wine_tests
);
free
(
curpath
);
return
logname
;
return
logname
;
}
}
...
...
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