public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Alexandre Oliva <aoliva@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: testsuite: skip fs last_write_time tests if dummy Date: Thu, 23 Jun 2022 05:11:01 +0000 (GMT) [thread overview] Message-ID: <20220623051101.228403898383@sourceware.org> (raw) https://gcc.gnu.org/g:525af4fdc680cfe83494e83238ec3eee9c3f762a commit 525af4fdc680cfe83494e83238ec3eee9c3f762a Author: Alexandre Oliva <oliva@adacore.com> Date: Mon Jun 20 20:44:03 2022 -0300 libstdc++: testsuite: skip fs last_write_time tests if dummy The last_write_time functions are defined in ways that are useful, or that fail immediately, depending on various macros. When they fail immediately, the filesystem last_write_time.cc tests fail noisily, but the fail is entirely expected. Define NO_LAST_WRITE_TIME in the last_write_time.cc tests, according to the macros that select implementations of last_write_time, and use it through the new dg-require-target-fs-lwt to skip tests that are expected to fail. for libstdc++-v3/ChangeLog * testsuite/util/testsuite_fs.h (NO_LAST_WRITE_TIME): Define when appropriate. * testsuite/lib/libstdc++.exp (check_v3_target_fs_last_write_time): New. * testsuite/lib/dg-options.exp (dg-require-target-fs-lwt): New. * testsuite/27_io/filesystem/operations/last_write_time.cc: Skip the test if the features are unavailable. * testsuite/experimental/filesystem/operations/last_write_time.cc: Likewise. Diff: --- .../testsuite/27_io/filesystem/operations/last_write_time.cc | 1 + .../experimental/filesystem/operations/last_write_time.cc | 1 + libstdc++-v3/testsuite/lib/dg-options.exp | 9 +++++++++ libstdc++-v3/testsuite/lib/libstdc++.exp | 8 ++++++++ libstdc++-v3/testsuite/util/testsuite_fs.h | 5 +++++ 5 files changed, 24 insertions(+) diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc index 7d6468a5124..f6460fb83d7 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc @@ -17,6 +17,7 @@ // { dg-do run { target c++17 } } // { dg-require-filesystem-ts "" } +// { dg-require-target-fs-lwt "" } // 15.25 Permissions [fs.op.last_write_time] diff --git a/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc b/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc index 38fafc392ca..a0bf01ea935 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc @@ -18,6 +18,7 @@ // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" } // { dg-do run { target c++11 } } // { dg-require-filesystem-ts "" } +// { dg-require-target-fs-lwt "" } // 15.25 Permissions [fs.op.last_write_time] diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp index 81bb8f448bd..b61c4c0cb8f 100644 --- a/libstdc++-v3/testsuite/lib/dg-options.exp +++ b/libstdc++-v3/testsuite/lib/dg-options.exp @@ -259,6 +259,15 @@ proc dg-require-target-fs-space { args } { return } +proc dg-require-target-fs-lwt { args } { + if { ![ check_v3_target_fs_last_write_time ] } { + upvar dg-do-what dg-do-what + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] + return + } + return +} + proc add_options_for_no_pch { flags } { # This forces any generated and possibly included PCH to be invalid. return "-D__GLIBCXX__=99999999" diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 98d08df5ea6..eed111fd64a 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1286,6 +1286,14 @@ proc check_v3_target_fs_space { } { return [v3_check_preprocessor_condition fs_space $cond $inc] } +# Return 1 if the libstdc++ filesystem implementation of +# last_write_time is not an always-failing dummy. +proc check_v3_target_fs_last_write_time { } { + set inc "#include <testsuite_fs.h>" + set cond "!defined NO_LAST_WRITE_TIME" + return [v3_check_preprocessor_condition fs_last_write_time $cond $inc] +} + # Return 1 if the "cxx11" ABI is in use using the current flags, 0 otherwise. # Any flags provided by RUNTESTFLAGS or a target board will be used here. # Flags added in the test by dg-options or dg-add-options will not be used. diff --git a/libstdc++-v3/testsuite/util/testsuite_fs.h b/libstdc++-v3/testsuite/util/testsuite_fs.h index 89042e55341..037d9ffc0f4 100644 --- a/libstdc++-v3/testsuite/util/testsuite_fs.h +++ b/libstdc++-v3/testsuite/util/testsuite_fs.h @@ -52,6 +52,11 @@ namespace test_fs = std::experimental::filesystem; #define NO_SPACE #endif +#if !(_GLIBCXX_HAVE_SYS_STAT_H \ + && (_GLIBCXX_USE_UTIMENSAT || _GLIBCXX_USE_UTIME)) +#define NO_LAST_WRITE_TIME 1 +#endif + namespace __gnu_test { #define PATH_CHK(p1, p2, fn) \
next reply other threads:[~2022-06-23 5:11 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-06-23 5:11 Alexandre Oliva [this message] 2022-06-23 7:15 Alexandre Oliva 2022-06-23 10:05 Alexandre Oliva 2022-06-23 12:21 Alexandre Oliva 2022-06-23 12:29 Alexandre Oliva 2022-06-23 12:43 Alexandre Oliva 2022-06-23 14:02 Alexandre Oliva
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220623051101.228403898383@sourceware.org \ --to=aoliva@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).