aboutsummaryrefslogtreecommitdiffstats
path: root/bpfix
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2018-05-07 13:32:09 -0700
committerDan Willemsen <dwillemsen@google.com>2018-05-07 13:32:09 -0700
commitdde8cb961589782c8cd3566560193de804d40fb5 (patch)
treefc09aa3833e630e803f2ac403df4bc7d020372a9 /bpfix
parent028f42f002ffb679e9e8816ce74bb15623203b0f (diff)
downloadbuild_soong-dde8cb961589782c8cd3566560193de804d40fb5.tar.gz
build_soong-dde8cb961589782c8cd3566560193de804d40fb5.tar.bz2
build_soong-dde8cb961589782c8cd3566560193de804d40fb5.zip
bpfix: Remove local_include_dirs if we remove the last entry
This still leaves a blank line in it's place, but that's a more general problem. Test: m blueprint_tools Test: Run bpfix over AOSP, diff. Change-Id: I55c1d1c183cfa49beeca07abd539348bc2524c5a
Diffstat (limited to 'bpfix')
-rw-r--r--bpfix/bpfix/bpfix.go6
-rw-r--r--bpfix/bpfix/bpfix_test.go24
2 files changed, 21 insertions, 9 deletions
diff --git a/bpfix/bpfix/bpfix.go b/bpfix/bpfix/bpfix.go
index d5c318c5..a610a178 100644
--- a/bpfix/bpfix/bpfix.go
+++ b/bpfix/bpfix/bpfix.go
@@ -389,7 +389,7 @@ func (f *Fixer) removeMatchingModuleListProperties(canonicalName string, legacyN
continue
}
legacyList, ok := getLiteralListProperty(mod, legacyName)
- if !ok {
+ if !ok || len(legacyList.Values) == 0 {
continue
}
canonicalList, ok := getLiteralListProperty(mod, canonicalName)
@@ -397,6 +397,10 @@ func (f *Fixer) removeMatchingModuleListProperties(canonicalName string, legacyN
continue
}
filterExpressionList(legacyList, canonicalList)
+
+ if len(legacyList.Values) == 0 {
+ removeProperty(mod, legacyName)
+ }
}
return nil
}
diff --git a/bpfix/bpfix/bpfix_test.go b/bpfix/bpfix/bpfix_test.go
index 51708eb6..8fed0a2d 100644
--- a/bpfix/bpfix/bpfix_test.go
+++ b/bpfix/bpfix/bpfix_test.go
@@ -73,20 +73,24 @@ func implFilterListTest(t *testing.T, local_include_dirs []string, export_includ
// lookup legacy property
mod := fixer.tree.Defs[0].(*parser.Module)
- _, found := mod.GetProperty("local_include_dirs")
- if !found {
- t.Fatalf("failed to include key local_include_dirs in parse tree")
+
+ expectedResultString := fmt.Sprintf("%q", expectedResult)
+ if expectedResult == nil {
+ expectedResultString = "unset"
}
// check that the value for the legacy property was updated to the correct value
errorHeader := fmt.Sprintf("\nFailed to correctly simplify key 'local_include_dirs' in the presence of 'export_include_dirs.'\n"+
"original local_include_dirs: %q\n"+
"original export_include_dirs: %q\n"+
- "expected result: %q\n"+
+ "expected result: %s\n"+
"actual result: ",
- local_include_dirs, export_include_dirs, expectedResult)
- result, ok := mod.GetProperty("local_include_dirs")
- if !ok {
+ local_include_dirs, export_include_dirs, expectedResultString)
+ result, found := mod.GetProperty("local_include_dirs")
+ if !found {
+ if expectedResult == nil {
+ return
+ }
t.Fatal(errorHeader + "property not found")
}
@@ -95,6 +99,10 @@ func implFilterListTest(t *testing.T, local_include_dirs []string, export_includ
t.Fatalf("%sproperty is not a list: %v", errorHeader, listResult)
}
+ if expectedResult == nil {
+ t.Fatalf("%sproperty exists: %v", errorHeader, listResult)
+ }
+
actualExpressions := listResult.Values
actualValues := make([]string, 0)
for _, expr := range actualExpressions {
@@ -109,7 +117,7 @@ func implFilterListTest(t *testing.T, local_include_dirs []string, export_includ
func TestSimplifyKnownVariablesDuplicatingEachOther(t *testing.T) {
// TODO use []Expression{} once buildTree above can support it (which is after b/38325146 is done)
- implFilterListTest(t, []string{"include"}, []string{"include"}, []string{})
+ implFilterListTest(t, []string{"include"}, []string{"include"}, nil)
implFilterListTest(t, []string{"include1"}, []string{"include2"}, []string{"include1"})
implFilterListTest(t, []string{"include1", "include2", "include3", "include4"}, []string{"include2"},
[]string{"include1", "include3", "include4"})