123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #include <library/cpp/testing/common/env.h>
- #include <library/cpp/testing/common/scope.h>
- #include <library/cpp/testing/gtest/gtest.h>
- #include <util/folder/dirut.h>
- #include <util/stream/file.h>
- #include <util/system/env.h>
- #include <util/system/execpath.h>
- #include <util/system/fs.h>
- TEST(Runtime, ArcadiaSourceRoot) {
- NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename
- {
- auto tmpDir = ::GetSystemTempDir();
- NTesting::TScopedEnvironment guard("ARCADIA_SOURCE_ROOT", tmpDir);
- Singleton<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_EQ(tmpDir, ArcadiaSourceRoot());
- }
- {
- NTesting::TScopedEnvironment guard("ARCADIA_SOURCE_ROOT", "");
- Singleton<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_EQ(tmpDir, BuildRoot());
- }
- {
- NTesting::TScopedEnvironment guard("ARCADIA_BUILD_ROOT", "");
- Singleton<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_FALSE(BuildRoot().empty());
- }
- }
- TEST(Runtime, BinaryPath) {
- NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename
- Singleton<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_EQ(tmpDir, GetArcadiaTestsData());
- }
- {
- NTesting::TScopedEnvironment guard("ARCADIA_TESTS_DATA_DIR", "");
- Singleton<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_EQ(tmpDir, GetWorkPath());
- }
- {
- NTesting::TScopedEnvironment guard("TEST_WORK_PATH", "");
- Singleton<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_TRUE(!GetWorkPath().empty());
- }
- }
- TEST(Runtime, GetOutputPath) {
- NTesting::TScopedEnvironment contextGuard("YA_TEST_CONTEXT_FILE", ""); // remove context filename
- Singleton<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->ReInitialize();
- EXPECT_EQ(tmpDir, GetOutputRamDrivePath());
- }
- #ifdef _linux_
- TEST(Runtime, GdbPath) {
- Singleton<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->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<NPrivate::TTestEnv>()->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"));
- }
|