[libcxx-commits] [libcxx] [libc++] Refactor the conditions for enabling assertion tests (PR #213294)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jul 31 08:39:32 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Louis Dionne (ldionne)

<details>
<summary>Changes</summary>

Every hardening assertion test used to repeat a hand-rolled set of Lit conditions like `has-unix-headers` and a bunch of others. Instead, define a single Lit feature to handle all of them.

Assisted by Claude

Fixes #<!-- -->213148

---

Patch is 183.65 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/213294.diff


225 Files Affected:

- (modified) libcxx/docs/TestingLibcxx.rst (+19-22) 
- (modified) libcxx/test/libcxx-03/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_left.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_right.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.for_each_n.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.ranges.for_each_n.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.oob.pass.cpp (+2-3) 
- (modified) libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/algorithms/debug_less.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/algorithms/debug_three_way_comp.inconsistent.pass.cpp (+1-1) 
- (modified) libcxx/test/libcxx/assertions/modes/debug.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/assertions/modes/extensive.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/assertions/modes/fast.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/assertions/modes/override_with_debug_mode.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/assertions/modes/override_with_extensive_mode.pass.cpp (+1-6) 
- (modified) libcxx/test/libcxx/assertions/modes/override_with_fast_mode.pass.cpp (+1-6) 
- (modified) libcxx/test/libcxx/assertions/modes/override_with_unchecked_mode.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/assertions/semantics/override_with_enforce_semantic.pass.cpp (+2-4) 
- (modified) libcxx/test/libcxx/assertions/semantics/override_with_ignore_semantic.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/assertions/semantics/override_with_observe_semantic.pass.cpp (+2-4) 
- (modified) libcxx/test/libcxx/assertions/semantics/override_with_quick_enforce_semantic.pass.cpp (+2-4) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.compare_exchange_strong.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.compare_exchange_weak.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.ctor.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.load.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.store.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/atomics/atomics.ref/assert.wait.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/associative/debug.non-strict-weak-ordering.pass.cpp (+1-1) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.map/assert.input_range.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.map/assert.sorted_unique.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.multimap/assert.input_range.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.multimap/assert.sorted_equivalent.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.multiset/assert.sorted_unique.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/container.adaptors/flat.set/assert.sorted_unique.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/deque/assert.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/deque/assert.pop_back.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/forwardlist/assert.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/list/list.modifiers/assert.erase_iter.end.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/list/list.modifiers/assert.pop_back.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector.bool/assert.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.back.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.cback.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.cfront.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.cindex.oob.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.front.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.index.oob.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.iterator.add.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.iterator.decrement.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.iterator.dereference.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.iterator.increment.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.iterator.index.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/sequences/vector/assert.pop_back.empty.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.bucket.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.bucket_size.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.local_iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.local_iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.map/assert.max_load_factor.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.bucket.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.bucket_size.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.local_iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.local_iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multimap/assert.max_load_factor.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.bucket.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.bucket_size.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.local_iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.local_iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.multiset/assert.max_load_factor.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.bucket.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.bucket_size.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.local_iterator.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.local_iterator.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/unord/unord.set/assert.max_load_factor.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.index_operator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.stride.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.index_operator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.stride.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.conversion.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.non_unique.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.non_unique.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.index_operator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.stride.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/mdspan/assert.conversion.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/mdspan/assert.index_operator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/mdspan/mdspan/assert.size.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/containers/views/views.span/assert.iterator-indexing.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.cons/assert.iter_sent.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.cons/assert.iter_size.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.cons/assert.other_span.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.cons/assert.range.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.elem/assert.back.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.elem/assert.front.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.elem/assert.op_idx.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.sub/assert.first.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.sub/assert.last.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/containers/views/views.span/span.sub/assert.subspan.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/input.output/filesystems/class.path/path.itr/assert.iterator.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/iterators/assert.advance.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/iterators/assert.next.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/iterators/assert.prev.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/iterators/bounded_iter/dereference.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/iterators/capacity_aware_iter/assert.pass.cpp (+1-1) 
- (modified) libcxx/test/libcxx/iterators/predef.iterators/counted.iterator/assert.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/iterators/predef.iterators/iterators.common/assert.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/mem/mem.res/ctor.nullptr.assert.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/numerics/numarray/assert.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/numerics/numarray/class.gslice.array/assert.get.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/numerics/numarray/class.indirect.array/assert.get.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/numerics/numarray/class.mask.array/assert.get.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/numerics/numarray/class.slice.array/assert.get.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/assert.begin.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/assert.find-next.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/assert.find-prev.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/assert.deref.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/range.chunk.by.iter/assert.increment.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.concat/iterator.valueless_by_exception.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.drop.while/assert.begin.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/assert.equal.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer/assert.equal.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.stride.view/ctor.assert.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.stride.view/iterator/dereference.assert.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.stride.view/iterator/increment.assert.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/ranges/range.adaptors/range.stride.view/iterator/operator_plus_equal.assert.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/ranges/range.factories/range.repeat.view/ctor.piecewise.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/ranges/range.factories/range.repeat.view/ctor.value.bound.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.cfront.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.cindex.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.front.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.access/assert.index.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.add.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.decrement.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.dereference.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.increment.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.index.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.append.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.assign.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.erase_iter.null.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/string.view/assert.ctor.length.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/text/text_encoding/text_encoding.ctor/assert.id.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/text/text_encoding/text_encoding.ctor/assert.string_view.pass.cpp (+1-2) 
- (modified) libcxx/test/libcxx/thread/futures/futures.promise/assert.set_exception.pass.cpp (+2-4) 
- (modified) libcxx/test/libcxx/thread/futures/futures.promise/assert.set_exception_at_thread_exit.pass.cpp (+2-4) 
- (modified) libcxx/test/libcxx/thread/thread.barrier/assert.arrive.pass.cpp (+1-5) 
- (modified) libcxx/test/libcxx/thread/thread.barrier/assert.ctor.pass.cpp (+1-5) 
- (modified) libcxx/test/libcxx/thread/thread.latch/assert.arrive_and_wait.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/thread/thread.latch/assert.count_down.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/thread/thread.latch/assert.ctor.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/thread/thread.semaphore/assert.ctor.pass.cpp (+1-5) 
- (modified) libcxx/test/libcxx/thread/thread.semaphore/assert.release.pass.cpp (+1-5) 
- (modified) libcxx/test/libcxx/time/time.clock/time.clock.gps/time.clock.gps.members/assert.from_utc.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.clock/time.clock.gps/time.clock.gps.members/assert.to_utc.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.clock/time.clock.tai/time.clock.tai.members/assert.from_utc.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.clock/time.clock.tai/time.clock.tai.members/assert.to_utc.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.zone/time.zone.exception/time.zone.exception.ambig/assert.ctor.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.zone/time.zone.exception/time.zone.exception.nonexist/assert.ctor.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/assert.to_local.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/assert.to_sys.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/assert.to_sys_choose.pass.cpp (+2-5) 
- (modified) libcxx/test/libcxx/utilities/assert.exception_guard.no_exceptions.pass.cpp (+1-4) 
- (modified) libcxx/test/libcxx/utilities/expected/expected.expected/assert.arrow.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/expected/expected.expected/assert.deref.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/expected/expected.expected/assert.error.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/expected/expected.void/assert.deref.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/expected/expected.void/assert.error.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/format/format.arguments/format.arg/assert.array.pass.cpp (+2-2) 
- (modified) libcxx/test/libcxx/utilities/function.objects/func.wrap/func.wrap.ref/func.wrap.ref.ctor/assert.constant_arg_ptr.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/function.objects/func.wrap/func.wrap.ref/func.wrap.ref.ctor/assert.function_ptr.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/optional/optional.iterator/assert.arithmetic.pass.cpp (+2-1) 
- (modified) libcxx/test/libcxx/utilities/optional/optional.object/optional.iterator/assert.bounded_iterator.pass.cpp (+1-1) 
- (modified) libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/assert.dereference.pass.cpp (+1-3) 
- (modified) libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/assert.op_arrow.pass.cpp (+1-3) 


``````````diff
diff --git a/libcxx/docs/TestingLibcxx.rst b/libcxx/docs/TestingLibcxx.rst
index aaeceda29fe15..8b902518a204b 100644
--- a/libcxx/docs/TestingLibcxx.rst
+++ b/libcxx/docs/TestingLibcxx.rst
@@ -556,39 +556,36 @@ Testing hardening assertions
 ============================
 
 Each hardening assertion should be tested using death tests (via the
-``TEST_LIBCPP_ASSERT_FAILURE`` macro). Use the ``libcpp-hardening-mode`` Lit
-feature to make sure the assertion is enabled in (and only in) the intended
-modes. The convention is to use `assert.` in the name of the test file to make
-it easier to identify as a hardening test, e.g. ``assert.my_func.pass.cpp``.
+``TEST_LIBCPP_ASSERT_FAILURE`` macro). The convention is to use ``assert.`` in
+the name of the test file to make it easier to identify as a hardening test, e.g.
+``assert.my_func.pass.cpp``.
+
+These tests only make sense in configurations where the death test machinery in
+``check_assertion.h`` is usable, where a failing assertion is observable, and
+where the assertion being tested is enabled in the first place. Use the various
+``can-test-hardening-assertions-<mode>`` Lit features to guard the tests accordingly.
+The bare ``can-test-hardening-assertions`` Lit feature only encodes whether the death
+test machinery is usable; it is meant for tests that select a hardening mode or an
+assertion semantic themselves (see the tests under ``libcxx/test/libcxx/assertions/``).
+
 A toy example:
 
 .. code-block:: cpp
 
