aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-05-14 16:26:29 +0300
committerEli Zaretskii <eliz@gnu.org>2013-05-14 16:26:29 +0300
commit242f84cd211a13c4056d228aaa9bc1f57aa21763 (patch)
tree8be4635902df1dde1c21e6ca9cb457a2860c73ff /test
parentc96323b5e32f54295556809833d2d6a44daa75d0 (diff)
downloadegawk-242f84cd211a13c4056d228aaa9bc1f57aa21763.tar.gz
egawk-242f84cd211a13c4056d228aaa9bc1f57aa21763.tar.bz2
egawk-242f84cd211a13c4056d228aaa9bc1f57aa21763.zip
Fix building, installing, and testing extensions on MS-Windows.
test/Makefile.in (mpfr-tests, shlib-tests): Add a blank character between ' and /FOO/ in Gawk command lines, for the benefit of testing under MSYS Bash. test/filefuncs.awk (BEGIN): Call 'stat' on gawkapi.o, not on gawk, which does not exist on systems that produce gawk.exe. README_D/README.pc: Update the pc build and test instructions. pc/Makefile.tst (AWK): Set AWKLIBPATH so extensions could be found. (LS): New variable. (check): Add back shlib-tests and shlib-msg-end. (readdir): Add a warning regarding inode reporting by ls.exe. (fts, fork, fork2): Add message about expected failure on MinGW. pc/Makefile (install): Install the extensions. (install-strip): Likewise. pc/Makefile.ext: New file. io.c (devopen) [__EMX__ || __MINGW32__]: Produce EISDIR on MinGW when an attempt to open() a directory fails. (two_way_open) [__EMX__ || __MINGW32__]: When trying to open() a directory fails with EISDIR, assign FAKE_FD_VALUE to the file descriptor and attributes of a directory to its mode bits. This is needed to support the readdir extension. gawkapi.h (FAKE_FD_VALUE): New macro, used in io.h and in extension/gawkdirfd.h. extension/rwarray.c [__MINGW32__]: Include winsock2.h instead of arpa/inet.h. extension/readdir.c [__MINGW32__]: Include windows.h. Include gawkapi.h before gawkdirfd.h, since the former defines FAKE_FD_VALUE needed by the latter. (ftype): Accept an additional argument, the directory that is being read. Callers changed. [!DT_BLK]: Produce the file's type by calling 'stat' on it, if the dirent structure doesn't provide that. (get_inode): New function, to produce inode values on MS-Windows. (dir_get_record): Use it. extension/inplace.c (chown, link) [__MINGW32__]: Redirect to existing library functions. (mkstemp) [__MINGW32__]: New function, for MinGW, which doesn't have it in its library. (do_inplace_end) [__MINGW32__]: Remove the old file before renaming the new, since 'rename' on Windows cannot overwrite existing files. extension/gawkdirfd.h (ENOTSUP): Define to ENOSYS if not already defined. (DIR_TO_FD): If not defined yet, define to FAKE_FD_VALUE. extension/filefuncs.c (get_inode) [_WIN32]: New function, produces the file index used on Windows as its inode. (fill_stat_array) [_WIN32]: Use it.
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog9
-rw-r--r--test/Makefile.in8
-rw-r--r--test/filefuncs.awk4
3 files changed, 17 insertions, 4 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 20b4d6e2..fda3b681 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,12 @@
+2013-05-14 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.in (mpfr-tests, shlib-tests): Add a blank character
+ between ' and /FOO/ in Gawk command lines, for the benefit of
+ testing under MSYS Bash.
+
+ * filefuncs.awk (BEGIN): Call 'stat' on gawkapi.o, not on gawk,
+ which does not exist on systems that produce gawk.exe.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/test/Makefile.in b/test/Makefile.in
index 46e7f57a..bfecafc0 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1453,14 +1453,18 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+# The blank between ' and /MPFR/ is for running tests on Windows under
+# MSYS, which thinks /MPFR is a Unix-style file name and converts it
+# to Windows format, butchering it in the process. Likewise for /API/
+# in the next shlib-tests.
mpfr-tests:
- @if $(AWK) --version | $(AWK) '/MPFR/ { exit 1 }' ; then \
+ @if $(AWK) --version | $(AWK) ' /MPFR/ { exit 1 }' ; then \
echo MPFR tests not supported on this system ; \
else $(MAKE) $(MPFR_TESTS) ; \
fi
shlib-tests:
- @if $(AWK) --version | $(AWK) '/API/ { exit 1 }' ; then \
+ @if $(AWK) --version | $(AWK) ' /API/ { exit 1 }' ; then \
echo shlib tests not supported on this system ; \
else $(MAKE) shlib-real-tests ; \
fi
diff --git a/test/filefuncs.awk b/test/filefuncs.awk
index aa532741..4bbfcb55 100644
--- a/test/filefuncs.awk
+++ b/test/filefuncs.awk
@@ -6,8 +6,8 @@ BEGIN {
exit 1
}
- if (stat(ARGV[0], st) < 0) {
- printf "Error: stat(%s) failed with ERRNO %s\n", ARGV[0], ERRNO
+ if (stat(ARGV[0] "api.o", st) < 0) {
+ printf "Error: stat(%s) failed with ERRNO %s\n", ARGV[0] "api.o", ERRNO
exit 1
}