diff --git a/sdk/bp_test.go b/sdk/bp_test.go index f89f38c1c..c630c2524 100644 --- a/sdk/bp_test.go +++ b/sdk/bp_test.go @@ -57,7 +57,7 @@ func TestTransformRemoveProperty(t *testing.T) { contents := &generatedContents{} outputPropertySet(contents, set) - helper.AssertTrimmedStringEquals("removing property failed", "name: \"name\",\\n", contents.content.String()) + helper.AssertTrimmedStringEquals("removing property failed", "name: \"name\",\n", contents.content.String()) } func TestTransformRemovePropertySet(t *testing.T) { @@ -72,5 +72,5 @@ func TestTransformRemovePropertySet(t *testing.T) { contents := &generatedContents{} outputPropertySet(contents, set) - helper.AssertTrimmedStringEquals("removing property set failed", "name: \"name\",\\n", contents.content.String()) + helper.AssertTrimmedStringEquals("removing property set failed", "name: \"name\",\n", contents.content.String()) } diff --git a/sdk/testing.go b/sdk/testing.go index 14a397c68..436175419 100644 --- a/sdk/testing.go +++ b/sdk/testing.go @@ -207,7 +207,7 @@ type testSdkResult struct { // e.g. find the src/dest pairs from each cp command, the various zip files // generated, etc. func (r *testSdkResult) getSdkSnapshotBuildInfo(sdk *sdk) *snapshotBuildInfo { - androidBpContents := strings.NewReplacer("\\n", "\n").Replace(sdk.GetAndroidBpContentsForTests()) + androidBpContents := sdk.GetAndroidBpContentsForTests() info := &snapshotBuildInfo{ r: r, diff --git a/sdk/update.go b/sdk/update.go index d43a42d6e..476a4a5ea 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -87,18 +87,23 @@ func (gc *generatedContents) Dedent() { } func (gc *generatedContents) Printfln(format string, args ...interface{}) { - // ninja consumes newline characters in rspfile_content. Prevent it by - // escaping the backslash in the newline character. The extra backslash - // is removed when the rspfile is written to the actual script file - fmt.Fprintf(&(gc.content), strings.Repeat(" ", gc.indentLevel)+format+"\\n", args...) + fmt.Fprintf(&(gc.content), strings.Repeat(" ", gc.indentLevel)+format+"\n", args...) } func (gf *generatedFile) build(pctx android.PackageContext, ctx android.BuilderContext, implicits android.Paths) { rb := android.NewRuleBuilder() - // convert \\n to \n + + content := gf.content.String() + + // ninja consumes newline characters in rspfile_content. Prevent it by + // escaping the backslash in the newline character. The extra backslash + // is removed when the rspfile is written to the actual script file + content = strings.ReplaceAll(content, "\n", "\\n") + rb.Command(). Implicits(implicits). - Text("echo").Text(proptools.ShellEscape(gf.content.String())). + Text("echo").Text(proptools.ShellEscape(content)). + // convert \\n to \n Text("| sed 's/\\\\n/\\n/g' >").Output(gf.path) rb.Command(). Text("chmod a+x").Output(gf.path)