winspool.drv: Conformance-Tests

Detlef Riekenberg wine.dev at web.de
Thu Aug 18 12:14:06 CDT 2005


Felix Nawothnig wrote:

> > While rewriting the conformance-tests for winspool.drv, how should we
> > handle this bugs / features ?
> a) ... 
> b) ...
> c) ...
> Disclaimer: These are my personal guidelines, so treat them as such. :-)

Thanks for your hints. I will change some Tests to trace, when i check
for the undocumented results. 
In my case, SetLastError() is used, when the Function fails (documented)
and also, when the Function returned SUCCESS (undocumented).


> Just check this on NT then, but avoid using GetVersion() - I'd suggest 
> to do something like:

That was my Test:

    /* Test for BUG in win9x and wine: Level is not checked */
    if((result != FALSE) && 
         (strlen(buffer) == (exact-1)))
    {
        todo("windows")
        {
            todo_wine
            {
                ok(0, "BUG in win9x and wine: Invalid Level '0' is" \
                    " not checked (valid Level is '1')\n");
            }
        }
    }else
    {
        is_result_ok(FALSE);
        is_lasterror_ok(ERROR_INVALID_LEVEL);
        is_size_untouched((exact+1));
        is_buffer_untouched(buffer, exactbytes);
    }

> > I marked that as todo("windows").
> > Is this ok?
> 
> No. Until there are other third-party win32 implementations using the 
> WRT (Reactos?) we use just todo_wine, nothing else.

OK. I change that.

> > Another Example for GetPrinterDriverDirectory and Enum*:
> > On w2k, the the returned "number of bytes required" in the ANSI-Version
> > is the same as in the Unicode-Version.

> > For GetPrinterDriverDirectory, the rest from the unicode-version of the
> > result is visible in the second part of the buffer. 
> > (I Think, w2k fill the buffer with the unicode-version and convert
> > in-place to ANSI. Should we do the same ?)
> 
> I'm not sure what you mean here...

Documented is: Return the required number of Bytes for the Buffer.

On W2K the default Driver-Directory is
"C:\WINNT\system32\spool\DRIVERS\W32X86" (38 Characters + Zero).

Optimal Buffersize is 78 Byte for "W" and 39 Byte for "A", but W2k
required a Buffer of 78 Byte for GetPrinterDriverDirectoryA. 

A Trace for the Buffer-Contents is:

.c:656:00236438: buffer "C:\WINNT\system32\spool\DRIVERS\W32X86"
.c:661:00236460: buffer+40 L"ool\DRIVERS\W32X86"

> If the function works as documented but fills the rest of the passed 
> buffer with undefined stuff (it NUL terminates the first part, right?) 
Yes, thats the behavior.
On win9X, the "W"-Version is not implemented and the "A"-Version wants a
Buffer with the optimal Size (18 Byte for "C:\WINDOWS\SYSTEM"+0).
(Wine has a BUG and returned a 19 here. I know how to fix this, but I
want to get the tests in the CVS first).

> we shouldn't test for it unless we find an app which depends on it.

I will change the relevant Tests to trace.


-- 
By By ...
      ... Detlef




More information about the wine-devel mailing list