[libc] Add a macro to include/exclude subprocess tests.

This is useful when bringing up LLVM libc on a new OS on which we do not
yet have the subprocess related helper functions.
This commit is contained in:
Siva Chandra Reddy 2021-06-08 23:30:21 +00:00
parent f4c8fd12d5
commit 6344a583ca
3 changed files with 25 additions and 0 deletions

View file

@ -262,6 +262,8 @@ bool Test::testMatch(bool MatchResult, MatcherBase &Matcher, const char *LHSStr,
return false; return false;
} }
#ifdef ENABLE_SUBPROCESS_TESTS
bool Test::testProcessKilled(testutils::FunctionCaller *Func, int Signal, bool Test::testProcessKilled(testutils::FunctionCaller *Func, int Signal,
const char *LHSStr, const char *RHSStr, const char *LHSStr, const char *RHSStr,
const char *File, unsigned long Line) { const char *File, unsigned long Line) {
@ -344,6 +346,7 @@ bool Test::testProcessExits(testutils::FunctionCaller *Func, int ExitCode,
return false; return false;
} }
#endif // ENABLE_SUBPROCESS_TESTS
} // namespace testing } // namespace testing
} // namespace __llvm_libc } // namespace __llvm_libc

View file

@ -12,6 +12,8 @@
// This file can only include headers from utils/CPP/ or utils/testutils. No // This file can only include headers from utils/CPP/ or utils/testutils. No
// other headers should be included. // other headers should be included.
#include "PlatformDefs.h"
#include "utils/CPP/TypeTraits.h" #include "utils/CPP/TypeTraits.h"
#include "utils/testutils/ExecuteFunction.h" #include "utils/testutils/ExecuteFunction.h"
#include "utils/testutils/StreamWrapper.h" #include "utils/testutils/StreamWrapper.h"
@ -360,6 +362,8 @@ template <typename... Types> using TypeList = internal::TypeList<Types...>;
if (!EXPECT_FALSE(VAL)) \ if (!EXPECT_FALSE(VAL)) \
return return
#ifdef ENABLE_SUBPROCESS_TESTS
#define EXPECT_EXITS(FUNC, EXIT) \ #define EXPECT_EXITS(FUNC, EXIT) \
this->testProcessExits(__llvm_libc::testing::Test::createCallable(FUNC), \ this->testProcessExits(__llvm_libc::testing::Test::createCallable(FUNC), \
EXIT, #FUNC, #EXIT, __FILE__, __LINE__) EXIT, #FUNC, #EXIT, __FILE__, __LINE__)
@ -380,6 +384,8 @@ template <typename... Types> using TypeList = internal::TypeList<Types...>;
#define __CAT(a, b) __CAT1(a, b) #define __CAT(a, b) __CAT1(a, b)
#define UNIQUE_VAR(prefix) __CAT(prefix, __LINE__) #define UNIQUE_VAR(prefix) __CAT(prefix, __LINE__)
#endif // ENABLE_SUBPROCESS_TESTS
#define EXPECT_THAT(MATCH, MATCHER) \ #define EXPECT_THAT(MATCH, MATCHER) \
do { \ do { \
auto UNIQUE_VAR(__matcher) = (MATCHER); \ auto UNIQUE_VAR(__matcher) = (MATCHER); \

View file

@ -0,0 +1,16 @@
//===-- Platform specific defines for the unittest library ------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_UTILS_UNITTEST_PLATFORMDEFS_H
#define LLVM_LIBC_UTILS_UNITTEST_PLATFORMDEFS_H
#if !(defined(_WIN32) || defined(_WIN64))
#define ENABLE_SUBPROCESS_TESTS
#endif
#endif // LLVM_LIBC_UTILS_UNITTEST_PLATFORMDEFS_H