<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/ca62f3ea2b273eabd374d5dddb9de0e644f03d58">https://github.com/macports/macports-legacy-support/commit/ca62f3ea2b273eabd374d5dddb9de0e644f03d58</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ca62f3ea2b273eabd374d5dddb9de0e644f03d58
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Wed Oct 23 15:34:35 2024 -0700
<span style='display:block; white-space:pre;color:#404040;'> Add tests for alternate realpath() versions.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This ensures that all three versions of realpath() (two in 64-bit
</span><span style='display:block; white-space:pre;color:#404040;'> builds) have test coverage. The test for the impossible 64-bit
</span><span style='display:block; white-space:pre;color:#404040;'> non-POSIX case is a dummy.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The 10.15 non-POSIX realpath() has a bug (unrelated to
</span><span style='display:block; white-space:pre;color:#404040;'> legacy-support) causing the relevant test to fail. A subsequent
</span><span style='display:block; white-space:pre;color:#404040;'> commit excludes that case from the test.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This test uncovered real bugs in the former wrapper implementation.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> Without the realpath() fix, fails on 10.5 and on 10.4 with later SDK.
</span><span style='display:block; white-space:pre;color:#404040;'> With the fix, passes on all platforms (except as noted above).
</span>---
Makefile | 10 ++++++++++
test/test_realpath.c | 10 +++++++++-
test/test_realpath_nonext.c | 7 +++++++
test/test_realpath_nonposix.c | 23 +++++++++++++++++++++++
4 files changed, 49 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile b/Makefile
</span><span style='display:block; white-space:pre;color:#808080;'>index 9b4abf2..2dae10a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -158,6 +158,9 @@ TESTSRUNS := $(patsubst \
</span> $(TESTNAMEPREFIX)%,$(TESTRUNPREFIX)%,$(TESTSPRGS_C))
TESTSYSRUNS := $(patsubst \
$(TESTNAMEPREFIX)%,$(TESTRUNPREFIX)%,$(TESTSYSPRGS_C))
<span style='display:block; white-space:pre;background:#e0ffe0;'>+REALPATHSRCS_C := $(wildcard $(TESTNAMEPREFIX)realpath*.c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+REALPATHRUNS := $(patsubst \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(TESTNAMEPREFIX)%.c,$(TESTRUNPREFIX)%,$(REALPATHSRCS_C))
</span>
# Tests that are only run manually
MANTESTDIR = manual_tests
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -455,9 +458,16 @@ $(XTESTNAMEPREFIX)darwin_c_full.o: $(XTESTNAMEPREFIX)darwin_c.c
</span> $(XTESTNAMEPREFIX)scandir_old.o: $(XTESTNAMEPREFIX)scandir.c
$(XTESTNAMEPREFIX)scandir_ino32.o: $(XTESTNAMEPREFIX)scandir.c
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# The nonstandard realpath tests include the realpath source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTNAMEPREFIX)realpath_nonext.o: $(TESTNAMEPREFIX)realpath.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTNAMEPREFIX)realpath_nonposix.o: $(TESTNAMEPREFIX)realpath.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Provide a target for all "darwin_c" tests
$(XTESTRUNPREFIX)darwin_c_all: $(DARWINRUNS)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Provide a target for all "realpath" tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTRUNPREFIX)realpath_all: $(REALPATHRUNS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> $(MANTESTRUNS): $(MANRUNPREFIX)%: $(MANTESTPREFIX)%
$< $(TEST_ARGS)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_realpath.c b/test/test_realpath.c
</span><span style='display:block; white-space:pre;color:#808080;'>index ad71421..8fcffd2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_realpath.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_realpath.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,6 +15,13 @@
</span> * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * NOTE: Much of the complexity in this test is left over from an earlier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * implementation that used a wrapper macro instead of a wrapper function.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Macro-related issues are no longer important to test, though the extra
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * tests haven't been removed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /*
* Deliberately declaring some potentially redefined names
* before including the associated header file, to test robustness.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,6 +36,7 @@ typedef struct { char *realpath; } rpv_t;
</span> typedef struct { strfunc_t realpath; } rpf_t;
#include <assert.h>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <libgen.h>
</span> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -88,6 +96,6 @@ main(int argc, char *argv[])
</span> if (verbose) printf("rpv.realpath = rpf.realpath(path, NULL) supported.\n");
free((void*)rpv.realpath);
<span style='display:block; white-space:pre;background:#ffe0e0;'>- printf("realpath test succeeded.\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("%s succeeded.\n", basename(argv[0]));
</span> return 0;
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_realpath_nonext.c b/test/test_realpath_nonext.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..0305a65
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_realpath_nonext.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Version of test_realpath with Darwin extensions disabled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _POSIX_C_SOURCE 200112L
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "test_realpath.c"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_realpath_nonposix.c b/test/test_realpath_nonposix.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9870aac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_realpath_nonposix.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Version of test_realpath with non-POSIX semantics (32-bit only).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if !defined(__LP64__) || !__LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _NONSTD_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "test_realpath.c"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <libgen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (void) argc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("%s is inapplicable.\n", basename(argv[0]));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span></pre><pre style='margin:0'>
</pre>