mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-16 13:56:29 +00:00
Bug 1790614 - Part 1: Add helpers for asserting nsresult in gtest, r=ahal
These helpers are inspired by the gtest-provided {ASSERT,ENSURE}_HRESULT_{SUCCEEDED,FAILED} macros. These are intended as replacements for patterns like ENSURE_TRUE(NS_SUCCEEDED(rv)) which will actually report the encountered nsresult error code code when they fail. Differential Revision: https://phabricator.services.mozilla.com/D157213
This commit is contained in:
parent
a2593348c1
commit
8aa98212cc
38
testing/gtest/mozilla/MozAssertions.cpp
Normal file
38
testing/gtest/mozilla/MozAssertions.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "MozAssertions.h"
|
||||
#include "mozilla/ErrorNames.h"
|
||||
#include "nsString.h"
|
||||
|
||||
namespace mozilla::gtest {
|
||||
|
||||
static testing::AssertionResult NsresultFailureHelper(const char* expr,
|
||||
const char* expected,
|
||||
nsresult rv) {
|
||||
nsAutoCString name;
|
||||
GetErrorName(rv, name);
|
||||
|
||||
return testing::AssertionFailure()
|
||||
<< "Expected: " << expr << " " << expected << ".\n"
|
||||
<< " Actual: " << name << "\n";
|
||||
}
|
||||
|
||||
testing::AssertionResult IsNsresultSuccess(const char* expr, nsresult rv) {
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
return testing::AssertionSuccess();
|
||||
}
|
||||
return NsresultFailureHelper(expr, "succeeds", rv);
|
||||
}
|
||||
|
||||
testing::AssertionResult IsNsresultFailure(const char* expr, nsresult rv) {
|
||||
if (NS_FAILED(rv)) {
|
||||
return testing::AssertionSuccess();
|
||||
}
|
||||
return NsresultFailureHelper(expr, "failed", rv);
|
||||
}
|
||||
|
||||
} // namespace mozilla::gtest
|
32
testing/gtest/mozilla/MozAssertions.h
Normal file
32
testing/gtest/mozilla/MozAssertions.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef mozilla_gtest_MozAssertions_h__
|
||||
#define mozilla_gtest_MozAssertions_h__
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "nsError.h"
|
||||
|
||||
namespace mozilla::gtest {
|
||||
|
||||
testing::AssertionResult IsNsresultSuccess(const char* expr, nsresult rv);
|
||||
testing::AssertionResult IsNsresultFailure(const char* expr, nsresult rv);
|
||||
|
||||
} // namespace mozilla::gtest
|
||||
|
||||
#define EXPECT_NS_SUCCEEDED(expr) \
|
||||
EXPECT_PRED_FORMAT1(::mozilla::gtest::IsNsresultSuccess, (expr))
|
||||
|
||||
#define ASSERT_NS_SUCCEEDED(expr) \
|
||||
ASSERT_PRED_FORMAT1(::mozilla::gtest::IsNsresultSuccess, (expr))
|
||||
|
||||
#define EXPECT_NS_FAILED(expr) \
|
||||
EXPECT_PRED_FORMAT1(::mozilla::gtest::IsNsresultFailure, (expr))
|
||||
|
||||
#define ASSERT_NS_FAILED(expr) \
|
||||
ASSERT_PRED_FORMAT1(::mozilla::gtest::IsNsresultFailure, (expr))
|
||||
|
||||
#endif // mozilla_gtest_MozAssertions_h__
|
@ -17,8 +17,13 @@ if CONFIG["ENABLE_TESTS"]:
|
||||
"gmock-custom/gmock-port.h",
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.gtest += [
|
||||
"MozAssertions.h",
|
||||
]
|
||||
|
||||
SOURCES += [
|
||||
"GTestRunner.cpp",
|
||||
"MozAssertions.cpp",
|
||||
"MozGTestBench.cpp",
|
||||
"SanityTest.cpp",
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user