Commit Graph

184 Commits

Author SHA1 Message Date
Jon Turney 1a646ad797
Cygwin: testsuite: Tweak lseek03 after addition of SEEK_HOLE
After addition of SEEK_HOLE, the whence of *4* is not an invalid
argument, causing the test to FAIL.

See ltp commit  423e636a4c8f ("lseek03: change to fix with the lseek syscall")
2023-08-11 14:38:25 +01:00
Jon Turney 7374b46bfd
Cygwin: testsuite: Add a small delay in kill01
Avoid transient failures by adding a small delay after fork()-ing to
allow the child to get into a state where it can recieve signals.

Also add same small delay to kill03 and kill04. kill02 has a more
elaborate setup where child processes write to a pipe to indicate they
have started.
2023-08-11 14:38:23 +01:00
Jon Turney cbe7543cdf
Cygwin: CI: XFAIL umask03
umask03 fails in CI due to some not understood weirdness.
2023-08-08 14:15:40 +01:00
Jon Turney edda3aeaf5
Cygwin: testsuite: Fix cygload test
Use cygrun to isolate the cygload test from the current DLL, which
allows it to pass.
2023-08-08 14:15:39 +01:00
Jon Turney 718f37823d
Cygwin: testsuite: Update README
v2:
Polish instructions on adding a test

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-08-08 14:15:38 +01:00
Jon Turney c88ac48eab
Cygwin: testsuite: Add '-notimeout' option to cygrun
Add '-notimeout' option for cygrun.  This is very useful when using it
to run a test standalone and under a debugger.

Also: warn about excess arguments
2023-08-08 14:15:36 +01:00
Jon Turney a1ee8a0f05
Cygwin: testsuite: Drop using DejaGnu to run tests
A more sophisticated (and modern) test harness would probably be useful,
but switching to Automake's built-in test harness gets us parallel test
execution, colourization of failures, simplifies matters, seems adequate
for the current testuite, and means we don't need to write any icky Tcl.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-22 17:16:37 +01:00
Jon Turney 9fca983916
Cygwin: testsuite: Drop setting TDIRECTORY
Drop setting TDIRECTORY, just use /tmp in the 'test installation' now
that we have it.

This effectively reverts f3ed5f2fe0

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-21 13:23:17 +01:00
Jon Turney 938475f6de
Cygwin: testsuite: Make cancel3 and cancel5 more robust
Despite our efforts, sometimes the async cancellation gets deferred.

Notice this by calling pthread_testcancel(), and then try to work out if
async cancellation was ever successful by checking if all threads ran
for the full expected time, or if some were stopped early.

Also, increase the time we allow for the async cancellation to get
delivered to 30 seconds.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-18 16:45:25 +01:00
Jon Turney fee0c04e30
Cygwin: testsuite: Drop Adminstrator privileges while running tests
Test access05 and symlink03 expect operations to fail which succeed when
we have Adminstrator privileges.

There's perhaps a bit of incoherency here: some XFAILed tests expect to
run as root (so maybe we need the ability to selectively cygdrop?).

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:48 +01:00
Jon Turney 10e50f9617
Cygwin: testsuite: Minor fixes to umask03
Change TCIDs to they match the filename
Fix use of "%0" rather than "%o"
Record failure on mismatched permissions, rather than immediately breaking

See ltp commits fa31d55d, 923b23ff and b846e7bb

fa31d55d34
923b23ff1f
b846e7bb9c

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:47 +01:00
Jon Turney 0e8227bbb7
Cygwin: testsuite: Fix a buffer overflow in symlink01
full_path needs to hold a overlong pathname of length PATH_MAX+1, plus a
terminating null.

See ltp commit 44d51c3f

44d51c3f06

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:46 +01:00
Jon Turney e867f8c3e8
Cygwin: testsuite: Busy-wait in cancel3 and cancel5
These tests async thread cancellation of a thread that doesn't have any
cancellation points.

Unfortunately, since 2b165a45 the async cancellation silently fails when
the thread is inside the kernel function Sleep(), so it just exits
normally after 10 seconds. (See the commentary in pthread::cancel() in
thread.cc, where it checks if the target thread is inside the kernel,
and silently converts the cancellation into a deferred one)

Work around this by busy-waiting rather than Sleep()ing for 10 seconds.

This is still somewhat fragile: the async cancel could still fail, if it
happens to occur while we're inside the kernel function that time()
calls.

