summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-01-05 16:46:27 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-01-09 12:04:28 +0100
commit64633044c517b65e74e95749e3918c1468ab0f82 (patch)
tree285710e3db2b631b1726878c88d1d9ba85edff8b /win32
parent0a9bdd6e7b6545b830f2bf1c4795a74c2dc30730 (diff)
downloadphp-git-64633044c517b65e74e95749e3918c1468ab0f82.tar.gz
Unify mail related tests for *nix and Windows
Currently mail related tests are split for *nix and Windows (if there are even Windows versions). The basic difference is that the *nix variants set the INI directive sendmail_path to just write the email to disk, while the Windows tests use ext/imap. The latter tests are way more verbose, and such duplicated tests are generally a pain point. Furthermore, the Windows tests are much slower, and could not be run without ext/imap being available. We therefore introduce a small fakemail application, which basically works like `tee <path> >/dev/null`, and which will be shipped with the Windows tests packs. fakemail.exe would also need to be added to the PHP binary SDK, so these tests could be run during developments. To cater to the remaining differences, we also introduce support for `{MAIL:<path>}` placeholders in the INI sections to run-tests.php. How to use this can be seen in mail_basic.phpt, which is currently the only modified test case, because these tests are yet supposed to fail on Windows, due to the missing fakemail.exe in the PHP SDK.
Diffstat (limited to 'win32')
-rw-r--r--win32/build/Makefile5
-rw-r--r--win32/build/fakemail.c40
-rw-r--r--win32/build/mkdist.php1
3 files changed, 45 insertions, 1 deletions
diff --git a/win32/build/Makefile b/win32/build/Makefile
index a6b54c07ff..6df5b966e3 100644
--- a/win32/build/Makefile
+++ b/win32/build/Makefile
@@ -203,7 +203,7 @@ build-snap: set-tmp-env generated_files
-for %T in ($(EXT_TARGETS)) do $(MAKE) /I /nologo "%T"
-for %T in ($(PECL_TARGETS)) do $(MAKE) /I /nologo "%T"
-build-dist: $(BUILD_DIR)\deplister.exe
+build-dist: $(BUILD_DIR)\deplister.exe $(BUILD_DIR)\fakemail.exe
-rd /s /q $(BUILD_DIR)\php-$(PHP_VERSION_STRING)
-rd /s /q $(BUILD_DIR)\pecl-$(PHP_VERSION_STRING)
-del /f /q $(BUILD_DIR)\$(DIST_ZIP_SNAP)
@@ -227,6 +227,9 @@ snap: build-snap build-devel build-dist
$(BUILD_DIR)\deplister.exe: win32\build\deplister.c
$(CC) /nologo /Fo$(BUILD_DIR)\ /Fd$(BUILD_DIR)\ /Fp$(BUILD_DIR)\ /FR$(BUILD_DIR) /Fe$(BUILD_DIR)\deplister.exe win32\build\deplister.c imagehlp.lib
+$(BUILD_DIR)\fakemail.exe: win32\build\fakemail.c
+ $(CC) /nologo /Fo$(BUILD_DIR)\ /Fd$(BUILD_DIR)\ /Fp$(BUILD_DIR)\ /FR$(BUILD_DIR) /Fe$(BUILD_DIR)\fakemail.exe win32\build\fakemail.c
+
install: really-install install-sdk
build-lib: build-ext-libs
diff --git a/win32/build/fakemail.c b/win32/build/fakemail.c
new file mode 100644
index 0000000000..6a24c47b80
--- /dev/null
+++ b/win32/build/fakemail.c
@@ -0,0 +1,40 @@
+/*
+ +----------------------------------------------------------------------+
+ | Copyright (c) The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: Christoph M. Becker <cmb@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+/* This program can be used as sendmail replacement to write the email contents
+ to a file, which is mainly useful for email related tests on Windows.
+ Usage: fakemail <path> */
+
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+ FILE *out;
+ char c;
+
+ if (argc != 2) {
+ return 1;
+ }
+ if (!(out = fopen(argv[1], "w"))) {
+ return 1;
+ }
+ while ((c = getchar()) != EOF) {
+ putc(c, out);
+ }
+ fclose(out);
+
+ return 0;
+}
diff --git a/win32/build/mkdist.php b/win32/build/mkdist.php
index f4155308af..0995c8f7cf 100644
--- a/win32/build/mkdist.php
+++ b/win32/build/mkdist.php
@@ -497,6 +497,7 @@ foreach ($dirs as $dir) {
copy_test_dir($dir, $test_dir);
}
copy('run-tests.php', $test_dir . '/run-test.php');
+copy($build_dir . '/fakemail.exe', $test_dir . '/fakemail.exe');
/* change this next line to true to use good-old
* hand-assembled go-pear-bundle from the snapshot template */