<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/0932489b4732245fb5a8c0de06f70d64562aaff1">https://github.com/macports/macports-legacy-support/commit/0932489b4732245fb5a8c0de06f70d64562aaff1</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 0932489b4732245fb5a8c0de06f70d64562aaff1
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Fri Oct 11 16:52:27 2024 -0700

<span style='display:block; white-space:pre;color:#404040;'>    Add explanation for avoiding automatic tests in C++.
</span>---
 test/.gitignore     |  1 +
 test/README-CPP.txt | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/.gitignore b/test/.gitignore
</span><span style='display:block; white-space:pre;color:#808080;'>index a41cb9e..0df309e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/.gitignore
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/.gitignore
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,3 +3,4 @@
</span> !*.cc
 !*.cpp
 !do_test_faccessat_setuid
<span style='display:block; white-space:pre;background:#e0ffe0;'>+!*.txt
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/README-CPP.txt b/test/README-CPP.txt
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..42241b5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/README-CPP.txt
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All functions provided by legacy-support are C functions.  Use of them from C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+is via the C linkage.  Thus, not only is the entire library written in plain C,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+but there is also no need for any tests to be written in C++.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In addition, Apple made the C++ compiler requirements stricter in the macOS 15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SDK, which would have been the limiting factor in compatibility with any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automatic tests written in C++.  Consequently, the three former C++ tests have
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+been replaced by C versions, with the old C++ versions being moved to the manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test category.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The three affected tests are:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os_unfair_lock:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This had a comment indicating that it needed to be in C++, with a commit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reference supposedly explaining that, but neither that commit nor the ticket
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+that it references contains any such explanation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dirent_with_cplusplus:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The former fdopendir() implementation relied on a macro that collided with C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+headers, causing errors.  The test was created to demonstrate that problem and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+its fix.  It was written in C++ since that was how the problem was actually
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+discovered, though a test using plain C probably could have been constructed. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Meanwhile, the fdopendir() implementation has been rewritten in such a way that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the aforementioned problem no longer exists.  For that reason, the test was
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+replaced with a simple include-only test, rather than rewriting the former test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+in C.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+time_cpp:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is a test of clock_gettime() and clock_getres(), which was written in C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for no good reason at all.  It has been rewritten in C, with some additional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+improvements, including the ability to detect a previously undiscovered bug.
</span></pre><pre style='margin:0'>

</pre>