v2:
Do nothing more efficiently

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:45 +01:00
Jon Turney 7d50e65a84
Cygwin: testsuite: Fix for limited thread priority values
Since commit 4b51e4c1, we return the actual thread priority, not what we
originally stored in the thread attributes.

Windows only supports 7 thread priority levels, which we map onto the 32
required by POSIX.  So, only a subset of values will be returned exactly
by by pthread_getschedparam() after pthread_setschedparam().

Adjust tests priority1, priority2 and inherit1 so they only check for
round-tripping priority values which can be exactly represented.

For CI, this needs to handle process priority class "below normal
priority" as well.

Also check that the range of priority values is at least 32, as required
by POSIX.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:44 +01:00
Jon Turney 79a9288434
Cygwin: testsuite: Also check direct call in systemcall
Check direct call to system(), as well as one in a subprocess.

(This is a lot easier to debug when it's completely broken by the
environment the test is running in)

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:43 +01:00
Jon Turney 7c0750e962
Cygwin: testsuite: Just log result of second open of /dev/dsp
Do not rate successful second open of /dev/dsp as an error, just log the
result.

Based on this patch by Gerd Spalink:

https://cygwin.com/pipermail/cygwin-patches/2004q3/004848.html
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:42 +01:00
Jon Turney 9776357323
Cygwin: testsuite: Skip devdsp test when no audio devices present
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:41 +01:00
Jon Turney 04326f999b
Cygwin: testsuite: Remove const from writable string in fcntl07b
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:39 +01:00
Jon Turney 328258eba4
Cygwin: testsuite: Add a simple timeout mechanism
Astonishingly, we don't have this already, so tests which hang just stop
the testsuite dead in it's tracks...

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:38 +01:00
Jon Turney e8c1a579cd
Cygwin: testsuite: Setup test prereqs in 'installation' the tests run in
Do some setup in the Cygwin 'installation' at testsuite/testinst/:

* Ensure /tmp exists

* Use BusyBox to provide executables needed by tests which use system()
(sh, sleep, ls)

This enables tests which use system(), or require /tmp to exist to pass.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2023-07-14 14:02:37 +01:00
Jon Turney 0965454822
Cygwin: testsuite: Drop appending 'ntsec' to CYGWIN in cygrun wrapper
Don't append 'ntsec' to the CYGWIN env var in the cygrun wrapper. It
doesn't have any effect anymore.
2023-01-13 17:03:58 +00:00
Jon Turney 663922f618
Cygwin: testsuite: Update pthread tests for default SCHED_FIFO
Update for default (and only) thread scheduler policy is SCHED_FIFO.
2023-01-13 17:03:57 +00:00
Jon Turney 736618054c
Cygwin: testsuite: Update mutex tests for changed default mutex type
Default mutex type is PTHREAD_MUTEX_NORMAL.

Attempting to unlock an unowned mutex of that type is specified as
undefined behaviour, not returning EPERM.

mutex7e verfies that attempting to unlock an unowned mutex of type
PTHREAD_MUTEX_ERRORCHECK returns EPERM.
2023-01-13 17:03:56 +00:00
Jon Turney 52983af631
Cygwin: testsuite: 64-bit fixes in pthread testcases
Fix warnings and 64-bit issues in pthread testcases.

See pthread-win32 commit 1183e5ac etc.
2023-01-13 17:03:55 +00:00
Jon Turney 01a0e3e491
Cygwin: testsuite: Fix compilation warnings
Fix the warnings the previous change surfaces.

See ltp commit d5c2112f for mmap fixes.
2023-01-13 17:03:54 +00:00
Jon Turney daeeaa97b3
Cygwin: testsuite: Build testcases using automake
Build all the testcase executables directly using automake, rather than
passing the compiler information into DejaGnu to have it build them.

(This means you get build avoidance for these executables, so they only
get built once, rather than every time you run the test, and makes it
much easier to run them in isolatation against the installed Cygwin,
which is really nice to have when trying to fix broken tests...)

Rename the 'cygrun' subdirectory to 'mingw', and build all the testsuite
MinGW executables there.

