Here are some notes about adding to and using this testsuite. The testsuite adds a directory containing the just-built cygwin1.dll to the PATH so that it can be found by the Windows loader during testing. Because we'll probably run into complaints about using two DLLs, we use cygrun.exe to run each test. All this does is run the test with CreateProcess() so that we don't attempt to do the special code for when a cygwin program calls another cygwin program, as this might be a "multiple cygwins" problem. The testsuite/winsup.api subdirectory is for testing the API to cygwin1.dll ONLY. Create other subdirs under testsuite/ for other classes of testing. Tests in testsuite/winsup.api/pthread/ are derived from the pthread-win32 testsuite. Tests in testsuite/winsup.api/ltp/ are derived from (a very old version of) the ltp testsuite. Don't print anything to the screen if you can avoid it (except for failure reasons, of course). "make check" will only work if you run it *on* an NT machine. Cross-checking is not supported. Tests whose name is mentioned in XFAIL_TESTS are expected to fail, effectively reversing the result of those. Adding a test ============= Add the source for the test under testsuite/winsup.api/. Add the additional tests program to check_PROGRAMS in testsuite/Makefile.am. (Note that if the test 'foo' has a single source file, foo.c, there's no need to write a foo_SOURCES as that's the default Automake assumes.) Tests can use libltp, but's that not required. The Cygwin 'installation' that the tests are run in is minimal, so don't assume anything is present. Any test that needs to test command line args or redirection needs to run such a child program itself, as the testsuite will not do any arguments or redirection for it. Same for fork, signals, etc. Tests should either run successfully and exit(0), exit(77) to indicate a skipped test, or any other exit status to indicate a failure. Tips ==== * To run selected tests, use e.g: $ make check TESTS="winsup.api/ltp/umask03 winsup.api/ltp/stat06" * To build the tests without running them, use the check_programs target, e.g: $ make -C winsup/testsuite/ check_programs * To run an individual test program directly (against the installed, rather than just built DLL), e.g.: $ winsup/testsuite/winsup.api/pthread/cancel1 * To run an individual test program against the test DLL under gdb, e.g.: $ PATH="/winsup/testsuite/testinst/bin/:$PATH" cygrun -notimeout "gdb winsup.api/systemcall"