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:
Roger Ferrer Ibanez 2016-12-01 17:36:41 +00:00
parent f3fce920ff
commit de344ac83b
2 changed files with 11 additions and 7 deletions

View File

@ -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()

View File

@ -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
}