Drop sample-miscompile.c (testing that compile failure is detected is
perhaps useful, but not here...)
2023-01-13 17:03:52 +00:00
Jon Turney 50a741e2f1
Cygwin: testsuite: automake doesn't define objdir
objdir isn't a predefined output variable in Automake (any more?), so
this was just using the absolute path /testsuite as the test's temporary
directory.  Use builddir instead.
2023-01-13 17:03:50 +00:00
Jon Turney 1a9f95d894
Cygwin: Run testsuite against the just-built DLL
Since 4e7817498e, we're just running the tests against the installed
DLL.  We're arranging to put the build directory on the path, but since
it doesn't contain cygwin1.dll (since it's built with a different name
and renamed on installation), that doesn't have any effect.

Arrange to place the just-built DLL into a directory which the testsuite
can place on it's path (while running the test, but not while compiling
it).

Also fix any remaining references to cygwin0.dll in testsuite,
documentation and comments.

Fixes: 4e7817498e ("Cygwin: Makefile: Drop all the "test dll" considerations")
2023-01-10 10:27:13 +00:00
Jon Turney 4e7817498e
Cygwin: Makefile: Drop all the "test dll" considerations
After 90236c3a2c, the testsuite is failing, as the cygwin0.dll
referenced by the implib that testsuite programs are linked with doesn't
exist anymore.

We don't need to make and link the testsuite with a specially named DLL,
as the cygwin DLL (since 526b0fbca3) takes into consideration the path
it's executing from to define separate "Cygwin installations", which
don't interact.

Fixes: 90236c3a2c ("Cygwin: Makefile: build new-cygwin1.dll in a single step")
2022-12-21 17:43:11 +00:00
Jon Turney b4561c2363
Cygwin: testsuite: Add x86_64 code to "dynamically load cygwin" test
This still needs some more voudou to actually work.

Also update how-cygtls-works.txt a bit
2022-08-29 17:53:48 +01:00
Jon Turney 6e843f7750
Cygwin: testsuite: In pathconf01 use the temporary directory instead of "/tmp"
In pathconf01 use the temporary directory, instead of "/tmp" (which may not exist).
2022-08-29 17:53:46 +01:00
Jon Turney f1d7ef46f7
Cygwin: testsuite: Fix size of write to temporary file to be mmap()ed
See ltp commit 91361378
2022-08-29 17:53:45 +01:00
Jon Turney 19b3b814bc
Cygwin: testsuite: Fix TEST_RETURN for 64-bit
The result of a function call won't fit in an int if it's e.g. a pointer.
2022-08-29 17:53:44 +01:00
Jon Turney 6ca056eec9
Cygwin: testsuite: Remove passing tests from XFAIL list
Remove ltp/fcntl05.c from XFAIL list, since it now PASSes.
Remove ltp/dup03.c from XFAIL list, since it now PASSes.
2022-08-29 17:53:42 +01:00
Jon Turney 5cea46d309
Cygwin: testsuite: Don't write coredump in a child which is expected to segfault 2022-08-29 17:53:41 +01:00
Ken Brown 3e917daec1 Cygwin: remove some 32-bit only path conversion functions 2022-05-29 17:45:52 -04:00
Yaakov Selkowitz cf8aa43284 Cygwin: do not build MinGW testsuite/cygrun --with-cross-bootstrap 2022-01-10 09:59:08 -05:00
Corinna Vinschen d5cc66426b Cygwin: testsuite: avoid "conflicting types" gcc warning
With gcc 11.2:

test.h:50:5: warning: conflicting types for built-in function ‘execve’; expected ‘int(const char *, char * const*)’ [-Wbuiltin-declaration-mismatch]
test.h:51:5: warning: conflicting types for built-in function ‘execv’; expected ‘int(const char *, char * const*)’ [-Wbuiltin-declaration-mismatch]
test.h:52:5: warning: conflicting types for built-in function ‘execvp’; expected ‘int(const char *, char * const*)’ [-Wbuiltin-declaration-mismatch]

Fix prototypes accordingly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-09-03 12:15:53 +02:00
Corinna Vinschen cf25b55902 Cygwin: automake: change @INCLUDES@ to @AM_CPPFLAGS@ to avoid warnings
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-04-29 11:28:14 +02:00
Corinna Vinschen a26779fae0 Cygwin: drop all generated autotools files
- add autotool files generated under winsup to .gitignore

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-04-29 11:16:38 +02:00
Jon Turney 247ce0ca3a
Cygwin: Use automake (v5)
v2:
* Include tzmap.h in BUILT_SOURCES
* Make per-file flags appear after user-supplied CXXFLAGS, so they can
override optimization level.
* Correct .o files used to define symbols exported by libm.a
* Drop gcrt0.o mistakenly included in libgmon.a
* Add missing line continuations in GMON_FILES value

