Merge "bp2build/queryview: codegen control sequences literally." am: a5dcb03450 am: 8442e2a79c am: 9ffae96f0b

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1657881

Change-Id: If95509260666ea3ac027665836ee0b0e4f94315f
This commit is contained in:
Jingwen Chen 2021-03-31 00:21:19 +00:00 committed by Automerger Merge Worker
commit b9eef2ec4b
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",
)`,
},
}