https://gcc.gnu.org/g:5eb93522a661481caa53d4d1a716888b5b11f4da

commit r14-11491-g5eb93522a661481caa53d4d1a716888b5b11f4da
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jan 30 17:02:47 2025 +0000

    libstdc++: Add testcase for std::filesystem::copy [PR118699]
    
    This was fixed last year by r15-2409-g017e3f89b081e4 (and backports), so
    just add the testcase.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/118699
            * testsuite/27_io/filesystem/operations/copy.cc: Check copying a
            file to a directory.
    
    (cherry picked from commit 466da4baba46608882d16d121fa46d33f841bc7b)

Diff:
---
 .../testsuite/27_io/filesystem/operations/copy.cc      | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc 
b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
index 893f32297ae7..7983e1e08dea 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
@@ -228,6 +228,23 @@ test_pr99290()
   remove_all(dir);
 }
 
+void
+test_pr118699()
+{
+  auto dir = __gnu_test::nonexistent_path();
+  fs::create_directories(dir/"a");
+  fs::create_directories(dir/"c");
+  std::ofstream{dir/"a/b.txt"} << "b";
+  std::ofstream{dir/"a/bb.txt"} << "bb";
+
+  fs::copy(dir/"a/b.txt", dir/"c");
+  auto ec = make_error_code(std::errc::invalid_argument);
+  fs::copy(dir/"a/bb.txt", dir/"c", ec);
+  VERIFY( !ec );
+
+  remove_all(dir);
+}
+
 int
 main()
 {
@@ -237,4 +254,5 @@ main()
   test04();
   test05();
   test_pr99290();
+  test_pr118699();
 }

Reply via email to