102 lines
2.6 KiB
C++
102 lines
2.6 KiB
C++
//===-- tsan_flags_test.cc ------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file is a part of ThreadSanitizer (TSan), a race detector.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#include "tsan_flags.h"
|
|
#include "tsan_rtl.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace __tsan {
|
|
|
|
TEST(Flags, Basic) {
|
|
ScopedInRtl in_rtl;
|
|
// At least should not crash.
|
|
Flags f = {};
|
|
InitializeFlags(&f, 0);
|
|
InitializeFlags(&f, "");
|
|
}
|
|
|
|
TEST(Flags, ParseBool) {
|
|
ScopedInRtl in_rtl;
|
|
Flags f = {};
|
|
|
|
f.enable_annotations = false;
|
|
InitializeFlags(&f, "enable_annotations");
|
|
EXPECT_EQ(f.enable_annotations, true);
|
|
|
|
f.enable_annotations = false;
|
|
InitializeFlags(&f, "--enable_annotations");
|
|
EXPECT_EQ(f.enable_annotations, true);
|
|
|
|
f.enable_annotations = false;
|
|
InitializeFlags(&f, "--enable_annotations=1");
|
|
EXPECT_EQ(f.enable_annotations, true);
|
|
|
|
// This flag is false by default.
|
|
f.force_seq_cst_atomics = false;
|
|
InitializeFlags(&f, "--force_seq_cst_atomics=1");
|
|
EXPECT_EQ(f.force_seq_cst_atomics, true);
|
|
|
|
f.enable_annotations = true;
|
|
InitializeFlags(&f, "asdas enable_annotations=0 asdasd");
|
|
EXPECT_EQ(f.enable_annotations, false);
|
|
|
|
f.enable_annotations = true;
|
|
InitializeFlags(&f, " --enable_annotations=0 ");
|
|
EXPECT_EQ(f.enable_annotations, false);
|
|
}
|
|
|
|
TEST(Flags, ParseInt) {
|
|
ScopedInRtl in_rtl;
|
|
Flags f = {};
|
|
|
|
f.exitcode = -11;
|
|
InitializeFlags(&f, "exitcode");
|
|
EXPECT_EQ(f.exitcode, 0);
|
|
|
|
f.exitcode = -11;
|
|
InitializeFlags(&f, "--exitcode=");
|
|
EXPECT_EQ(f.exitcode, 0);
|
|
|
|
f.exitcode = -11;
|
|
InitializeFlags(&f, "--exitcode=42");
|
|
EXPECT_EQ(f.exitcode, 42);
|
|
|
|
f.exitcode = -11;
|
|
InitializeFlags(&f, "--exitcode=-42");
|
|
EXPECT_EQ(f.exitcode, -42);
|
|
}
|
|
|
|
TEST(Flags, ParseStr) {
|
|
ScopedInRtl in_rtl;
|
|
Flags f = {};
|
|
|
|
InitializeFlags(&f, 0);
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, ""));
|
|
|
|
InitializeFlags(&f, "strip_path_prefix");
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, ""));
|
|
|
|
InitializeFlags(&f, "--strip_path_prefix=");
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, ""));
|
|
|
|
InitializeFlags(&f, "--strip_path_prefix=abc");
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, "abc"));
|
|
|
|
InitializeFlags(&f, "--strip_path_prefix='abc zxc'");
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, "abc zxc"));
|
|
|
|
InitializeFlags(&f, "--strip_path_prefix=\"abc zxc\"");
|
|
EXPECT_EQ(0, strcmp(f.strip_path_prefix, "abc zxc"));
|
|
}
|
|
|
|
} // namespace __tsan
|