diff --git a/unittests/Support/Path.cpp b/unittests/Support/Path.cpp index df3c5fd0f32..24f16fd1696 100644 --- a/unittests/Support/Path.cpp +++ b/unittests/Support/Path.cpp @@ -8,12 +8,15 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/Path.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/Triple.h" #include "llvm/Support/ConvertUTF.h" #include "llvm/Support/Errc.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/Host.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/raw_ostream.h" #include "gtest/gtest.h" @@ -441,6 +444,31 @@ protected: } void TearDown() override { ASSERT_NO_ERROR(fs::remove(TestDirectory.str())); } + + SmallVector UnsupportedArchs; + SmallVector UnsupportedOSs; + SmallVector UnsupportedEnvironments; + + bool isUnsupportedOSOrEnvironment() { + Triple Host(Triple::normalize(sys::getProcessTriple())); + + if (find(UnsupportedEnvironments, Host.getEnvironment()) != + UnsupportedEnvironments.end()) + return true; + + if (is_contained(UnsupportedOSs, Host.getOS())) + return true; + + if (is_contained(UnsupportedArchs, Host.getArch())) + return true; + + return false; + } + + FileSystemTest() { + UnsupportedArchs.push_back(Triple::mips); + UnsupportedArchs.push_back(Triple::mipsel); + } }; TEST_F(FileSystemTest, Unique) { @@ -1136,7 +1164,15 @@ TEST_F(FileSystemTest, OpenFileForRead) { ::close(FileDescriptor); } +#define CHECK_UNSUPPORTED() \ + do { \ + if (isUnsupportedOSOrEnvironment()) \ + return; \ + } while (0); \ + TEST_F(FileSystemTest, is_local) { + CHECK_UNSUPPORTED(); + SmallString<128> CurrentPath; ASSERT_NO_ERROR(fs::current_path(CurrentPath));