Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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