-  // Note: the following three annotations are currently needed to use the
-  // `TEST_LIBCPP_ASSERT_FAILURE`.
-  // REQUIRES: has-unix-headers
-  // UNSUPPORTED: c++03
-  // XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
-
-  // Example: only run this test in `fast`/`extensive`/`debug` modes.
-  // UNSUPPORTED: libcpp-hardening-mode=none
-  // Example: only run this test in the `debug` mode.
-  // REQUIRES: libcpp-hardening-mode=debug
-  // Example: only run this test in `extensive`/`debug` modes.
-  // REQUIRES: libcpp-hardening-mode={{extensive|debug}}
+  // Example: `std::foo(...)` uses `_LIBCPP_ASSERT_NON_NULL`, which is
+  // enabled in the `extensive` and `debug` modes.
+  // REQUIRES: can-test-hardening-assertions-extensive
 
-  #include <header_being_tested>
+  #include <stdfoo>
 
   #include "check_assertion.h" // Contains the `TEST_LIBCPP_ASSERT_FAILURE` macro
 
   int main(int, char**) {
-    std::type_being_tested foo;
     int bad_input = -1;
-    TEST_LIBCPP_ASSERT_FAILURE(foo.some_function_that_asserts(bad_input),
-        "The expected assertion message");
+    TEST_LIBCPP_ASSERT_FAILURE(std::foo(bad_input), "The expected assertion message");
 
     return 0;
   }
 
