forked from OSchip/llvm-project
Protect sequences test under libcpp-no-exceptions
Replace throw with TEST_THROW and protect tests that do throw. Also add missing assert(false). Differential Revision: https://reviews.llvm.org/D27252 llvm-svn: 288383
This commit is contained in:
parent
f3fce920ff
commit
de344ac83b
|
@ -7,7 +7,6 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: libcpp-no-exceptions
|
||||
// <list>
|
||||
|
||||
// iterator insert(const_iterator position, size_type n, const value_type& x);
|
||||
|
@ -20,6 +19,7 @@
|
|||
|
||||
#include "min_allocator.h"
|
||||
#include "count_new.hpp"
|
||||
#include "test_macros.h"
|
||||
|
||||
template <class List>
|
||||
void test() {
|
||||
|
@ -29,6 +29,7 @@ void test() {
|
|||
typename List::iterator i = l1.insert(next(l1.cbegin()), 5, 4);
|
||||
assert(i == next(l1.begin()));
|
||||
assert(l1 == List(a2, a2+8));
|
||||
#ifndef TEST_HAS_NO_EXCEPTIONS
|
||||
globalMemCounter.throw_after = 4;
|
||||
int save_count = globalMemCounter.outstanding_new;
|
||||
try
|
||||
|
@ -41,6 +42,7 @@ void test() {
|
|||
}
|
||||
assert(globalMemCounter.checkOutstandingNewEq(save_count));
|
||||
assert(l1 == List(a2, a2+8));
|
||||
#endif
|
||||
}
|
||||
|
||||
int main()
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: libcpp-no-exceptions
|
||||
// <vector>
|
||||
|
||||
// void push_back(const value_type& x);
|
||||
|
@ -16,10 +15,10 @@
|
|||
#include <cassert>
|
||||
|
||||
#include "asan_testing.h"
|
||||
#include "test_macros.h"
|
||||
|
||||
// Flag that makes the copy constructor for CMyClass throw an exception
|
||||
static bool gCopyConstructorShouldThow = false;
|
||||
|
||||
static bool gCopyConstructorShouldThrow = false;
|
||||
|
||||
class CMyClass {
|
||||
public: CMyClass(int tag);
|
||||
|
@ -52,8 +51,8 @@ CMyClass::CMyClass(const CMyClass& iOther) :
|
|||
fMagicValue(kStartedConstructionMagicValue), fTag(iOther.fTag)
|
||||
{
|
||||
// If requested, throw an exception _before_ setting fMagicValue to kFinishedConstructionMagicValue
|
||||
if (gCopyConstructorShouldThow) {
|
||||
throw std::exception();
|
||||
if (gCopyConstructorShouldThrow) {
|
||||
TEST_THROW(std::exception());
|
||||
}
|
||||
// Signal that the constructor has finished running
|
||||
fMagicValue = kFinishedConstructionMagicValue;
|
||||
|
@ -76,12 +75,15 @@ int main()
|
|||
assert(is_contiguous_container_asan_correct(vec));
|
||||
assert(is_contiguous_container_asan_correct(vec2));
|
||||
|
||||
gCopyConstructorShouldThow = true;
|
||||
#ifndef TEST_HAS_NO_EXCEPTIONS
|
||||
gCopyConstructorShouldThrow = true;
|
||||
try {
|
||||
vec.push_back(instance);
|
||||
assert(false);
|
||||
}
|
||||
catch (...) {
|
||||
assert(vec==vec2);
|
||||
assert(is_contiguous_container_asan_correct(vec));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue