On 11/13/05, Saulius Krasuckas saulius2@ar.fi.lt wrote:
As far as we cannot handle exceptions in wine tests easily, this is the only way to make it running successfully.
Is there no way to check what version we're running, and only run these if the version is greather than win98? This patch removes several tests that do run on NT, which is the version we're running at by default now. You could use a BOOL isNT and set it as so:
isNT = GetVersion() < 0x80000000 ? 1 : 0;
or something similar, and then check isNT for tests that fail on win98.
-- James Hawkins
* On Sun, 13 Nov 2005, James Hawkins wrote:
- On 11/13/05, Saulius Krasuckas saulius2@ar.fi.lt wrote:
As far as we cannot handle exceptions in wine tests easily, this is the only way to make it running successfully.
Is there no way to check what version we're running, and only run these if the version is greather than win98?
Of course there is such way.
This patch removes several tests that do run on NT, which is the version we're running at by default now. You could use a BOOL isNT and set it as so:
isNT = GetVersion() < 0x80000000 ? 1 : 0;
Ask Alexandre, not me then. ;-)
AFAIR, he or someone else told me that isNT should be set by testing real behaviour of API, not by using GetVersion(). As the behaviour difference materializes itself in a shape of unhandled exception, we should catch it. Are we able do it in Wine easily? I think the answer is known.
or something similar, and then check isNT for tests that fail on win98.
Not only the NT and 9x cases shows the difference. It may pop up using different versions of a DLL being tested on the same platform also.
So then we should combine this boolean with a table of versions to know exactly what we can test w/o catching unhandled xcpts. Maybe winetest_ok() function can be the target. Are you going to incorporate such table into the tests of every DLL?
Or else our tests will start looking ugly. I even think some of them already *are* looking that way. :-/
Saulius Krasuckas wrote:
AFAIR, he or someone else told me that isNT should be set by testing real behaviour of API, not by using GetVersion(). As the behaviour difference materializes itself in a shape of unhandled exception, we should catch it. Are we able do it in Wine easily? I think the answer is known.
The recommended thing to do is check for something that can hint of bad things to happen.
regards, Jakob
* On Mon, 14 Nov 2005, Jakob Eriksson wrote:
- Saulius Krasuckas wrote:
isNT should be set by testing real behaviour of API, not by using GetVersion().
The recommended thing to do is check for something that can hint of bad things to happen.
Yes, plus that something and GetVersion() doesn't hint that:
(GetVersion() < 0x80000000) gives 0 both under Win98 SE and WinME. Test crashes under Win98SE but it doesn't under WinME. I am sure, the versions of crypt32.dll on both boxes are different.
I see no API-related tricks, which would help in such cases. Except for tested DLL version check, maybe. But that may be too hard, too:
we should know not only the version of DLL, isNT value and tested function name, but we should also see what parameters and what their values can crash. This would require a 5-dimensional array of strings, I'd say.
Would anynone here like to maintain such beast?
Saulius Krasuckas wrote:
- On Mon, 14 Nov 2005, Jakob Eriksson wrote:
- Saulius Krasuckas wrote:
isNT should be set by testing real behaviour of API, not by using GetVersion().
The recommended thing to do is check for something that can hint of bad things to happen.
Yes, plus that something and GetVersion() doesn't hint that:
(GetVersion() < 0x80000000) gives 0 both under Win98 SE and WinME. Test crashes under Win98SE but it doesn't under WinME. I am sure, the versions of crypt32.dll on both boxes are different.
Yes, GetVersion() doesn't hint anything.
I see no API-related tricks, which would help in such cases. Except for tested DLL version check, maybe. But that may be too hard, too:
Proposal:
Add a mechanism for detecting running a test several times. The first time serving the purpose of checking if the test crashes or not. If the test crashes, it is run again, but with an argument telling it that it crashed last time.
This information is used to hint the test to avoid whatever it feels should be avoided.
we should know not only the version of DLL, isNT value and tested function name, but we should also see what parameters and what their values can crash. This would require a 5-dimensional array of strings, I'd say.
Would anynone here like to maintain such beast?
I'm crazy enough, but probably has too little time. So no.
regards, Jakob
* On Mon, 14 Nov 2005, Jakob Eriksson wrote:
- Saulius Krasuckas wrote:
- On Mon, 14 Nov 2005, Jakob Eriksson wrote:
The recommended thing to do is check for something that can hint of bad things to happen.
(GetVersion() < 0x80000000) gives 0 both under Win98 SE and WinME. Test crashes under Win98SE but it doesn't under WinME. I am sure, the versions of crypt32.dll on both boxes are different.
Proposal:
Add a mechanism for detecting running a test several times.
The first time serving the purpose of checking if the test crashes or not. If the test crashes, it is run again, but with an argument telling it that it crashed last time.
Nice shot. :) But lets look further.
This information is used to hint the test to avoid whatever it feels should be avoided.
Ok, and this way we check only one crash point. My patches commented out 8 such points. Maybe it's not a problem to rerun every test a dozen of times, but where should we put information about every different crash? Sounds like a small DB again. :-/
we should know not only the version of DLL, isNT value and tested function name, but we should also see what parameters and what their values can crash. This would require a 5-dimensional array of strings, I'd say.
Would anynone here like to maintain such beast?
I'm crazy enough, but probably has too little time. So no.
:-] I wouldn't too.
* On Mon, 14 Nov 2005, Saulius Krasuckas wrote:
- On Mon, 14 Nov 2005, Jakob Eriksson wrote:
- Saulius Krasuckas wrote:
isNT should be set by testing real behaviour of API, not by using GetVersion().
The recommended thing to do is check for something that can hint of bad things to happen.
Yes, plus that something and GetVersion() doesn't hint that:
^^^^^^^^^^^^^^^^^^^ (Throw that away, that's leftover from edited but unfinished statement. Sorry)
(GetVersion() < 0x80000000) gives 0 both under Win98 SE and WinME. Test crashes under Win98SE but it doesn't under WinME. I am sure, the versions of crypt32.dll on both boxes are different.