[cmake-developers] Simple test case needed that follows exactly how ctest sets up stdout

David Cole dlrdave at aol.com
Thu May 23 14:35:47 EDT 2013


-----Original Message-----
From: Alan W. Irwin <irwin at beluga.phys.uvic.ca>
To: cmake-developers <cmake-developers at cmake.org>
Sent: Thu, May 23, 2013 2:14 pm
Subject: [cmake-developers] Simple test case needed that follows 
exactly how ctest sets up stdout


I am trying to track down a recently introduced Wine regression
demonstrated by cmake-2.8.10.2 where MSYS bash.exe redirection of
ctest stdout produces good results for Wine-1.5.19, but an empty file
for Wine-1.5.30. A simplified example of this issue is

ctest --version

produce correct results on the terminal for all wine versions but

ctest --version > ctest_version.out

produces correct file results for Wine-1.5.19, but an empty file for
Wine-1.5.30.  The equivalent "cmake --version" tests produce good
results in all cases.  So I conclude that stdout is set up slightly
differently for ctest than it is for cmake, and that difference is
enough to trigger a Wine bug that was introduced for some commit
(which I plan to find using git-bisect) between wine-1.5.19 and
wine-1.5.30.  The git bisection should work just fine using "ctest
--version >ctest_version.out" for the test, but when I put together
the wine bug report I would like to demonstrate the issue with a lot
simpler test case than the ctest executable.

Would somebody be willing to give me a hand with implementing that
test case? All that needs to be done is to collect the relevant code
for setting up stdout from ctest.cxx, cmCTest.cxx, and anything else
that is relevant in the CTest subdirectory into a single source file
for the simple test case that outputs a test string to stdout.
However, I need a hand with this task because my extremely limited C++
skills and basic unfamiliarity with cmake/ctest coding conventions
aren't up to it.  For example, in cmCTest.cxx there are a number of
references to various capitalizations of stdout, but there is no
in-source documentation so it is difficult for me to figure out which
of those are relevant to setting up stdout.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and 
Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers



What do you intend to write as the test case that's simpler than 
running "ctest --version" ...?

You should be able to demonstrate the bug with a minimal subset of the 
cmake installation, using the binaries from Kitware as the test case. 
(i.e. -- you don't need to build anything from source code to 
demonstrate the bug to the Wine folks...)

I copied the bin folder of CMake 2.8.11 to another location just now, 
and then eliminated everything from it except these files:

    ctest.exe
    Microsoft.VC90.CRT.manifest
    msvcm90.dll
    msvcp90.dll
    msvcr90.dll

Then, when running "ctest --version" I see the output:

     CMake Error: CMake executable cannot be found at 
C:/dev/tmp8/bin/cmake.exe
    ctest version 2.8.11

Or, if I run "ctest --version 2>nul" (in the Windows command prompt), 
it suppresses the stderr output, and I see:

    ctest version 2.8.11

You should be able to do a similar thing on Wine, in whatever shell you 
like, perhaps using a different construct than "2>nul" for different 
shells.


Hope this helps,
David C.




More information about the cmake-developers mailing list