-Note that error messages are only tested (matched) if the ``debug``
-hardening mode is used.
+Note that error messages are only tested (matched) when the assertion semantic in
+effect logs one, i.e. ``enforce`` or ``observe``.
diff --git a/libcxx/test/libcxx-03/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp b/libcxx/test/libcxx-03/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp
index 5043a88cbc3da..c0b1c5073e63f 100644
--- a/libcxx/test/libcxx-03/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp
+++ b/libcxx/test/libcxx-03/strings/string.view/string.view.iterators/assert.iterator-indexing.pass.cpp
@@ -8,8 +8,8 @@
 
 // Make sure that std::string_view's iterators check for OOB accesses when the debug mode is enabled.
 
-// REQUIRES: has-unix-headers, libcpp-has-abi-bounded-iterators
-// UNSUPPORTED: libcpp-hardening-mode=none
+// REQUIRES: can-test-hardening-assertions-fast
+// REQUIRES: libcpp-has-abi-bounded-iterators
 
 #include <iterator>
 #include <string_view>
diff --git a/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_left.pass.cpp b/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_left.pass.cpp
index 0d29ebc1b3390..da075e6249f11 100644
--- a/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_left.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_left.pass.cpp
@@ -8,10 +8,8 @@
 
 // <algorithm>
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
-// UNSUPPORTED: libcpp-hardening-mode=none
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 #include <algorithm>
 #include <array>
diff --git a/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_right.pass.cpp b/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_right.pass.cpp
index 2c6f54304eacf..d964ad3a645c4 100644
--- a/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_right.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.modifying.operations/alg.shift/assert.shift_right.pass.cpp
@@ -8,10 +8,8 @@
 
 // <algorithm>
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
-// UNSUPPORTED: libcpp-hardening-mode=none
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 #include <algorithm>
 #include <array>
