Icantjuddle created this revision. Icantjuddle added a reviewer: clang-format. Herald added a project: All. Icantjuddle requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Github Issue <https://github.com/llvm/llvm-project/issues/62871> Basically adding an empty `TextProto` section causes the formatting of `TextProto` raw strings to change and spaces to be added after the `: `. This diff adds a test that reproduces this issus. It is currently disabled as it is failing, here is the output: ❯ build/tools/clang/unittests/Format/FormatTests --gtest_filter='FormatTestRawStrings.DISABLED*' --gtest_also_run_disabled_tests Note: Google Test filter = FormatTestRawStrings.DISABLED* [==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from FormatTestRawStrings [ RUN ] FormatTestRawStrings.DISABLED_FormatsCorrectlyWhenTextProtoIsInOwnSection /home/bjudd/code/llvm-project/clang/unittests/Format/FormatTestRawStrings.cpp:134: Failure Expected equality of these values: Expected Which is: "\nt = R\"pb(item: 1)pb\";" Actual Which is: "\nt = R\"pb(item : 1)pb\";" With diff: @@ -1,2 +1,2 @@ -t = R\"pb(item: 1)pb\"; +t = R\"pb(item : 1)pb\"; [ FAILED ] FormatTestRawStrings.DISABLED_FormatsCorrectlyWhenTextProtoIsInOwnSection (7 ms) [----------] 1 test from FormatTestRawStrings (7 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test suite ran. (7 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] FormatTestRawStrings.DISABLED_FormatsCorrectlyWhenTextProtoIsInOwnSection 1 FAILED TEST Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D151145 Files: clang/unittests/Format/FormatTestRawStrings.cpp Index: clang/unittests/Format/FormatTestRawStrings.cpp =================================================================== --- clang/unittests/Format/FormatTestRawStrings.cpp +++ clang/unittests/Format/FormatTestRawStrings.cpp @@ -75,6 +75,31 @@ return Style; } + FormatStyle getRawStringPbStyleSeparateSection() { + constexpr const char *FormatStr = R"format(--- +BasedOnStyle: LLVM +ColumnLimit: 40 +RawStringFormats: + - Language: TextProto + Delimiters: + - 'pb' + BasedOnStyle: google +--- +Language: TextProto +# Don't set any options. +... +)format"; + llvm::MemoryBufferRef ConfigBuffer(FormatStr, "ClangFormatConfig"); + FormatStyle Style = {}; + Style.Language = FormatStyle::LK_Cpp; + if (auto Err = parseConfiguration(ConfigBuffer, &Style)) { + llvm::dbgs() << Err.value(); + llvm::dbgs() << Err.message(); + assert(Err); + } + return Style; + } + FormatStyle getRawStringLLVMCppStyleBasedOn(std::string BasedOnStyle) { FormatStyle Style = getLLVMStyle(); Style.RawStringFormats = { @@ -164,6 +189,18 @@ getRawStringPbStyleWithColumns(40))); } +// Currently a bug in how configs are processed: +// See: https://github.com/llvm/llvm-project/issues/62871 +TEST_F(FormatTestRawStrings, + DISABLED_FormatsCorrectlyWhenTextProtoIsInOwnSection) { + // TextProto formatting works when in a RawString. + expect_eq(R"test( +t = R"pb(item: 1)pb";)test", + format(R"test( +t = R"pb(item:1)pb";)test", + getRawStringPbStyleSeparateSection())); +} + TEST_F(FormatTestRawStrings, RespectsClangFormatOff) { expect_eq(R"test( // clang-format off
Index: clang/unittests/Format/FormatTestRawStrings.cpp =================================================================== --- clang/unittests/Format/FormatTestRawStrings.cpp +++ clang/unittests/Format/FormatTestRawStrings.cpp @@ -75,6 +75,31 @@ return Style; } + FormatStyle getRawStringPbStyleSeparateSection() { + constexpr const char *FormatStr = R"format(--- +BasedOnStyle: LLVM +ColumnLimit: 40 +RawStringFormats: + - Language: TextProto + Delimiters: + - 'pb' + BasedOnStyle: google +--- +Language: TextProto +# Don't set any options. +... +)format"; + llvm::MemoryBufferRef ConfigBuffer(FormatStr, "ClangFormatConfig"); + FormatStyle Style = {}; + Style.Language = FormatStyle::LK_Cpp; + if (auto Err = parseConfiguration(ConfigBuffer, &Style)) { + llvm::dbgs() << Err.value(); + llvm::dbgs() << Err.message(); + assert(Err); + } + return Style; + } + FormatStyle getRawStringLLVMCppStyleBasedOn(std::string BasedOnStyle) { FormatStyle Style = getLLVMStyle(); Style.RawStringFormats = { @@ -164,6 +189,18 @@ getRawStringPbStyleWithColumns(40))); } +// Currently a bug in how configs are processed: +// See: https://github.com/llvm/llvm-project/issues/62871 +TEST_F(FormatTestRawStrings, + DISABLED_FormatsCorrectlyWhenTextProtoIsInOwnSection) { + // TextProto formatting works when in a RawString. + expect_eq(R"test( +t = R"pb(item: 1)pb";)test", + format(R"test( +t = R"pb(item:1)pb";)test", + getRawStringPbStyleSeparateSection())); +} + TEST_F(FormatTestRawStrings, RespectsClangFormatOff) { expect_eq(R"test( // clang-format off
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits