Managing test differences on 32/64-bit systems

Jacek Caban jacek at codeweavers.com
Sat Aug 14 10:36:29 CDT 2021


On 8/13/21 3:46 PM, Hugh McMaster wrote:
> I'm adding tests for SetCurrentConsoleFontEx to dlls/kernel32/tests/console.c.
>
> The behaviour is unusual on Windows and changes on 32-bit and 64-bit systems.
>
> For example, when deliberately testing failure, the 32-bit function
> returns ERROR_INVALID_HANDLE, while the 64-bit equivalent returns
> ERROR_INVALID_PARAMETER.
>
> In one particular test, the 32-bit function even returns non-zero
> (success), while the 64-bit function correctly returns zero (failure).
>
> Should I mark the the 32-bit return codes as broken?
>
> And what should I do about the zero/non-zero difference? Writing
> something like ok(!ret || broken(ret), ...) seems rather strange.
>
> I'm also wondering how to manage this when implementing the function.


When there is such difference, applications most likely don't depend on 
this behaviour, so you may probably just pick the one that makes more 
sense to you. It also means that it's not really important to have 
strict tests.

If one of behaviours is clearly broken, we may have it marked with 
something like broken(ret && sizeof(void *) == 4) so that the test is 
still strict on 64-bit systems (or the other way around). But if it's 
not clear that it's really broken, then dropping the test may be a 
better choice.


Thanks,

Jacek




More information about the wine-devel mailing list