v3:
* use per-file flags for .c compilation
* override C{XX,}FLAGS, as they are set on the command line by top-level make

v4:
* Drop -Wno-error=write-strings from path_testsuite CXXFLAGS

v5:
* Update for changes in master
- Add -fno-threadsafe-statics to CXX flags
- Add hypotl.cc
- Remove fenv.cc (in favour of newlib), add fenv.c stub
- Add proc.5 manpage rules
2021-04-27 16:49:56 +01:00
Corinna Vinschen 702bec7bc9 Cygwin: testsuite: libltp: fix warnings showing up with -Wall
This libltp is old as old dirt and still using K&R style.
If it's really to be used again at all, it needs a serious
refresh.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-12-02 14:12:56 +01:00
Jon Turney dc93f7ef2d
Cygwin: Remove recursive configure
There's doesn't seem to be much use in independently distributing these
subdirectories, so allowing them to be independently configured seems
pointless and overcomplicated.

The order in which the subdirectories are built is still a little odd,
as cygwin is linked with libcygserver, and cygserver is then linked with
cygwin. So, we build the cygwin directory first, which invokes a build
of libcygserver in the cygserver directory, and then build in the
cygserver directory to build the cygserver executable.

Drop AC_CONFIGURE_ARGS, since we don't need to recursively call
configure with the same arguments anymore.

Slightly refine when we build utils: Previously we didn't build any
utils if MinGW compiler use was avoided, now we just avoid building
those utils which require that compiler.

Greatly simplify how winsup_srcdir and target_builddir are set, since
we're only configuring from one directory.  (These are still kept
absolute, since we don't adjust them where used for being used in a
subdirectory).

Remove configure.cygwin and put it's (greatly reduced) contents inline
in the one place it's used now.

Remove generated configure and aclocal.m4 in subdirectories.
2020-11-20 15:56:11 +00:00
Jon Turney 9ea6f38dea
Cygwin: Testsuite Makefile cleanup
Drop unused variables CC_FOR_TARGET, GCC_INCLUDE, ALL_CFLAGS
Stop exporting CC, CFLAGS
Drop unused, empty targets force, dll_ofiles, all_target
2020-11-18 16:26:37 +00:00
Jon Turney ff315bd18f
Cygwin: Use grep in text mode to look for version strings
Invoke grep in text mode when looking for version strings inside the
cygwin DLL, so it outputs something more informative than:

  Binary file ../cygwin/cygwin0.dll matches
2020-11-18 16:26:23 +00:00
Corinna Vinschen 3b80191f33 Cygwin: testsuite: fix insecure usage of printf in libltp
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-11-16 15:57:31 +01:00
Jon Turney 140b0a6484
Cygwin: Fix testsuite tmpdir creation with non-default cygdrive prefix 2020-11-12 15:30:35 +00:00
Jon Turney f3ed5f2fe0
Cygwin: Ensure temporary directory used by tests exists
By default, libltp tests will create temporary files in a subdirectory
of /tmp, which will (nowadays) be located relative to the test DLL (by
assuming that it is in /bin).  This will evaluate to the directory
$target_builddir/winsup/tmp, which doesn't exist.

The location used for these temporary files can be explicitly controlled
by setting the TDIRECTORY env var.  Arrange to set that env var to the
/cygdrive path of a tmp subdirectory of the build directory.

Unfortunately, libltp doesn't clean the temporary directory if
TDIRECTORY is set, and some tests assume they are started in a clean
directory, so we need to do that in tcl.
2020-11-08 14:42:02 +00:00
Jon Turney 9cdb799806
Cygwin: Set PATH for tests to pick up cygwin0.dll
Set the PATH so that tests can pick up cygwin0.dll.  Looks like this was
dropped by accident in 2e488e95 ("Don't rely on in-build tools"), so
restore it as it was prior to 9d89f634.
2020-11-08 14:41:55 +00:00
Jon Turney 0c448d53e1
Cygwin: Check exit code of a test, rather than stdout
In winsup.exp, don't consider a command failed if it produced any output
(e.g. if the compiler produced warnings).  Instead check the exit code.
2020-11-08 14:41:46 +00:00