diff --git a/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.for_each_n.pass.cpp b/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.for_each_n.pass.cpp
index 5ae0dbc865b46..926b310dd21a7 100644
--- a/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.for_each_n.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.for_each_n.pass.cpp
@@ -14,10 +14,8 @@
 //
 // [alg.foreach] requires `n >= 0`; passing a negative count is a precondition violation.
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-hardening-mode=none
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 #include <algorithm>
 
diff --git a/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.ranges.for_each_n.pass.cpp b/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.ranges.for_each_n.pass.cpp
index e57f342e760a6..3b4c3fc399cae 100644
--- a/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.ranges.for_each_n.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.nonmodifying/alg.foreach/assert.ranges.for_each_n.pass.cpp
@@ -15,10 +15,8 @@
 //
 // [alg.foreach] requires `n >= 0`; passing a negative count is a precondition violation.
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14, c++17
-// UNSUPPORTED: libcpp-hardening-mode=none
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 #include <algorithm>
 #include <array>
diff --git a/libcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp b/libcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp
index 7e765d7e84683..f8aa1b3135743 100644
--- a/libcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.sorting/assert.min.max.pass.cpp
@@ -8,10 +8,8 @@
 
 // <algorithm>
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14, c++17
-// UNSUPPORTED: libcpp-hardening-mode=none
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 #include <algorithm>
 #include <array>
diff --git a/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.oob.pass.cpp b/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.oob.pass.cpp
index 6ddee1b2aabe0..0250f84294d7b 100644
--- a/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.oob.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.oob.pass.cpp
@@ -6,13 +6,12 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-fast
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 // In the debug mode, the comparator validations will notice that it doesn't satisfy strict weak ordering before the
 // algorithm actually runs and goes out of bounds, so the test will terminate before the tested assertions are
 // triggered.
-// UNSUPPORTED: libcpp-hardening-mode=none, libcpp-hardening-mode=debug
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
+// UNSUPPORTED: libcpp-hardening-mode=debug
 
 #include <algorithm>
 #include <cassert>
diff --git a/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.pass.cpp b/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.pass.cpp
index 92671617eb032..5f0710140aa61 100644
--- a/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/alg.sorting/assert.sort.invalid_comparator/assert.sort.invalid_comparator.pass.cpp
@@ -6,10 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions-debug
 // UNSUPPORTED: c++03, c++11, c++14, c++17
-// REQUIRES: libcpp-hardening-mode=debug
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
 
 // This test uses a specific combination of an invalid comparator and sequence of values to
 // ensure that our sorting functions do not go out-of-bounds and satisfy strict weak ordering in that case.
diff --git a/libcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp b/libcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp
index 701edd1335afa..3661484c73c97 100644
--- a/libcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/debug_less.inconsistent.pass.cpp
@@ -12,8 +12,7 @@
 
 // Make sure __debug_less asserts when the comparator is not consistent.
 
-// REQUIRES: has-unix-headers, libcpp-hardening-mode=debug
-// UNSUPPORTED: c++03
+// REQUIRES: can-test-hardening-assertions-debug
 
 #include <algorithm>
 #include <iterator>
diff --git a/libcxx/test/libcxx/algorithms/debug_less.pass.cpp b/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
index 4889f94d170a1..84cde29bffe84 100644
--- a/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
@@ -12,8 +12,7 @@
 
 // __debug_less checks that a comparator actually provides a strict-weak ordering.
 
-// REQUIRES: has-unix-headers, libcpp-hardening-mode=debug
-// UNSUPPORTED: c++03
+// REQUIRES: can-test-hardening-assertions-debug
 
 #include <algorithm>
 #include <cassert>
diff --git a/libcxx/test/libcxx/algorithms/debug_three_way_comp.inconsistent.pass.cpp b/libcxx/test/libcxx/algorithms/debug_three_way_comp.inconsistent.pass.cpp
index b9bb1c9136f65..cd184573d2ef4 100644
--- a/libcxx/test/libcxx/algorithms/debug_three_way_comp.inconsistent.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/debug_three_way_comp.inconsistent.pass.cpp
@@ -12,7 +12,7 @@
 
 // Make sure __debug_three_way_comp asserts when the comparator is not consistent.
 
