aboutsummaryrefslogtreecommitdiffstats
path: root/parser/modify_test.go
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-03-21 18:10:01 -0700
committerColin Cross <ccross@android.com>2018-04-10 16:50:39 -0700
commit957b39cba5d16836eda1fe8412fa164102e80cd8 (patch)
tree690503714d3e355165fa97a066cc3eec4053d67f /parser/modify_test.go
parentfdeaf881f44fbccf478112bda2d091b20b65cc0f (diff)
downloadandroid_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.tar.gz
android_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.tar.bz2
android_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.zip
Add Patch and PatchList for making textual changes
Patch and PatchList provide an API for making changes to substrings of a Blueprint file by parsing the AST and using the token positions to perform text replacements. Test: modify_test.go Change-Id: Ibb8993221982b54602ba5a05486198fab8d35a67
Diffstat (limited to 'parser/modify_test.go')
-rw-r--r--parser/modify_test.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/parser/modify_test.go b/parser/modify_test.go
new file mode 100644
index 0000000..95fc293
--- /dev/null
+++ b/parser/modify_test.go
@@ -0,0 +1,65 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package parser
+
+import (
+ "bytes"
+ "testing"
+)
+
+func TestPatchList(t *testing.T) {
+ expectOverlap := func(err error) {
+ t.Helper()
+ if _, ok := err.(PatchOverlapError); !ok {
+ t.Error("missing PatchOverlapError")
+ }
+ }
+
+ expectOk := func(err error) {
+ t.Helper()
+ if err != nil {
+ t.Error(err)
+ }
+ }
+
+ in := []byte("abcdefghijklmnopqrstuvwxyz")
+
+ patchlist := PatchList{}
+ expectOk(patchlist.Add(0, 3, "ABC"))
+ expectOk(patchlist.Add(12, 15, "MNO"))
+ expectOk(patchlist.Add(24, 26, "Z"))
+ expectOk(patchlist.Add(15, 15, "_"))
+
+ expectOverlap(patchlist.Add(0, 3, "x"))
+ expectOverlap(patchlist.Add(12, 13, "x"))
+ expectOverlap(patchlist.Add(13, 14, "x"))
+ expectOverlap(patchlist.Add(14, 15, "x"))
+ expectOverlap(patchlist.Add(11, 13, "x"))
+ expectOverlap(patchlist.Add(12, 15, "x"))
+ expectOverlap(patchlist.Add(11, 15, "x"))
+ expectOverlap(patchlist.Add(15, 15, "x"))
+
+ if t.Failed() {
+ return
+ }
+
+ buf := new(bytes.Buffer)
+ patchlist.Apply(bytes.NewReader(in), buf)
+ expected := "ABCdefghijklMNO_pqrstuvwxZ"
+ got := buf.String()
+ if got != expected {
+ t.Errorf("expected %q, got %q", expected, got)
+ }
+}