CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
153 lines
5.9 KiB
C++
153 lines
5.9 KiB
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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Support/VirtualOutputConfig.h"
|
|
#include "llvm/Support/FileSystem.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
using namespace llvm;
|
|
using namespace llvm::vfs;
|
|
|
|
namespace {
|
|
|
|
TEST(VirtualOutputConfigTest, construct) {
|
|
// Test defaults.
|
|
EXPECT_FALSE(OutputConfig().getText());
|
|
EXPECT_FALSE(OutputConfig().getCRLF());
|
|
EXPECT_TRUE(OutputConfig().getDiscardOnSignal());
|
|
EXPECT_TRUE(OutputConfig().getAtomicWrite());
|
|
EXPECT_TRUE(OutputConfig().getImplyCreateDirectories());
|
|
EXPECT_FALSE(OutputConfig().getOnlyIfDifferent());
|
|
EXPECT_FALSE(OutputConfig().getAppend());
|
|
|
|
// Test inverted defaults.
|
|
EXPECT_TRUE(OutputConfig().getNoText());
|
|
EXPECT_TRUE(OutputConfig().getNoCRLF());
|
|
EXPECT_FALSE(OutputConfig().getNoDiscardOnSignal());
|
|
EXPECT_FALSE(OutputConfig().getNoAtomicWrite());
|
|
EXPECT_FALSE(OutputConfig().getNoImplyCreateDirectories());
|
|
EXPECT_TRUE(OutputConfig().getNoOnlyIfDifferent());
|
|
EXPECT_TRUE(OutputConfig().getNoAppend());
|
|
}
|
|
|
|
TEST(VirtualOutputConfigTest, set) {
|
|
// Check a flag that defaults to false. Try both 'get's, all three 'set's,
|
|
// and turning back off after turning it on.
|
|
ASSERT_TRUE(OutputConfig().getNoText());
|
|
EXPECT_TRUE(OutputConfig().setText().getText());
|
|
EXPECT_FALSE(OutputConfig().setText().getNoText());
|
|
EXPECT_TRUE(OutputConfig().setText(true).getText());
|
|
EXPECT_FALSE(OutputConfig().setText().setNoText().getText());
|
|
EXPECT_FALSE(OutputConfig().setText().setText(false).getText());
|
|
|
|
// Check a flag that defaults to true. Try both 'get's, all three 'set's, and
|
|
// turning back on after turning it off.
|
|
ASSERT_TRUE(OutputConfig().getDiscardOnSignal());
|
|
EXPECT_FALSE(OutputConfig().setNoDiscardOnSignal().getDiscardOnSignal());
|
|
EXPECT_TRUE(OutputConfig().setNoDiscardOnSignal().getNoDiscardOnSignal());
|
|
EXPECT_FALSE(OutputConfig().setDiscardOnSignal(false).getDiscardOnSignal());
|
|
EXPECT_TRUE(OutputConfig()
|
|
.setNoDiscardOnSignal()
|
|
.setDiscardOnSignal()
|
|
.getDiscardOnSignal());
|
|
EXPECT_TRUE(OutputConfig()
|
|
.setNoDiscardOnSignal()
|
|
.setDiscardOnSignal(true)
|
|
.getDiscardOnSignal());
|
|
|
|
// Set multiple flags.
|
|
OutputConfig Config;
|
|
Config.setText().setNoDiscardOnSignal().setNoImplyCreateDirectories();
|
|
EXPECT_TRUE(Config.getText());
|
|
EXPECT_TRUE(Config.getNoDiscardOnSignal());
|
|
EXPECT_TRUE(Config.getNoImplyCreateDirectories());
|
|
}
|
|
|
|
TEST(VirtualOutputConfigTest, equals) {
|
|
EXPECT_TRUE(OutputConfig() == OutputConfig());
|
|
EXPECT_FALSE(OutputConfig() != OutputConfig());
|
|
EXPECT_EQ(OutputConfig().setAtomicWrite(), OutputConfig().setAtomicWrite());
|
|
EXPECT_NE(OutputConfig().setAtomicWrite(), OutputConfig().setNoAtomicWrite());
|
|
}
|
|
|
|
static std::string toString(OutputConfig Config) {
|
|
std::string Printed;
|
|
raw_string_ostream OS(Printed);
|
|
Config.print(OS);
|
|
return Printed;
|
|
}
|
|
|
|
TEST(VirtualOutputConfigTest, print) {
|
|
EXPECT_EQ("{}", toString(OutputConfig()));
|
|
EXPECT_EQ("{Text}", toString(OutputConfig().setText()));
|
|
EXPECT_EQ("{Text,NoDiscardOnSignal}",
|
|
toString(OutputConfig().setText().setNoDiscardOnSignal()));
|
|
EXPECT_EQ("{Text,NoDiscardOnSignal}",
|
|
toString(OutputConfig().setNoDiscardOnSignal().setText()));
|
|
}
|
|
|
|
TEST(VirtualOutputConfigTest, BinaryAndTextWithCRLF) {
|
|
// Test defaults.
|
|
EXPECT_TRUE(OutputConfig().getBinary());
|
|
EXPECT_FALSE(OutputConfig().getTextWithCRLF());
|
|
EXPECT_FALSE(OutputConfig().getText());
|
|
EXPECT_FALSE(OutputConfig().getCRLF());
|
|
|
|
// Test setting.
|
|
EXPECT_TRUE(OutputConfig().setTextWithCRLF().getTextWithCRLF());
|
|
EXPECT_TRUE(OutputConfig().setTextWithCRLF().getText());
|
|
EXPECT_TRUE(OutputConfig().setTextWithCRLF().getCRLF());
|
|
EXPECT_TRUE(OutputConfig().setText().setCRLF().getTextWithCRLF());
|
|
EXPECT_FALSE(OutputConfig().setText().getBinary());
|
|
EXPECT_FALSE(OutputConfig().setTextWithCRLF().getBinary());
|
|
EXPECT_FALSE(OutputConfig().setTextWithCRLF().setBinary().getText());
|
|
EXPECT_FALSE(OutputConfig().setTextWithCRLF().setBinary().getCRLF());
|
|
|
|
// Test setTextWithCRLF(bool).
|
|
EXPECT_TRUE(OutputConfig().setBinary().setTextWithCRLF(true).getText());
|
|
EXPECT_TRUE(OutputConfig().setBinary().setTextWithCRLF(true).getCRLF());
|
|
EXPECT_TRUE(
|
|
OutputConfig().setTextWithCRLF().setTextWithCRLF(false).getBinary());
|
|
|
|
// Test printing.
|
|
EXPECT_EQ("{Text,CRLF}", toString(OutputConfig().setTextWithCRLF()));
|
|
}
|
|
|
|
TEST(VirtualOutputConfigTest, OpenFlags) {
|
|
using namespace llvm::sys::fs;
|
|
|
|
// Confirm the default is binary.
|
|
ASSERT_EQ(OutputConfig().setBinary(), OutputConfig());
|
|
|
|
// Most flags are not supported / have no effect.
|
|
EXPECT_EQ(OutputConfig(), OutputConfig().setOpenFlags(OF_None));
|
|
EXPECT_EQ(OutputConfig(), OutputConfig().setOpenFlags(OF_Delete));
|
|
EXPECT_EQ(OutputConfig(), OutputConfig().setOpenFlags(OF_ChildInherit));
|
|
EXPECT_EQ(OutputConfig(), OutputConfig().setOpenFlags(OF_UpdateAtime));
|
|
|
|
// Check setting OF_Text and OF_CRLF.
|
|
for (OutputConfig Init : {
|
|
OutputConfig(),
|
|
OutputConfig().setText(),
|
|
OutputConfig().setTextWithCRLF(),
|
|
OutputConfig().setAppend(),
|
|
|
|
// Should be overridden despite being invalid.
|
|
OutputConfig().setCRLF(),
|
|
}) {
|
|
EXPECT_EQ(OutputConfig(), Init.setOpenFlags(OF_None));
|
|
EXPECT_EQ(OutputConfig(), Init.setOpenFlags(OF_CRLF));
|
|
EXPECT_EQ(OutputConfig().setText(), Init.setOpenFlags(OF_Text));
|
|
EXPECT_EQ(OutputConfig().setTextWithCRLF(),
|
|
Init.setOpenFlags(OF_TextWithCRLF));
|
|
EXPECT_EQ(OutputConfig().setAppend(), Init.setOpenFlags(OF_Append));
|
|
}
|
|
}
|
|
|
|
} // anonymous namespace
|