-// REQUIRES: libcpp-hardening-mode=debug
+// REQUIRES: can-test-hardening-assertions-debug
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 
 #include <algorithm>
diff --git a/libcxx/test/libcxx/assertions/modes/debug.pass.cpp b/libcxx/test/libcxx/assertions/modes/debug.pass.cpp
index ea9770b0b2fbc..6b4b7aba66f47 100644
--- a/libcxx/test/libcxx/assertions/modes/debug.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/debug.pass.cpp
@@ -10,10 +10,7 @@
 // by default.
 
 // REQUIRES: libcpp-hardening-mode=debug
-// `check_assertion.h` is only available starting from C++11.
-// UNSUPPORTED: c++03
-// `check_assertion.h` requires Unix headers.
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions
 
 #include <cassert>
 #include "check_assertion.h"
diff --git a/libcxx/test/libcxx/assertions/modes/extensive.pass.cpp b/libcxx/test/libcxx/assertions/modes/extensive.pass.cpp
index 5743f95e472d7..24fd734528d45 100644
--- a/libcxx/test/libcxx/assertions/modes/extensive.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/extensive.pass.cpp
@@ -10,10 +10,7 @@
 // has been enabled by default.
 
 // REQUIRES: libcpp-hardening-mode=extensive
-// `check_assertion.h` is only available starting from C++11.
-// UNSUPPORTED: c++03
-// `check_assertion.h` requires Unix headers.
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions
 
 #include <cassert>
 #include "check_assertion.h"
diff --git a/libcxx/test/libcxx/assertions/modes/fast.pass.cpp b/libcxx/test/libcxx/assertions/modes/fast.pass.cpp
index 85181859fdad0..8af86c36e34f9 100644
--- a/libcxx/test/libcxx/assertions/modes/fast.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/fast.pass.cpp
@@ -10,10 +10,7 @@
 // been enabled by default.
 
 // REQUIRES: libcpp-hardening-mode=fast
-// `check_assertion.h` is only available starting from C++11.
-// UNSUPPORTED: c++03
-// `check_assertion.h` requires Unix headers.
-// REQUIRES: has-unix-headers
+// REQUIRES: can-test-hardening-assertions
 
 #include <cassert>
 #include "check_assertion.h"
diff --git a/libcxx/test/libcxx/assertions/modes/override_with_debug_mode.pass.cpp b/libcxx/test/libcxx/assertions/modes/override_with_debug_mode.pass.cpp
index 02565d0b6a176..ec52a03689bd5 100644
--- a/libcxx/test/libcxx/assertions/modes/override_with_debug_mode.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/override_with_debug_mode.pass.cpp
@@ -8,9 +8,7 @@
 
 // This test ensures that we can override any hardening mode with the debug mode on a per-TU basis.
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
+// REQUIRES: can-test-hardening-assertions
 // The ability to set a custom abort message is required to compare the assertion message.
 // XFAIL: availability-verbose_abort-missing
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_HARDENING_MODE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG
diff --git a/libcxx/test/libcxx/assertions/modes/override_with_extensive_mode.pass.cpp b/libcxx/test/libcxx/assertions/modes/override_with_extensive_mode.pass.cpp
index 74fe70feb077c..c6c2891576eda 100644
--- a/libcxx/test/libcxx/assertions/modes/override_with_extensive_mode.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/override_with_extensive_mode.pass.cpp
@@ -8,12 +8,7 @@
 
 // This test ensures that we can override any hardening mode with the extensive hardening mode on a per-TU basis.
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
-// The ability to set a custom abort message is required to compare the assertion message (which only happens in the
-// debug mode).
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
+// REQUIRES: can-test-hardening-assertions
 // HWASAN replaces TRAP with abort or error exit code.
 // XFAIL: hwasan
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_HARDENING_MODE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE
diff --git a/libcxx/test/libcxx/assertions/modes/override_with_fast_mode.pass.cpp b/libcxx/test/libcxx/assertions/modes/override_with_fast_mode.pass.cpp
index f243897a986b0..eff7680cab063 100644
--- a/libcxx/test/libcxx/assertions/modes/override_with_fast_mode.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/override_with_fast_mode.pass.cpp
@@ -8,12 +8,7 @@
 
 // This test ensures that we can override any hardening mode with the fast mode on a per-TU basis.
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
-// The ability to set a custom abort message is required to compare the assertion message (which only happens in the
-// debug mode).
-// XFAIL: libcpp-hardening-mode=debug && availability-verbose_abort-missing
+// REQUIRES: can-test-hardening-assertions
 // HWASAN replaces TRAP with abort or error exit code.
 // XFAIL: hwasan
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_HARDENING_MODE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST
diff --git a/libcxx/test/libcxx/assertions/modes/override_with_unchecked_mode.pass.cpp b/libcxx/test/libcxx/assertions/modes/override_with_unchecked_mode.pass.cpp
index 0922556c8dc01..34fc04687c4f7 100644
--- a/libcxx/test/libcxx/assertions/modes/override_with_unchecked_mode.pass.cpp
+++ b/libcxx/test/libcxx/assertions/modes/override_with_unchecked_mode.pass.cpp
@@ -8,9 +8,7 @@
 
 // This test ensures that we can override any hardening mode with the unchecked mode on a per-TU basis.
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
+// REQUIRES: can-test-hardening-assertions
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_HARDENING_MODE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE
 
 #include <cassert>
