Merge "bp2build/queryview: codegen control sequences literally."

This commit is contained in:
Jingwen Chen 2021-03-30 21:57:09 +00:00 committed by Gerrit Code Review
commit a5dcb03450
2 changed files with 23 additions and 0 deletions

View File

@ -568,6 +568,13 @@ func isZero(value reflect.Value) bool {
func escapeString(s string) string {
s = strings.ReplaceAll(s, "\\", "\\\\")
// b/184026959: Reverse the application of some common control sequences.
// These must be generated literally in the BUILD file.
s = strings.ReplaceAll(s, "\t", "\\t")
s = strings.ReplaceAll(s, "\n", "\\n")
s = strings.ReplaceAll(s, "\r", "\\r")
return strings.ReplaceAll(s, "\"", "\\\"")
}

View File

@ -239,6 +239,22 @@ func TestGenerateBazelTargetModules(t *testing.T) {
"b",
],
string_prop = "a",
)`,
},
{
bp: `custom {
name: "control_characters",
string_list_prop: ["\t", "\n"],
string_prop: "a\t\n\r",
bazel_module: { bp2build_available: true },
}`,
expectedBazelTarget: `custom(
name = "control_characters",
string_list_prop = [
"\t",
"\n",
],
string_prop = "a\t\n\r",
)`,
},
}