diff options
author | robot-piglet <[email protected]> | 2025-04-10 17:08:18 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-04-10 17:19:18 +0300 |
commit | ad6f8c8e4e2fa19203ed9f28d4eb74827e937d3e (patch) | |
tree | 0aa939adc5e6508e0ba3bdef2c7b467f110af735 | |
parent | e4ca0cae001c7a0cc845bca18daff015123a1294 (diff) |
Intermediate changes
commit_hash:9f456514216b568e1c58c25d3902d410da1e76cf
-rw-r--r-- | yql/essentials/public/fastcheck/format.cpp | 17 | ||||
-rw-r--r-- | yql/essentials/public/fastcheck/linter_ut.cpp | 20 |
2 files changed, 36 insertions, 1 deletions
diff --git a/yql/essentials/public/fastcheck/format.cpp b/yql/essentials/public/fastcheck/format.cpp index d4717b4bf79..b487c56fc19 100644 --- a/yql/essentials/public/fastcheck/format.cpp +++ b/yql/essentials/public/fastcheck/format.cpp @@ -25,6 +25,21 @@ TString NormalizeEOL(TStringBuf input) { return res; } +TString ReplaceHidden(TStringBuf input) { + TStringBuilder res; + for (const auto c : input) { + if (c == ' ') { + res << "\xe2\x80\xa2"; + } else if (c == '\t') { + res << "\xe2\x86\x92"; + } else { + res << c; + } + } + + return res; +} + class TFormatRunner : public ICheckRunner { public: TString GetCheckName() const final { @@ -107,7 +122,7 @@ private: } auto issue = TIssue(origPos, TStringBuilder() << - "Format mismatch, expected:\n" << formattedSample << "\nbut got:\n" << origSample); + "Format mismatch, expected:\n" << ReplaceHidden(formattedSample) << "\nbut got:\n" << ReplaceHidden(origSample) << "\n"); issue.SetCode(EYqlIssueCode::TIssuesIds_EIssueCode_WARNING, ESeverity::TSeverityIds_ESeverityId_S_WARNING); res.Issues.AddIssue(issue); } diff --git a/yql/essentials/public/fastcheck/linter_ut.cpp b/yql/essentials/public/fastcheck/linter_ut.cpp index c0315d20cf3..c7f7cb45d20 100644 --- a/yql/essentials/public/fastcheck/linter_ut.cpp +++ b/yql/essentials/public/fastcheck/linter_ut.cpp @@ -173,6 +173,26 @@ Y_UNIT_TEST_SUITE(TLinterTests) { UNIT_ASSERT_VALUES_EQUAL(pos.Column, 13); } + Y_UNIT_TEST(BadFormatYqlHidden) { + TChecksRequest request; + request.Program = "select\t1 "; + request.Syntax = ESyntax::YQL; + request.Filters.ConstructInPlace(); + request.Filters->push_back(TCheckFilter{.CheckNameGlob = "format"}); + auto res = RunChecks(request); + UNIT_ASSERT_VALUES_EQUAL(res.Checks.size(), 1); + UNIT_ASSERT_VALUES_EQUAL(res.Checks[0].CheckName, "format"); + UNIT_ASSERT(!res.Checks[0].Success); + UNIT_ASSERT_NO_DIFF(res.Checks[0].Issues.ToString(), + "<main>:1:0: Warning: Format mismatch, expected:\n" + "SELECT\n" + "••••1\n" + ";\n\n" + "but got:\n" + "select→1•\n" + ", code: 3\n"); + } + Y_UNIT_TEST(GoodParserSExpr) { TChecksRequest request; request.Program = "((return world))"; |