diff --git a/libcxx/test/libcxx/assertions/semantics/override_with_enforce_semantic.pass.cpp b/libcxx/test/libcxx/assertions/semantics/override_with_enforce_semantic.pass.cpp
index 056864e1aea71..6ff03892f9cbc 100644
--- a/libcxx/test/libcxx/assertions/semantics/override_with_enforce_semantic.pass.cpp
+++ b/libcxx/test/libcxx/assertions/semantics/override_with_enforce_semantic.pass.cpp
@@ -9,10 +9,8 @@
 // This test ensures that we can override the assertion semantic used by any checked hardening mode with `enforce` on
 // a per-TU basis (this is valid for the `debug` mode as well, though a no-op).
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
-// UNSUPPORTED: libcpp-hardening-mode=none, libcpp-has-no-experimental-hardening-observe-semantic
+// REQUIRES: can-test-hardening-assertions-fast
+// UNSUPPORTED: libcpp-has-no-experimental-hardening-observe-semantic
 // The ability to set a custom abort message is required to compare the assertion message.
 // XFAIL: availability-verbose_abort-missing
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_ASSERTION_SEMANTIC -D_LIBCPP_ASSERTION_SEMANTIC=_LIBCPP_ASSERTION_SEMANTIC_ENFORCE
diff --git a/libcxx/test/libcxx/assertions/semantics/override_with_ignore_semantic.pass.cpp b/libcxx/test/libcxx/assertions/semantics/override_with_ignore_semantic.pass.cpp
index b8c9028fe2e5c..e66220ba99aca 100644
--- a/libcxx/test/libcxx/assertions/semantics/override_with_ignore_semantic.pass.cpp
+++ b/libcxx/test/libcxx/assertions/semantics/override_with_ignore_semantic.pass.cpp
@@ -9,9 +9,7 @@
 // This test ensures that we can override the assertion semantic used by any hardening mode with `ignore` on a per-TU
 // basis (this is valid for the `none` mode as well, though a no-op).
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix headers and regex support.
-// REQUIRES: has-unix-headers
-// UNSUPPORTED: c++03, no-localization
+// REQUIRES: can-test-hardening-assertions
 // UNSUPPORTED: libcpp-has-no-experimental-hardening-observe-semantic
 // ADDITIONAL_COMPILE_FLAGS: -U_LIBCPP_ASSERTION_SEMANTIC -D_LIBCPP_ASSERTION_SEMANTIC=_LIBCPP_ASSERTION_SEMANTIC_IGNORE
 
diff --git a/libcxx/test/libcxx/assertions/semantics/override_with_observe_semantic.pass.cpp b/libcxx/test/libcxx/assertions/semantics/override_with_observe_semantic.pass.cpp
index a14c44f5a8e73..b354893b7b811 100644
--- a/libcxx/test/libcxx/assertions/semantics/override_with_observe_semantic.pass.cpp
+++ b/libcxx/test/libcxx/assertions/semantics/override_with_observe_semantic.pass.cpp
@@ -9,10 +9,8 @@
 // This test ensures that we can override the assertion semantic used by any checked hardening mode with `observe` on
 // a per-TU basis.
 
-// `check_assertion.h` is only available starting from C++11 and requires Unix head...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/213294


More information about the libcxx-commits mailing list