#include #include #include #include #include #include #include #include TEST(Runtime, ArcadiaSourceRoot) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename { auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("ARCADIA_SOURCE_ROOT", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, ArcadiaSourceRoot()); } { NTesting::TScopedEnvironment guard("ARCADIA_SOURCE_ROOT", ""); Singleton()->ReInitialize(); EXPECT_FALSE(ArcadiaSourceRoot().empty()); } } TEST(Runtime, BuildRoot) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename { auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("ARCADIA_BUILD_ROOT", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, BuildRoot()); } { NTesting::TScopedEnvironment guard("ARCADIA_BUILD_ROOT", ""); Singleton()->ReInitialize(); EXPECT_FALSE(BuildRoot().empty()); } } TEST(Runtime, BinaryPath) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename Singleton()->ReInitialize(); EXPECT_TRUE(TFsPath(BinaryPath("library/cpp/testing/common/ut")).Exists()); } TEST(Runtime, GetArcadiaTestsData) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename { auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("ARCADIA_TESTS_DATA_DIR", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, GetArcadiaTestsData()); } { NTesting::TScopedEnvironment guard("ARCADIA_TESTS_DATA_DIR", ""); Singleton()->ReInitialize(); auto path = GetArcadiaTestsData(); // it is not error if path is empty const bool ok = (path.empty() || GetBaseName(path) == "arcadia_tests_data"); EXPECT_TRUE(ok); } } TEST(Runtime, GetWorkPath) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename { auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("TEST_WORK_PATH", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, GetWorkPath()); } { NTesting::TScopedEnvironment guard("TEST_WORK_PATH", ""); Singleton()->ReInitialize(); EXPECT_TRUE(!GetWorkPath().empty()); } } TEST(Runtime, GetOutputPath) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename Singleton()->ReInitialize(); EXPECT_EQ(GetOutputPath().Basename(), "testing_out_stuff"); } TEST(Runtime, GetRamDrivePath) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("YA_TEST_RAM_DRIVE_PATH", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, GetRamDrivePath()); } TEST(Runtime, GetOutputRamDrivePath) { NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename auto tmpDir = ::GetSystemTempDir(); NTesting::TScopedEnvironment guard("YA_TEST_OUTPUT_RAM_DRIVE_PATH", tmpDir); Singleton()->ReInitialize(); EXPECT_EQ(tmpDir, GetOutputRamDrivePath()); } #ifdef _linux_ TEST(Runtime, GdbPath) { Singleton()->ReInitialize(); EXPECT_TRUE(NFs::Exists(::GdbPath())); } #endif TString ReInitializeContext(TStringBuf data) { auto tmpDir = ::GetSystemTempDir(); auto filename = tmpDir + "/context.json"; TOFStream stream(filename); stream.Write(data.data(), data.size()); stream.Finish(); NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", filename); Singleton()->ReInitialize(); return filename; } TEST(Runtime, GetTestParam) { TString context = R"json({ "runtime": { "test_params": { "a": "b", "c": "d" } } })json"; auto filename = ReInitializeContext(context); EXPECT_EQ("b", GetTestParam("a")); EXPECT_EQ("d", GetTestParam("c")); EXPECT_EQ("", GetTestParam("e")); EXPECT_EQ("w", GetTestParam("e", "w")); Singleton()->AddTestParam("e", "e"); EXPECT_EQ("e", GetTestParam("e")); } TEST(Runtime, WatchProcessCore) { TString context = R"json({ "internal": { "core_search_file": "watch_core.txt" } })json"; auto filename = ReInitializeContext(context); WatchProcessCore(1, "bin1", "pwd"); WatchProcessCore(2, "bin1"); StopProcessCoreWatching(2); TIFStream file("watch_core.txt"); auto data = file.ReadAll(); TString expected = R"json({"cmd":"add","pid":1,"binary_path":"bin1","cwd":"pwd"} {"cmd":"add","pid":2,"binary_path":"bin1"} {"cmd":"drop","pid":2} )json"; EXPECT_EQ(expected, data); } TEST(Runtime, GlobalResources) { TString context = R"json({ "resources": { "global": { "TOOL_NAME_RESOURCE_GLOBAL": "path" } } })json"; auto filename = ReInitializeContext(context); EXPECT_EQ("path", GetGlobalResource("TOOL_NAME_RESOURCE_GLOBAL")); }