#include "yql_issue_utils.h" #include "yql_issue.h" #include "yql_issue_id.h" #include #include using namespace NYql; Y_UNIT_TEST_SUITE(TIssueUtilsTest) { Y_UNIT_TEST(TruncLevels1) { auto level0 = MakeIntrusive("level0"); auto level1 = MakeIntrusive("level1"); auto level2 = MakeIntrusive("level2"); auto level30 = MakeIntrusive("level30"); auto level31 = MakeIntrusive("level31"); auto level40 = MakeIntrusive("level40"); auto level41 = MakeIntrusive("level41"); auto level51 = MakeIntrusive("level51"); /* * * 0 * | * * 1 * | * * 2 -- * | | * * 30 * 31 * | | * * 40 * 41 * | * * 51 */ level0->AddSubIssue(level1); level1->AddSubIssue(level2); level2->AddSubIssue(level30); level2->AddSubIssue(level31); level30->AddSubIssue(level40); level31->AddSubIssue(level41); level41->AddSubIssue(level51); { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(4).SetKeepTailLevels(2))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: level1
: Error: (skipped levels)
: Error: level30
: Error: level40
: Error: level41
: Error: level51 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(3).SetKeepTailLevels(1))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: level1
: Error: (skipped levels)
: Error: level40
: Error: level51 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } } Y_UNIT_TEST(TruncLevels2) { auto level0 = MakeIntrusive("level0"); auto level1 = MakeIntrusive("level1"); auto level2 = MakeIntrusive("level2"); auto level3 = MakeIntrusive("level3"); auto level40 = MakeIntrusive("level40"); auto level41 = MakeIntrusive("level41"); /* * * 0 * | * * 1 * | * * 2 * | * * 3 -- * | | * * 40 * 41 */ level0->AddSubIssue(level1); level1->AddSubIssue(level2); level2->AddSubIssue(level3); level3->AddSubIssue(level40); level3->AddSubIssue(level41); { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(4).SetKeepTailLevels(2))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: level1
: Error: (skipped levels)
: Error: level3
: Error: level40
: Error: level41 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } } Y_UNIT_TEST(TruncLevels3) { auto level0 = MakeIntrusive("level0"); auto level1 = MakeIntrusive("level1"); auto level2 = MakeIntrusive("level2"); auto level3 = MakeIntrusive("level3"); auto level40 = MakeIntrusive("level40"); auto level41 = MakeIntrusive("level41"); auto level50 = MakeIntrusive("level50"); /* * * 0 * | * * 1 * | * * 2 * | * * 3 -- * | | * * 40 | * | | * * 50 * 41 */ level0->AddSubIssue(level1); level1->AddSubIssue(level2); level2->AddSubIssue(level3); level3->AddSubIssue(level40); level3->AddSubIssue(level41); level40->AddSubIssue(level50); { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(4).SetKeepTailLevels(1))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: level1
: Error: level2
: Error: (skipped levels)
: Error: level41
: Error: level50 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(4).SetKeepTailLevels(2))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: level1
: Error: (skipped levels)
: Error: level3
: Error: level41
: Error: level40
: Error: level50 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } { const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(4).SetKeepTailLevels(3))}).ToString(); const auto expected = R"___(
: Error: level0
: Error: (skipped levels)
: Error: level2
: Error: level3
: Error: level40
: Error: level50
: Error: level41 )___"; UNIT_ASSERT_STRINGS_EQUAL(res, expected); } } Y_UNIT_TEST(KeepSeverity) { const auto templ = R"___(
: {severity}: level0, code: 1
: {severity}: level1, code: 1 )___"; for (auto severity: {ESeverity::TSeverityIds_ESeverityId_S_INFO, ESeverity::TSeverityIds_ESeverityId_S_WARNING, ESeverity::TSeverityIds_ESeverityId_S_ERROR, ESeverity::TSeverityIds_ESeverityId_S_FATAL}) { auto level0 = MakeIntrusive(TIssue("level0").SetCode(1, severity)); auto level1 = MakeIntrusive(TIssue("level1").SetCode(1, severity)); level0->AddSubIssue(level1); const auto res = TIssues({TruncateIssueLevels(*level0, TTruncateIssueOpts().SetMaxLevels(15).SetKeepTailLevels(3))}).ToString(); const auto expected = SubstGlobalCopy(templ, "{severity}", SeverityToString(severity)); UNIT_ASSERT_STRINGS_EQUAL(res, expected); } } }