Deal with NPE if no pattern is specified
Change-Id: I7974a4679afaf9371549923e7da2f2ae83353ae3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
index 058a879..5851f5a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
@@ -44,8 +44,8 @@
global = Collections.emptyMap();
config = Collections.emptyMap();
defaultManifestInfo = Collections.emptyMap();
- blankMergePattern = Pattern.compile("");
- alwaysBlankMergePattern = Pattern.compile("");
+ blankMergePattern = null;
+ alwaysBlankMergePattern = null;
}
public LoadedConfig(
@@ -86,17 +86,18 @@
*/
public boolean isSkipMerge(String fromBranch, String toBranch, String commitMessage) {
// If regex matches always_blank_merge (DO NOT MERGE ANYWHERE), skip.
- if (alwaysBlankMergePattern.matches(commitMessage)) {
+ if (alwaysBlankMergePattern != null && alwaysBlankMergePattern.matches(commitMessage)) {
return true;
}
// If regex matches blank_merge (DO NOT MERGE), skip iff merge_all is false
- if (blankMergePattern.matches(commitMessage)) {
+ if (blankMergePattern != null && blankMergePattern.matches(commitMessage)) {
Map<String, Object> mergePairConfig = getMergeConfig(fromBranch, toBranch);
if (mergePairConfig != null) {
boolean isMergeAll = (boolean) mergePairConfig.getOrDefault("merge_all", false);
return !isMergeAll;
}
+ return true;
}
return false;
}
@@ -185,7 +186,11 @@
}
private Pattern getConfigPattern(String key) {
- Set<String> mergeStrings = new HashSet<>((List<String>) global.get(key));
- return Pattern.compile(Joiner.on("|").join(mergeStrings), Pattern.DOTALL);
+ Object patterns = global.get(key);
+ if (patterns != null) {
+ Set<String> mergeStrings = new HashSet<>((List<String>) patterns);
+ return Pattern.compile(Joiner.on("|").join(mergeStrings), Pattern.DOTALL);
+ }
+ return null;
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
index 92c9391..4bf316a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
@@ -109,6 +109,15 @@
}
@Test
+ public void isSkipMergeTest_alwaysBlankMergeNull() throws Exception {
+ mockFile("alternate_config.yaml", "tools/automerger", "master", "config.yaml");
+ loadConfig();
+ assertThat(
+ configLoader.isSkipMerge("master", "ds_two", "test test \n \n DO NOT MERGE ANYWHERE"))
+ .isFalse();
+ }
+
+ @Test
public void downstreamBranchesTest() throws Exception {
loadConfig();
Set<String> expectedBranches = new HashSet<String>();
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml
new file mode 100644
index 0000000..7c8c51a
--- /dev/null
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml
@@ -0,0 +1,28 @@
+branches:
+ master:
+ ds_one:
+ add_projects:
+ - platform/added/project
+ ignore_projects:
+ - whoo
+ ds_two:
+ merge_all: true
+ add_projects:
+ - platform/added/project
+ ignore_projects:
+ - whoo
+ set_projects:
+ - platform/some/project
+ - platform/other/project
+ ds_two:
+ ds_three:
+ set_projects:
+ - platform/some/project
+global:
+ blank_merge:
+ - .*DO NOT MERGE.*
+ manifest:
+ file: default.xml
+ project: platform/manifest
+ ignore_projects:
+ - platform/ignore/me