Merge branch 'stable-3.0' into stable-3.1
* stable-3.0:
Extend CommitMessageFetcher to handle non-commit objects
Change-Id: If3ee7bcf1d281f93673fbb95a04f896726617d47
diff --git a/WORKSPACE b/WORKSPACE
index 60d9408..8308b76 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,24 +3,24 @@
load("//:bazlets.bzl", "load_bazlets")
load_bazlets(
- commit = "c2227415d5044f8439bd47edffb0f052f8da2ac5",
+ commit = "d826d85285bb22d3fe817fe165a7e1d3472f65fa",
# local_path = "/home/<user>/projects/bazlets",
)
# Snapshot Plugin API
-#load(
-# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
-# "gerrit_api_maven_local",
-#)
-
-# Release Plugin API
load(
- "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
- "gerrit_api",
+ "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+ "gerrit_api_maven_local",
)
+# Release Plugin API
+#load(
+# "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+# "gerrit_api",
+#)
+
# Load release Plugin API
-gerrit_api()
+#gerrit_api()
# Load snapshot Plugin API
-#gerrit_api_maven_local()
+gerrit_api_maven_local()
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
index 6a5eda4..9dda01f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
@@ -16,11 +16,12 @@
import static java.util.stream.Collectors.toList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.entities.Project.NameKey;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.api.projects.CommentLinkInfo;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Project.NameKey;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.PluginConfig;
import com.google.gerrit.server.config.PluginConfigFactory;
@@ -44,13 +45,11 @@
import java.util.Optional;
import java.util.regex.Pattern;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ItsConfig {
private static final String PLUGIN = "plugin";
- private static final Logger log = LoggerFactory.getLogger(ItsConfig.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String pluginName;
private final ProjectCache projectCache;
@@ -89,17 +88,16 @@
|| event instanceof RefUpdatedEvent) {
return isEnabled(event.getProjectNameKey(), event.getRefName());
}
- log.debug("Event {} not recognised and ignored", event);
+ logger.atFine().log("Event %s not recognised and ignored", event);
return false;
}
public boolean isEnabled(Project.NameKey projectNK, String refName) {
ProjectState projectState = projectCache.get(projectNK);
if (projectState == null) {
- log.error(
- "Failed to check if {} is enabled for project {}: Project not found",
- pluginName,
- projectNK.get());
+ logger.atSevere().log(
+ "Failed to check if %s is enabled for project %s: Project not found",
+ pluginName, projectNK.get());
return false;
}
return isEnforcedByAnyParentProject(refName, projectState)
@@ -257,7 +255,8 @@
try {
return pluginCfgFactory.getFromProjectConfigWithInheritance(projectName, pluginName);
} catch (NoSuchProjectException e) {
- log.error("Cannot access " + projectName + " configuration for plugin " + pluginName, e);
+ logger.atSevere().withCause(e).log(
+ "Cannot access %s configuration for plugin %s", projectName, pluginName);
}
}
return new PluginConfig(pluginName, new Config());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacade.java
index db2857b..6531ed7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacade.java
@@ -31,6 +31,14 @@
public void addComment(String issueId, String comment) throws IOException;
+ /**
+ * Sets a field on the issue to an event property.
+ *
+ * @param issueId The issue to set the field on
+ * @param value The name of the property to set the issues's field to
+ * @param fieldId The field on the issue to set
+ * @throws IOException if an error occurred
+ */
default void addValueToField(String issueId, String value, String fieldId) throws IOException {
throw new UnsupportedOperationException(
"add-value-to-field is not currently implemented by " + getClass());
@@ -38,6 +46,13 @@
public void performAction(String issueId, String actionName) throws IOException;
+ /**
+ * Creates a new version on a given ITS.
+ *
+ * @param itsProject the ITS to create the version on
+ * @param version the version to create
+ * @throws IOException if an error occurred
+ */
default void createVersion(String itsProject, String version) throws IOException {
throw new UnsupportedOperationException("create-version is not implemented by " + getClass());
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacadeFactory.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacadeFactory.java
index 4e2f035..b4cad31 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacadeFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsFacadeFactory.java
@@ -14,7 +14,7 @@
package com.googlesource.gerrit.plugins.its.base.its;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
/* An interface to get server information from child its-plugin embedded in the ItsFacade implementation */
public interface ItsFacadeFactory {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/NoopItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/NoopItsFacade.java
index ecf3a6f..ba7fb14 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/NoopItsFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/NoopItsFacade.java
@@ -14,73 +14,55 @@
package com.googlesource.gerrit.plugins.its.base.its;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.net.URL;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** An ITS facade doing nothing, it's configured when no ITS are referenced in config */
public class NoopItsFacade implements ItsFacade {
-
- private Logger log = LoggerFactory.getLogger(NoopItsFacade.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Override
public void addComment(String issueId, String comment) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("addComment({},{})", issueId, comment);
- }
+ logger.atFine().log("addComment(%s,%s)", issueId, comment);
}
@Override
public void addValueToField(String issueId, String value, String fieldId) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("addValueToField({},{},{})", issueId, fieldId, value);
- }
+ logger.atFine().log("addValueToField(%s,%s,%s)", issueId, fieldId, value);
}
@Override
public void addRelatedLink(String issueId, URL relatedUrl, String description)
throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("addRelatedLink({},{},{})", issueId, relatedUrl, description);
- }
+ logger.atFine().log("addRelatedLink(%s,%s,%s)", issueId, relatedUrl, description);
}
@Override
public boolean exists(String issueId) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("exists({})", issueId);
- }
+ logger.atFine().log("exists(%s)", issueId);
return false;
}
@Override
public void performAction(String issueId, String actionName) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("performAction({},{})", issueId, actionName);
- }
+ logger.atFine().log("performAction(%s,%s)", issueId, actionName);
}
@Override
public void createVersion(String itsProject, String version) {
- if (log.isDebugEnabled()) {
- log.debug("createVersion({},{})", itsProject, version);
- }
+ logger.atFine().log("createVersion(%s,%s)", itsProject, version);
}
@Override
public String healthCheck(Check check) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug("healthCheck()");
- }
+ logger.atFine().log("healthCheck()");
return "{\"status\"=\"ok\",\"system\"=\"not configured\",}";
}
@Override
public String createLinkForWebui(String url, String text) {
- if (log.isDebugEnabled()) {
- log.debug("createLinkForWebui({},{})", url, text);
- }
+ logger.atFine().log("createLinkForWebui(%s,%s)", url, text);
return "";
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/SingleItsServer.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/SingleItsServer.java
index 08bfe62..dc0a79f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/SingleItsServer.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/SingleItsServer.java
@@ -14,7 +14,7 @@
package com.googlesource.gerrit.plugins.its.base.its;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
import com.google.inject.Inject;
/* An ItsServer implementation that should be bound
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcher.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcher.java
index ed1c6b3..1d5188d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcher.java
@@ -1,6 +1,7 @@
package com.googlesource.gerrit.plugins.its.base.util;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.inject.Inject;
import java.io.IOException;
@@ -9,11 +10,9 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class CommitMessageFetcher {
- private static final Logger log = LoggerFactory.getLogger(CommitMessageFetcher.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
@@ -47,9 +46,8 @@
try {
ret = fetch(projectName, objectId);
} catch (IOException e) {
- log.error(
- "Could not fetch commit message for commit " + objectId + " of project " + projectName,
- e);
+ logger.atSevere().withCause(e).log(
+ "Could not fetch commit message for commit %s of project %s", objectId, projectName);
}
return ret;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractor.java
index cb577c5..6131ed4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractor.java
@@ -5,12 +5,13 @@
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.RevisionInfo;
import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.inject.ImplementedBy;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.its.base.its.ItsConfig;
@@ -19,11 +20,9 @@
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class IssueExtractor {
- private static final Logger log = LoggerFactory.getLogger(IssueExtractor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final CommitMessageFetcher commitMessageFetcher;
private final PatchSetDb db;
@@ -47,7 +46,7 @@
try {
ChangeInfo info =
gApi.changes()
- .id(patchSetId.getParentKey().get())
+ .id(patchSetId.changeId().get())
.get(EnumSet.of(ListChangesOption.ALL_REVISIONS));
for (Map.Entry<String, RevisionInfo> e : info.revisions.entrySet()) {
if (e.getValue()._number == patchSetId.get()) {
@@ -80,7 +79,7 @@
Pattern pattern = itsConfig.getIssuePattern();
if (pattern == null) return new String[] {};
- log.debug("Matching '{}' against {}", haystack, pattern.pattern());
+ logger.atFine().log("Matching '%s' against '%s'", haystack, pattern.pattern());
Set<String> issues = Sets.newHashSet();
Matcher matcher = pattern.matcher(haystack);
@@ -235,8 +234,7 @@
if (patchSetId != null) {
Map<String, Set<String>> previous = Maps.newHashMap();
if (patchSetId.get() != 1) {
- PatchSet.Id previousPatchSetId =
- new PatchSet.Id(patchSetId.getParentKey(), patchSetId.get() - 1);
+ PatchSet.Id previousPatchSetId = PatchSet.id(patchSetId.changeId(), patchSetId.get() - 1);
String previousPatchSet = db.getRevision(previousPatchSetId);
if (previousPatchSet != null) {
previous = getIssueIds(projectName, previousPatchSet);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractor.java
index 734582a..df7c3d9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractor.java
@@ -14,7 +14,7 @@
package com.googlesource.gerrit.plugins.its.base.util;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.its.base.its.ItsConfig;
import java.util.Optional;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
index f1b2c0d..d05e541 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
@@ -15,7 +15,7 @@
package com.googlesource.gerrit.plugins.its.base.util;
import com.google.common.collect.ImmutableMap;
-import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.gerrit.entities.RefNames;
import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.ApprovalAttribute;
import com.google.gerrit.server.data.ChangeAttribute;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
index 603a554..9d6b2d9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
@@ -14,9 +14,9 @@
package com.googlesource.gerrit.plugins.its.base.util;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.server.data.ApprovalAttribute;
import com.google.gerrit.server.data.ChangeAttribute;
import com.google.gerrit.server.data.PatchSetAttribute;
@@ -70,7 +70,7 @@
*/
private PatchSet.Id newPatchSetId(String changeId, String patchId) {
try {
- return new PatchSet.Id(new Change.Id(Integer.parseInt(changeId)), Integer.parseInt(patchId));
+ return PatchSet.id(Change.id(Integer.parseInt(changeId)), Integer.parseInt(patchId));
} catch (NumberFormatException e) {
return null;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
index b0c9e39..074b882 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
@@ -15,8 +15,9 @@
package com.googlesource.gerrit.plugins.its.base.validation;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.events.CommitReceivedEvent;
import com.google.gerrit.server.git.validators.CommitValidationException;
import com.google.gerrit.server.git.validators.CommitValidationListener;
@@ -30,12 +31,10 @@
import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ItsValidateComment implements CommitValidationListener {
- private static final Logger log = LoggerFactory.getLogger(ItsValidateComment.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject private ItsFacade client;
@@ -80,7 +79,7 @@
"Failed to check whether or not issue "
+ issueId
+ " exists, due to connectivity issue. Commit will be accepted.";
- log.warn(synopsis, e);
+ logger.atWarning().withCause(e).log(synopsis);
details = e.toString();
existenceCheckResult = ItsExistenceCheckResult.CONNECTIVITY_FAILURE;
ret.add(commitValidationFailure(synopsis, details, existenceCheckResult));
@@ -108,7 +107,8 @@
sb.append(" Issue-Tracker");
details = sb.toString();
- ret.add(commitValidationFailure(synopsis, details, ItsExistenceCheckResult.DOESNT_EXIST));
+ ret.add(
+ commitValidationFailure(synopsis, details, ItsExistenceCheckResult.DOESNT_EXIST));
}
} else if (!itsConfig
.getDummyIssuePattern()
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
index 4af8f1b..f9214c6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
@@ -14,6 +14,7 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.EventListener;
import com.google.gerrit.server.events.RefEvent;
@@ -23,8 +24,6 @@
import java.util.Collection;
import java.util.Map;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Controller that takes actions according to {@code ChangeEvents@}.
@@ -34,7 +33,7 @@
*/
public class ActionController implements EventListener {
- private static final Logger log = LoggerFactory.getLogger(ActionController.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final PropertyExtractor propertyExtractor;
private final RuleBase ruleBase;
@@ -90,8 +89,8 @@
}
if (!projectProperties.containsKey("its-project")) {
String project = projectProperties.get("project");
- log.error(
- "Could not process project event. No its-project associated with project {}. "
+ logger.atSevere().log(
+ "Could not process project event. No its-project associated with project %s. "
+ "Did you forget to configure the ITS project association in project.config?",
project);
return;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutor.java
index 33e82ae..3654e6f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutor.java
@@ -14,20 +14,19 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.registration.DynamicMap;
import com.google.gerrit.extensions.registration.PluginName;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacadeFactory;
import java.io.IOException;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Executes an {@link ActionRequest} */
public class ActionExecutor {
- private static final Logger log = LoggerFactory.getLogger(ActionExecutor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ItsFacadeFactory itsFactory;
private final AddComment.Factory addCommentFactory;
@@ -95,7 +94,7 @@
execute(action, issue, actionRequest, properties);
}
} catch (IOException e) {
- log.error("Error while executing action " + actionRequest, e);
+ logger.atSevere().withCause(e).log("Error while executing action %s", actionRequest);
}
}
@@ -111,7 +110,7 @@
String actionName = actionRequest.getName();
Action action = getAction(actionName);
if (action == null) {
- log.debug("No action found for name {}", actionName);
+ logger.atFine().log("No action found for name %s", actionName);
return;
}
if (action.getType() != ActionType.PROJECT) {
@@ -119,7 +118,7 @@
}
execute(action, itsProject, actionRequest, properties);
} catch (IOException e) {
- log.error("Error while executing action " + actionRequest, e);
+ logger.atSevere().withCause(e).log("Error while executing action %s", actionRequest);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractor.java
index 7a259f1..3b1f356 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractor.java
@@ -15,17 +15,14 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class AddPropertyToFieldParametersExtractor {
-
- private static final Logger log =
- LoggerFactory.getLogger(AddPropertyToFieldParametersExtractor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject
public AddPropertyToFieldParametersExtractor() {}
@@ -38,26 +35,26 @@
ActionRequest actionRequest, Map<String, String> properties) {
String[] parameters = actionRequest.getParameters();
if (parameters.length != 2) {
- log.error(
- "Wrong number of received parameters. Received parameters are {}. Exactly two parameters are expected. The first one is the ITS field id, the second one is the event property id",
+ logger.atSevere().log(
+ "Wrong number of received parameters. Received parameters are %s. Exactly two parameters are expected. The first one is the ITS field id, the second one is the event property id",
Arrays.toString(parameters));
return Optional.empty();
}
String propertyId = parameters[0];
if (Strings.isNullOrEmpty(propertyId)) {
- log.error("Received property id is blank");
+ logger.atSevere().log("Received property id is blank");
return Optional.empty();
}
String fieldId = parameters[1];
if (Strings.isNullOrEmpty(fieldId)) {
- log.error("Received field id is blank");
+ logger.atSevere().log("Received field id is blank");
return Optional.empty();
}
if (!properties.containsKey(propertyId)) {
- log.error("No event property found for id {}", propertyId);
+ logger.atSevere().log("No event property found for id %s", propertyId);
return Optional.empty();
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyComment.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyComment.java
index c29d622..d3f73a2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyComment.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyComment.java
@@ -15,13 +15,12 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.common.io.CharStreams;
import com.google.inject.Inject;
import com.google.inject.ProvisionException;
import com.google.template.soy.SoyFileSet;
-import com.google.template.soy.SoyFileSet.Builder;
-import com.google.template.soy.data.SanitizedContent;
-import com.google.template.soy.tofu.SoyTofu;
+import com.google.template.soy.jbcsrc.api.SoySauce.Renderer;
import com.googlesource.gerrit.plugins.its.base.ItsPath;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
import java.io.IOException;
@@ -31,8 +30,6 @@
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Adds a short predefined comments to an issue.
@@ -40,7 +37,7 @@
* <p>Comments are added for merging, abandoning, restoring of changes and adding of patch sets.
*/
public class AddSoyComment extends IssueAction {
- private static final Logger log = LoggerFactory.getLogger(AddSoyComment.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
AddSoyComment create();
@@ -54,11 +51,9 @@
this.templateDir = itsPath.resolve("templates");
}
- private String soyTemplate(
- SoyFileSet.Builder builder,
- String template,
- SanitizedContent.ContentKind kind,
- Map<String, String> properties) {
+ private String soyTextTemplate(
+ SoyFileSet.Builder builder, String template, Map<String, String> properties) {
+
Path templatePath = templateDir.resolve(template + ".soy");
String content;
@@ -70,18 +65,15 @@
}
builder.add(content, templatePath.toAbsolutePath().toString());
- SoyTofu.Renderer renderer =
+ Renderer renderer =
builder
.build()
- .compileToTofu()
- .newRenderer("etc.its.templates." + template)
- .setContentKind(kind)
+ .compileTemplates()
+ .renderTemplate("etc.its.templates." + template)
.setData(properties);
- return renderer.render();
- }
-
- private String soyTextTemplate(Builder builder, String template, Map<String, String> properties) {
- return soyTemplate(builder, template, SanitizedContent.ContentKind.TEXT, properties);
+ String rendered = renderer.renderText().get();
+ logger.atFinest().log("Rendered template %s to:\n%s", templatePath, rendered);
+ return rendered;
}
@Override
@@ -96,10 +88,10 @@
private String buildComment(ActionRequest actionRequest, Map<String, String> properties) {
String template = actionRequest.getParameter(1);
- if (!template.isEmpty()) {
+ if (!Strings.isNullOrEmpty(template)) {
return soyTextTemplate(SoyFileSet.builder(), template, properties);
}
- log.error("No template name given in {}", actionRequest);
+ logger.atSevere().log("No template name given in %s", actionRequest);
return "";
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractor.java
index 1eb01ce..3f81485 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractor.java
@@ -15,17 +15,14 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import javax.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class CreateVersionFromPropertyParametersExtractor {
-
- private static final Logger log =
- LoggerFactory.getLogger(CreateVersionFromPropertyParametersExtractor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject
public CreateVersionFromPropertyParametersExtractor() {}
@@ -34,20 +31,20 @@
ActionRequest actionRequest, Map<String, String> properties) {
String[] parameters = actionRequest.getParameters();
if (parameters.length != 1) {
- log.error(
- "Wrong number of received parameters. Received parameters are {}. Only one parameter is expected, the property id.",
+ logger.atSevere().log(
+ "Wrong number of received parameters. Received parameters are %s. Only one parameter is expected, the property id.",
Arrays.toString(parameters));
return Optional.empty();
}
String propertyId = parameters[0];
if (Strings.isNullOrEmpty(propertyId)) {
- log.error("Received property id is blank");
+ logger.atSevere().log("Received property id is blank");
return Optional.empty();
}
if (!properties.containsKey(propertyId)) {
- log.error("No event property found for id {}", propertyId);
+ logger.atSevere().log("No event property found for id %s", propertyId);
return Optional.empty();
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheImpl.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheImpl.java
index 14307a0..9790f7d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheImpl.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheImpl.java
@@ -17,9 +17,10 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.cache.CacheModule;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectState;
@@ -34,12 +35,10 @@
import java.util.List;
import java.util.concurrent.ExecutionException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ItsRulesProjectCacheImpl implements ItsRulesProjectCache {
- private static final Logger log = LoggerFactory.getLogger(ItsRulesProjectCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String CACHE_NAME = "its_rules_project";
private final LoadingCache<String, List<Rule>> cache;
@@ -54,7 +53,8 @@
try {
return cache.get(projectName);
} catch (ExecutionException e) {
- log.warn("Cannot get project specific rules for project {}", projectName, e);
+ logger.atWarning().withCause(e).log(
+ "Cannot get project specific rules for project %s", projectName);
return ImmutableList.of();
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheRefresher.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheRefresher.java
index 4cbd3d2..75b91f7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheRefresher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheRefresher.java
@@ -1,16 +1,15 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.entities.RefNames;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.RefNames;
import com.google.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ItsRulesProjectCacheRefresher implements GitReferenceUpdatedListener {
- private static final Logger log = LoggerFactory.getLogger(ItsRulesProjectCacheRefresher.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GerritApi gApi;
private final ItsRulesProjectCache itsRuleProjectCache;
@@ -33,7 +32,7 @@
itsRuleProjectCache.evict(childProject.name);
}
} catch (RestApiException e) {
- log.warn("Unable to evict ITS rules cache", e);
+ logger.atWarning().withCause(e).log("Unable to evict ITS rules cache");
}
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEvent.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEvent.java
index 6eec9a4..f345227 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEvent.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEvent.java
@@ -14,13 +14,12 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Dumps the event's properties to the log.
@@ -28,7 +27,7 @@
* <p>This event helps when developing rules as available properties become visible.
*/
public class LogEvent extends IssueAction {
- private static final Logger log = LoggerFactory.getLogger(LogEvent.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private enum Level {
ERROR,
@@ -56,23 +55,25 @@
public LogEvent() {}
private void logProperty(Level level, Entry<String, String> property) {
- String message = String.format("[%s = %s]", property.getKey(), property.getValue());
+ final java.util.logging.Level logLevel;
switch (level) {
case ERROR:
- log.error(message);
+ logLevel = java.util.logging.Level.SEVERE;
break;
case WARN:
- log.warn(message);
+ logLevel = java.util.logging.Level.WARNING;
break;
case INFO:
- log.info(message);
+ logLevel = java.util.logging.Level.INFO;
break;
case DEBUG:
- log.debug(message);
+ logLevel = java.util.logging.Level.FINE;
break;
default:
- log.error("Undefined log level.");
+ logger.atSevere().log("Undefined log level.");
+ return;
}
+ logger.at(logLevel).log("[%s = %s]", property.getKey(), property.getValue());
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBase.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBase.java
index b6e4ad6..b051dfe 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBase.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBase.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.its.base.GlobalRulesFileName;
import com.googlesource.gerrit.plugins.its.base.ItsPath;
@@ -29,12 +30,10 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Collection and matcher against {@link Rule}s. */
public class RuleBase {
- private static final Logger log = LoggerFactory.getLogger(RuleBase.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final File globalRuleFile;
private final File itsSpecificRuleFile;
@@ -81,7 +80,7 @@
cfg.load();
return rulesConfigReader.getRulesFromConfig(cfg);
} catch (IOException | ConfigInvalidException e) {
- log.error("Invalid ITS action configuration", e);
+ logger.atSevere().withCause(e).log("Invalid ITS action configuration");
}
}
return Collections.emptyList();
@@ -98,12 +97,10 @@
Collection<Rule> fromProjectConfig = rulesProjectCache.get(projectName);
Collection<Rule> rulesToAdd = !fromProjectConfig.isEmpty() ? fromProjectConfig : rules;
if (rulesToAdd.isEmpty() && !globalRuleFile.exists() && !itsSpecificRuleFile.exists()) {
- log.warn(
- "Neither global rule file {} nor Its specific rule file {} exist and no rules are "
- + "configured for project {}. Please configure rules.",
- globalRuleFile,
- itsSpecificRuleFile,
- projectName);
+ logger.atFine().log(
+ "Neither global rule file %s nor Its specific rule file %s exist and no rules are "
+ + "configured for project %s. Please configure rules.",
+ globalRuleFile, itsSpecificRuleFile, projectName);
return Collections.emptyList();
}
Collection<ActionRequest> actions = new ArrayList<>();
diff --git a/src/main/resources/Documentation/config-rulebase-common.md b/src/main/resources/Documentation/config-rulebase-common.md
index 1220751..e877e9b 100644
--- a/src/main/resources/Documentation/config-rulebase-common.md
+++ b/src/main/resources/Documentation/config-rulebase-common.md
@@ -651,12 +651,9 @@
```
{namespace etc.its.templates}
-
-/**
- * @param changeNumber
- * @param formatChangeUrl
- */
-{template .TemplateName autoescape="strict" kind="text"}
+{template .TemplateName kind="text"}
+ {@param changeNumber: string}
+ {@param formatChangeUrl: string}
inline Comment for change {$changeNumber} added. See {$formatChangeUrl}
{/template}
```
diff --git a/src/main/templates/Documentation/build.md b/src/main/templates/Documentation/build.md
index 6dd56fa..9e12cb5 100644
--- a/src/main/templates/Documentation/build.md
+++ b/src/main/templates/Documentation/build.md
@@ -16,7 +16,7 @@
The output is created in
```
- bazel-genfiles/its-base.jar
+ bazel-bin/its-base.jar
```
To execute the tests run:
@@ -52,7 +52,7 @@
The output is created in
```
- bazel-genfiles/plugins/its-base/its-base.jar
+ bazel-bin/plugins/its-base/its-base.jar
```
This project can be imported into the Eclipse IDE:
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
index 1a147c7..3379908 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
@@ -14,13 +14,16 @@
package com.googlesource.gerrit.plugins.its.base.its;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.base.Suppliers;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.PluginConfig;
import com.google.gerrit.server.config.PluginConfigFactory;
@@ -51,59 +54,53 @@
public void setupIsEnabled(
String enabled, String itsProject, String parentEnabled, String[] branches) {
- ProjectState projectState = createMock(ProjectState.class);
+ ProjectState projectState = mock(ProjectState.class);
- expect(projectCache.get(new Project.NameKey("testProject"))).andReturn(projectState).anyTimes();
- expect(projectCache.get(new Project.NameKey("parentProject")))
- .andReturn(projectState)
- .anyTimes();
+ when(projectCache.get(Project.nameKey("testProject"))).thenReturn(projectState);
+ when(projectCache.get(Project.nameKey("parentProject"))).thenReturn(projectState);
Iterable<ProjectState> parents;
if (parentEnabled == null) {
parents = Arrays.asList(projectState);
} else {
- ProjectState parentProjectState = createMock(ProjectState.class);
+ ProjectState parentProjectState = mock(ProjectState.class);
- PluginConfig parentPluginConfig = createMock(PluginConfig.class);
+ PluginConfig parentPluginConfig = mock(PluginConfig.class);
- expect(pluginConfigFactory.getFromProjectConfig(parentProjectState, "ItsTestName"))
- .andReturn(parentPluginConfig);
+ when(pluginConfigFactory.getFromProjectConfig(parentProjectState, "ItsTestName"))
+ .thenReturn(parentPluginConfig);
- expect(parentPluginConfig.getString("enabled", "false")).andReturn(parentEnabled).anyTimes();
+ when(parentPluginConfig.getString("enabled", "false")).thenReturn(parentEnabled);
- PluginConfig parentPluginConfigWI = createMock(PluginConfig.class);
+ PluginConfig parentPluginConfigWI = mock(PluginConfig.class);
- expect(
- pluginConfigFactory.getFromProjectConfigWithInheritance(
- parentProjectState, "ItsTestName"))
- .andReturn(parentPluginConfigWI)
- .anyTimes();
+ when(pluginConfigFactory.getFromProjectConfigWithInheritance(
+ parentProjectState, "ItsTestName"))
+ .thenReturn(parentPluginConfigWI);
String[] parentBranches = {"refs/heads/testBranch"};
- expect(parentPluginConfigWI.getStringList("branch")).andReturn(parentBranches).anyTimes();
+ when(parentPluginConfigWI.getStringList("branch")).thenReturn(parentBranches);
parents = Arrays.asList(parentProjectState, projectState);
}
- expect(projectState.treeInOrder()).andReturn(parents).anyTimes();
+ when(projectState.treeInOrder()).thenReturn(parents);
- PluginConfig pluginConfig = createMock(PluginConfig.class);
+ PluginConfig pluginConfig = mock(PluginConfig.class);
- expect(pluginConfigFactory.getFromProjectConfig(projectState, "ItsTestName"))
- .andReturn(pluginConfig)
- .anyTimes();
+ when(pluginConfigFactory.getFromProjectConfig(projectState, "ItsTestName"))
+ .thenReturn(pluginConfig);
- expect(pluginConfig.getString("enabled", "false")).andReturn(enabled).anyTimes();
- expect(pluginConfig.getString(eq("its-project"))).andReturn(itsProject).anyTimes();
+ when(pluginConfig.getString("enabled", "false")).thenReturn(enabled);
+ when(pluginConfig.getString(eq("its-project"))).thenReturn(itsProject);
- PluginConfig pluginConfigWI = createMock(PluginConfig.class);
+ PluginConfig pluginConfigWI = mock(PluginConfig.class);
- expect(pluginConfigFactory.getFromProjectConfigWithInheritance(projectState, "ItsTestName"))
- .andReturn(pluginConfigWI)
- .anyTimes();
+ when(pluginConfigFactory.getFromProjectConfigWithInheritance(projectState, "ItsTestName"))
+ .thenReturn(pluginConfigWI);
- expect(pluginConfigWI.getString("enabled", "false")).andReturn(enabled).anyTimes();
+ when(pluginConfigWI.getString("enabled", "false")).thenReturn(enabled);
- expect(pluginConfigWI.getStringList("branch")).andReturn(branches).anyTimes();
+ when(pluginConfigWI.getStringList("branch")).thenReturn(branches);
}
public void testIsEnabledRefNoParentNoBranchEnabled() {
@@ -112,9 +109,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -124,9 +119,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -136,9 +129,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -148,9 +139,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -160,9 +149,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -172,9 +159,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -184,9 +169,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -196,9 +179,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -208,9 +189,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -220,9 +199,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -232,9 +209,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -244,9 +219,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -256,9 +229,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -268,9 +239,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -280,9 +249,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Project.NameKey projectNK = new Project.NameKey("testProject");
+ Project.NameKey projectNK = Project.nameKey("testProject");
assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
}
@@ -294,8 +261,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -307,8 +272,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -320,8 +283,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -333,8 +294,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertFalse(itsConfig.isEnabled(event));
}
@@ -346,8 +305,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -359,8 +316,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -372,8 +327,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -385,8 +338,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -398,8 +349,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertFalse(itsConfig.isEnabled(event));
}
@@ -411,8 +360,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -424,8 +371,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -437,8 +382,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -450,8 +393,6 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
@@ -467,18 +408,14 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertTrue(itsConfig.isEnabled(event));
}
public void BROKEN_testIsEnabledUnknownEvent() {
- RefEvent event = createMock(RefEvent.class);
+ RefEvent event = mock(RefEvent.class);
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
assertFalse(itsConfig.isEnabled(event));
assertLogMessageContains("not recognised and ignored");
}
@@ -489,9 +426,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- assertFalse(itsConfig.getItsProjectName(new Project.NameKey("testProject")).isPresent());
+ assertFalse(itsConfig.getItsProjectName(Project.nameKey("testProject")).isPresent());
}
public void testGetItsProjectConfigured() {
@@ -500,10 +435,7 @@
ItsConfig itsConfig = createItsConfig();
- replayMocks();
-
- Optional<String> itsProjectName =
- itsConfig.getItsProjectName(new Project.NameKey("testProject"));
+ Optional<String> itsProjectName = itsConfig.getItsProjectName(Project.nameKey("testProject"));
assertTrue(itsProjectName.isPresent());
assertEquals("itsProject", itsProjectName.get());
}
@@ -511,328 +443,280 @@
public void testGetIssuePatternNullMatch() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn(null)
- .atLeastOnce();
-
- replayMocks();
-
assertNull("Pattern for null match is not null", itsConfig.getIssuePattern());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
}
public void testGetIssuePatternNullMatchWCommentLink() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "foo", "match")).andReturn(null).atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("plugin", "ItsTestName", "commentlink")).thenReturn("foo");
assertNull("Pattern for null match is not null", itsConfig.getIssuePattern());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "foo", "match");
}
public void testGetIssuePattern() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("TestPattern")
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match")).thenReturn("TestPattern");
assertEquals(
"Expected and generated pattern are not equal",
"TestPattern",
itsConfig.getIssuePattern().pattern());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
}
public void testGetIssuePatternWCommentLink() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "foo", "match"))
- .andReturn("TestPattern")
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("plugin", "ItsTestName", "commentlink")).thenReturn("foo");
+ when(serverConfig.getString("commentlink", "foo", "match")).thenReturn("TestPattern");
assertEquals(
"Expected and generated pattern are not equal",
"TestPattern",
itsConfig.getIssuePattern().pattern());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "foo", "match");
}
public void testGetIssuePatternGroupIndexGroupDefault() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("(foo)(bar)(baz)")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(1)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match"))
+ .thenReturn("(foo)(bar)(baz)");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(1);
assertEquals(
"Expected and actual group index do not match", 1, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetIssuePatternGroupIndexGroupDefaultGroupless() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(1)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match")).thenReturn("foo");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(1);
assertEquals(
"Expected and actual group index do not match", 0, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetIssuePatternGroupIndexGroup1() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("(foo)(bar)(baz)")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(1)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match"))
+ .thenReturn("(foo)(bar)(baz)");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(1);
assertEquals(
"Expected and actual group index do not match", 1, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetIssuePatternGroupIndexGroup3() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("(foo)(bar)(baz)")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(3)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match"))
+ .thenReturn("(foo)(bar)(baz)");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(3);
assertEquals(
"Expected and actual group index do not match", 3, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetIssuePatternGroupIndexGroupTooHigh() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("(foo)(bar)(baz)")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(5)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match"))
+ .thenReturn("(foo)(bar)(baz)");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(5);
assertEquals(
"Expected and actual group index do not match", 1, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetIssuePatternGroupIndexGroupTooHighGroupless() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(serverConfig.getString("commentlink", "ItsTestName", "match"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1))
- .andReturn(5)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("commentlink", "ItsTestName", "match")).thenReturn("foo");
+ when(serverConfig.getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1)).thenReturn(5);
assertEquals(
"Expected and actual group index do not match", 0, itsConfig.getIssuePatternGroupIndex());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig).getString("commentlink", "ItsTestName", "match");
+ verifyOneOrMore(serverConfig).getInt("plugin", "ItsTestName", "commentlinkGroupIndex", 1);
}
public void testGetItsAssociationPolicyOptional() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.OPTIONAL)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.OPTIONAL)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getEnum(
+ "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.OPTIONAL);
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.OPTIONAL);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.OPTIONAL,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL);
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL);
}
public void testGetItsAssociationPolicyOptionalWCommentLink() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.OPTIONAL)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.OPTIONAL)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("plugin", "ItsTestName", "commentlink")).thenReturn("foo");
+ when(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.OPTIONAL);
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.OPTIONAL);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.OPTIONAL,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL);
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL);
}
public void testGetItsAssociationPolicySuggested() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED))
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- replayMocks();
+ when(serverConfig.getEnum(
+ "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED))
+ .thenReturn(ItsAssociationPolicy.SUGGESTED);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.SUGGESTED,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL);
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED);
}
public void testGetItsAssociationPolicySuggestedWCommentLink() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn("foo")
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED))
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("plugin", "ItsTestName", "commentlink")).thenReturn("foo");
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED))
+ .thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.SUGGESTED);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.SUGGESTED,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.SUGGESTED);
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL);
}
public void testGetItsAssociationPolicyMandatory() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn(null)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY))
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getEnum(
+ "commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY))
+ .thenReturn(ItsAssociationPolicy.MANDATORY);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.MANDATORY,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "ItsTestName", "association", ItsAssociationPolicy.OPTIONAL);
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY);
}
public void testGetItsAssociationPolicyMandatoryWCommentLink() {
ItsConfig itsConfig = createItsConfig();
- expect(serverConfig.getString("plugin", "ItsTestName", "commentlink"))
- .andReturn("foo")
- .atLeastOnce();
- expect(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(
- serverConfig.getEnum(
- "plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY))
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
-
- replayMocks();
+ when(serverConfig.getString("plugin", "ItsTestName", "commentlink")).thenReturn("foo");
+ when(serverConfig.getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL))
+ .thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(serverConfig.getEnum(
+ "plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY))
+ .thenReturn(ItsAssociationPolicy.MANDATORY);
assertEquals(
"Expected and generated associated policy do not match",
ItsAssociationPolicy.MANDATORY,
itsConfig.getItsAssociationPolicy());
+
+ verifyOneOrMore(serverConfig).getString("plugin", "ItsTestName", "commentlink");
+ verifyOneOrMore(serverConfig)
+ .getEnum("commentlink", "foo", "association", ItsAssociationPolicy.OPTIONAL);
+ verifyOneOrMore(serverConfig)
+ .getEnum("plugin", "ItsTestName", "association", ItsAssociationPolicy.MANDATORY);
}
private ItsConfig createItsConfig() {
return injector.getInstance(ItsConfig.class);
}
+ private <T> T verifyOneOrMore(T mock) {
+ return verify(mock, atLeastOnce());
+ }
+
@Override
public void setUp() throws Exception {
super.setUp();
@@ -842,15 +726,15 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- projectCache = createMock(ProjectCache.class);
+ projectCache = mock(ProjectCache.class);
bind(ProjectCache.class).toInstance(projectCache);
- pluginConfigFactory = createMock(PluginConfigFactory.class);
+ pluginConfigFactory = mock(PluginConfigFactory.class);
bind(PluginConfigFactory.class).toInstance(pluginConfigFactory);
bind(String.class).annotatedWith(PluginName.class).toInstance("ItsTestName");
- serverConfig = createMock(Config.class);
+ serverConfig = mock(Config.class);
bind(Config.class).annotatedWith(GerritServerConfig.class).toInstance(serverConfig);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/LoggingMockingTestCase.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/LoggingMockingTestCase.java
index b1d98e2..8ca3d5b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/LoggingMockingTestCase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/LoggingMockingTestCase.java
@@ -14,82 +14,113 @@
package com.googlesource.gerrit.plugins.its.base.testutil;
+import static com.google.common.truth.Truth.assertThat;
+
import com.google.common.collect.Lists;
-import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Account;
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
import com.googlesource.gerrit.plugins.its.base.testutil.log.LogUtil;
import java.sql.Timestamp;
import java.util.Iterator;
+import java.util.logging.LogRecord;
+import junit.framework.TestCase;
import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
import org.junit.After;
-public abstract class LoggingMockingTestCase extends MockingTestCase {
+public abstract class LoggingMockingTestCase extends TestCase {
protected final Change.Key testChangeKey =
- new Change.Key("Ic19f7bf6c8b4685c363a8204c32d827ffda52ec0");
- protected final Change.Id testChangeId = new Change.Id(1);
- protected final Account.Id testAccountId = new Account.Id(1);
+ Change.key("Ic19f7bf6c8b4685c363a8204c32d827ffda52ec0");
+ protected final Change.Id testChangeId = Change.id(1);
+ protected final Account.Id testAccountId = Account.id(1);
- private java.util.Collection<LoggingEvent> loggedEvents;
+ private java.util.Collection<LogRecord> records;
- protected final void assertLogMessageContains(String needle, Level level) {
- LoggingEvent hit = null;
- Iterator<LoggingEvent> iter = loggedEvents.iterator();
- while (hit == null && iter.hasNext()) {
- LoggingEvent event = iter.next();
- if (event.getRenderedMessage().contains(needle)) {
- if (level == null || level.equals(event.getLevel())) {
- hit = event;
+ protected final void assertLogMessageContains(String needle, Level level, int times) {
+ // We do not support `times == 0`, as it's ambiguous if it means the message does not occur at
+ // all, or message assertion should be skipped.
+ assertThat(times).isGreaterThan(0);
+
+ while (times-- > 0) {
+ LogRecord hit = null;
+ Iterator<LogRecord> iter = records.iterator();
+ while (hit == null && iter.hasNext()) {
+ LogRecord record = iter.next();
+ if (record.getMessage().contains(needle)) {
+ if (level == null || LogUtil.equalLevels(record.getLevel(), level)) {
+ hit = record;
+ }
}
}
+ removeLogHit(hit, "containing '" + needle + "'");
}
- assertNotNull("Could not find log message containing '" + needle + "'", hit);
- assertTrue(
- "Could not remove log message containing '" + needle + "'", loggedEvents.remove(hit));
+ }
+
+ protected final void assertLogMessageContains(String needle, Level level) {
+ assertLogMessageContains(needle, level, 1);
}
protected final void assertLogMessageContains(String needle) {
assertLogMessageContains(needle, null);
}
- protected final void assertLogThrowableMessageContains(String needle) {
- LoggingEvent hit = null;
- Iterator<LoggingEvent> iter = loggedEvents.iterator();
- while (hit == null && iter.hasNext()) {
- LoggingEvent event = iter.next();
+ protected final void assertLogMessageContains(String needle, int times) {
+ assertLogMessageContains(needle, null, times);
+ }
- if (event.getThrowableInformation().getThrowable().toString().contains(needle)) {
- hit = event;
+ protected final void assertLogThrowableMessageContains(String needle) {
+ LogRecord hit = null;
+ Iterator<LogRecord> iter = records.iterator();
+ while (hit == null && iter.hasNext()) {
+ LogRecord record = iter.next();
+
+ Throwable t = record.getThrown();
+ if (t != null && t.toString().contains(needle)) {
+ hit = record;
}
}
- assertNotNull("Could not find log message with a Throwable containing '" + needle + "'", hit);
- assertTrue(
- "Could not remove log message with a Throwable containing '" + needle + "'",
- loggedEvents.remove(hit));
+ removeLogHit(hit, "with a Throwable containing '\" + needle + \"'");
+ }
+
+ private void removeLogHit(LogRecord hit, String description) {
+ if (hit == null) {
+ failWithUnassertedLogDump("Could not find log message " + description);
+ }
+ assertTrue("Could not remove log message " + description, records.remove(hit));
}
// As the PowerMock runner does not pass through runTest, we inject log
// verification through @After
@After
public final void assertNoUnassertedLogEvents() {
- if (loggedEvents.size() > 0) {
- LoggingEvent event = loggedEvents.iterator().next();
- String msg = "Found untreated logged events. First one is:\n";
- msg += event.getRenderedMessage();
- if (event.getThrowableInformation() != null) {
- msg += "\n" + event.getThrowableInformation().getThrowable();
- }
- fail(msg);
+ if (records.size() > 0) {
+ failWithUnassertedLogDump("Found unasserted logged events.");
}
}
+ public final void failWithUnassertedLogDump(String msg) {
+ msg += "\n";
+ if (records.size() == 0) {
+ msg += "(All logged messages have already been asserted)";
+ } else {
+ msg += records.size() + " logged, but not yet asserted messages remain:";
+ for (LogRecord record : records) {
+ msg += "\n" + record.getMessage();
+ Throwable t = record.getThrown();
+ if (t != null) {
+ msg += "\n with thrown " + t;
+ }
+ }
+ }
+ fail(msg);
+ }
+
@Override
public void setUp() throws Exception {
super.setUp();
- loggedEvents = Lists.newArrayList();
+ records = Lists.newArrayList();
// The logger we're interested is class name without the trailing "Test".
// While this is not the most general approach it is sufficient for now,
@@ -97,7 +128,7 @@
// to check.
String logName = this.getClass().getCanonicalName();
logName = logName.substring(0, logName.length() - 4);
- LogUtil.logToCollection(logName, loggedEvents);
+ LogUtil.logToCollection(logName, records, Level.DEBUG);
}
@Override
@@ -115,7 +146,7 @@
testChangeKey,
testChangeId,
testAccountId,
- new Branch.NameKey(new Project.NameKey(project), branch),
+ BranchNameKey.create(Project.nameKey(project), branch),
new Timestamp(System.currentTimeMillis()));
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/MockingTestCase.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/MockingTestCase.java
deleted file mode 100644
index d717024..0000000
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/MockingTestCase.java
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (C) 2013 The Android Open Source Project
-//
-// 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 com.googlesource.gerrit.plugins.its.base.testutil;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import junit.framework.TestCase;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
-import org.easymock.IMocksControl;
-import org.junit.After;
-import org.junit.runner.RunWith;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-/** Test case with some support for automatically verifying mocks. */
-public abstract class MockingTestCase extends TestCase {
- private Collection<Object> mocks;
- private Collection<IMocksControl> mockControls;
- private boolean mocksReplayed;
- private boolean usePowerMock;
-
- /**
- * Create and register a mock control.
- *
- * @return The mock control instance.
- */
- protected final IMocksControl createMockControl() {
- IMocksControl mockControl = EasyMock.createControl();
- assertTrue("Adding mock control failed", mockControls.add(mockControl));
- return mockControl;
- }
-
- /**
- * Create and register a mock.
- *
- * <p>Creates a mock and registers it in the list of created mocks, so it gets treated
- * automatically upon {@code replay} and {@code verify};
- *
- * @param toMock The class to create a mock for.
- * @return The mock instance.
- */
- protected final <T> T createMock(Class<T> toMock) {
- return createMock(toMock, null);
- }
-
- /**
- * Create a mock for a mock control and register a mock.
- *
- * <p>Creates a mock and registers it in the list of created mocks, so it gets treated
- * automatically upon {@code replay} and {@code verify};
- *
- * @param toMock The class to create a mock for.
- * @param control The mock control to create the mock on. If null, do not use a specific control.
- * @return The mock instance.
- */
- protected final <T> T createMock(Class<T> toMock, IMocksControl control) {
- assertFalse("Mocks have already been set to replay", mocksReplayed);
- final T mock;
- if (control == null) {
- if (usePowerMock) {
- mock = PowerMock.createMock(toMock);
- } else {
- mock = EasyMock.createMock(toMock);
- }
- assertTrue("Adding " + toMock.getName() + " mock failed", mocks.add(mock));
- } else {
- mock = control.createMock(toMock);
- }
- return mock;
- }
-
- /** Set all registered mocks to replay */
- protected final void replayMocks() {
- assertFalse("Mocks have already been set to replay", mocksReplayed);
- if (usePowerMock) {
- PowerMock.replayAll();
- } else {
- EasyMock.replay(mocks.toArray());
- }
- for (IMocksControl mockControl : mockControls) {
- mockControl.replay();
- }
- mocksReplayed = true;
- }
-
- /**
- * Verify all registered mocks
- *
- * <p>This method is called automatically at the end of a test. Nevertheless, it is safe to also
- * call it beforehand, if this better meets the verification part of a test.
- */
- // As the PowerMock runner does not pass through runTest, we inject mock
- // verification through @After
- @After
- public final void verifyMocks() {
- if (!mocks.isEmpty() || !mockControls.isEmpty()) {
- assertTrue(
- "Created mocks have not been set to replay. Call replayMocks " + "within the test",
- mocksReplayed);
- if (usePowerMock) {
- PowerMock.verifyAll();
- } else {
- EasyMock.verify(mocks.toArray());
- }
- for (IMocksControl mockControl : mockControls) {
- mockControl.verify();
- }
- }
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- usePowerMock = false;
- RunWith runWith = this.getClass().getAnnotation(RunWith.class);
- if (runWith != null) {
- usePowerMock = PowerMockRunner.class.isAssignableFrom(runWith.value());
- }
-
- mocks = new ArrayList<>();
- mockControls = new ArrayList<>();
- mocksReplayed = false;
- }
-
- @Override
- protected void runTest() throws Throwable {
- super.runTest();
- // Plain JUnit runner does not pick up @After, so we add it here
- // explicitly. Note, that we cannot put this into tearDown, as failure
- // to verify mocks would bail out and might leave open resources from
- // subclasses open.
- verifyMocks();
- }
-
- /**
- * Create a new Capture.
- *
- * @return The created Capture.
- */
- protected final <T> Capture<T> createCapture() {
- return new Capture<>();
- }
-}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/CollectionAppender.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/CollectionAppender.java
index c122676..8d918b2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/CollectionAppender.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/CollectionAppender.java
@@ -17,18 +17,19 @@
import com.google.common.collect.Lists;
import java.util.Collection;
import java.util.LinkedList;
+import java.util.logging.LogRecord;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
/** Log4j appender that logs into a list */
public class CollectionAppender extends AppenderSkeleton {
- private Collection<LoggingEvent> events;
+ private Collection<LogRecord> events;
public CollectionAppender() {
events = new LinkedList<>();
}
- public CollectionAppender(Collection<LoggingEvent> events) {
+ public CollectionAppender(Collection<LogRecord> events) {
this.events = events;
}
@@ -39,15 +40,20 @@
@Override
protected void append(LoggingEvent event) {
- if (!events.add(event)) {
- throw new RuntimeException("Could not append event " + event);
+ LogRecord logRecord = LogUtil.logRecordFromLog4jLoggingEvent(event);
+ append(logRecord);
+ }
+
+ public void append(LogRecord record) {
+ if (!events.add(record)) {
+ throw new RuntimeException("Could not append event " + record);
}
}
@Override
public void close() {}
- public Collection<LoggingEvent> getLoggedEvents() {
+ public Collection<LogRecord> getLoggedEvents() {
return Lists.newLinkedList(events);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/LogUtil.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/LogUtil.java
index 6cd633d..17830db 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/LogUtil.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/testutil/log/LogUtil.java
@@ -14,18 +14,141 @@
package com.googlesource.gerrit.plugins.its.base.testutil.log;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.flogger.FluentLogger;
import java.util.Collection;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.ThrowableInformation;
+/** Utility functions for dealing with various Loggers */
public class LogUtil {
+ private static final ImmutableMap<org.apache.log4j.Level, Level> log4jToJul =
+ new ImmutableMap.Builder<org.apache.log4j.Level, Level>()
+ .put(org.apache.log4j.Level.OFF, Level.OFF)
+ .put(org.apache.log4j.Level.FATAL, Level.SEVERE)
+ .put(org.apache.log4j.Level.ERROR, Level.SEVERE)
+ .put(org.apache.log4j.Level.WARN, Level.WARNING)
+ .put(org.apache.log4j.Level.INFO, Level.INFO)
+ .put(org.apache.log4j.Level.DEBUG, Level.FINE)
+ .put(org.apache.log4j.Level.TRACE, Level.FINEST)
+ .put(org.apache.log4j.Level.ALL, Level.FINEST)
+ .build();
+
+ /**
+ * Makes sure that Loggers for a given name add their events to a collection
+ *
+ * <p>This is useful for capturing logged events during testing and being able to run assertions
+ * on them.
+ *
+ * <p>We will never be able to cover all possible backends of the Logging flavour of the day. For
+ * now we cover Log4j and JUL. If you use a different default logging backend, please send in
+ * patches.
+ *
+ * @param logName The name of the loggers to make log to the given collection.
+ * @param collection The collection to add log events to.
+ * @param level The level the logger should be set to.
+ */
public static CollectionAppender logToCollection(
- String logName, Collection<LoggingEvent> collection) {
+ String logName, Collection<LogRecord> collection, org.apache.log4j.Level level) {
+
+ CollectionAppender appender = new CollectionAppender(collection);
+
+ logToCollectionLog4j(logName, appender, level);
+ logToCollectionJul(logName, appender, log4jToJul.get(level));
+
+ return appender;
+ }
+
+ /**
+ * Make a Log4j logger log to a given appender at a certain level
+ *
+ * @param logName The logger that should log to the appender.
+ * @param appender The appender to log to.
+ * @param level The level to user for the logger.
+ */
+ private static void logToCollectionLog4j(
+ String logName, CollectionAppender appender, org.apache.log4j.Level level) {
Logger log = LogManager.getLogger(logName);
- CollectionAppender listAppender = new CollectionAppender(collection);
+ log.setLevel(level);
log.removeAllAppenders();
- log.addAppender(listAppender);
- return listAppender;
+ log.addAppender(appender);
+ }
+
+ /**
+ * Make a java.util.logging logger log to a given appender at a certain level
+ *
+ * @param logName The logger that should log to the appender.
+ * @param appender The appender to log to.
+ * @param level The level to user for the logger.
+ */
+ private static void logToCollectionJul(String logName, CollectionAppender appender, Level level) {
+ // We'd love to simply get the logger of name `logName` and directly
+ // configure that. While this works for running the tests in bazel, it
+ // fails when running tests from within Eclipse. In Eclipse getting the
+ // logger of the same name here and from the class-under-test will get two
+ // different loggers, due to backend calling from a different class. So we
+ // instead resort to configuring the root logger and filtering the logName
+ // in the appender.
+
+ // The description above works for the 2nd, 3rd, ... test of a test case in
+ // Eclipse, but not for the first. To cover the first test as well, we
+ // beforehand tell Flogger to set things up by getting any random logger
+ // /before/ we configure the root logger.
+ @SuppressWarnings("unused")
+ FluentLogger unused = FluentLogger.forEnclosingClass();
+
+ java.util.logging.Logger julLogger = java.util.logging.Logger.getLogger("");
+ julLogger.setLevel(level);
+
+ julLogger.addHandler(
+ new Handler() {
+ @Override
+ public void publish(LogRecord record) {
+ if (record.getLoggerName().equals(logName)) {
+ appender.append(record);
+ }
+ }
+
+ @Override
+ public void flush() {}
+
+ @Override
+ public void close() throws SecurityException {}
+ });
+ }
+
+ /**
+ * Converts a Log4j Logging Event to a JUL LogRecord
+ *
+ * <p>This is not a full conversion, but covers only the fields we care about. That is the logged
+ * message and eventual thrown Throwables.
+ *
+ * @param event The Log4j LoggingEvent to convert
+ * @return The corresponding JUL LogRecord
+ */
+ public static LogRecord logRecordFromLog4jLoggingEvent(LoggingEvent event) {
+ LogRecord logRecord = new LogRecord(Level.ALL, event.getRenderedMessage());
+ ThrowableInformation tInfo = event.getThrowableInformation();
+ if (tInfo != null) {
+ logRecord.setThrown(tInfo.getThrowable());
+ }
+ return logRecord;
+ }
+
+ /**
+ * Check if a JUL and a Log4j Level correspond
+ *
+ * @param left The JUL Level to check.
+ * @param right The Log4j Level to check.
+ * @return True, if and only if the levels correspond.
+ */
+ public static boolean equalLevels(Level left, org.apache.log4j.Level right) {
+ Level julRight = log4jToJul.get(right);
+ return (left == null && right == null) || (left != null && left.equals(julRight));
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcherTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcherTest.java
index 890e182..9a7faa2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcherTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/CommitMessageFetcherTest.java
@@ -19,7 +19,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.googlesource.gerrit.plugins.its.base.testutil.LoggingMockingTestCase;
import java.io.IOException;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractorTest.java
index 80cbfd3..3ea73d0 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/IssueExtractorTest.java
@@ -13,14 +13,16 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.util;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSet;
-import com.google.gerrit.reviewdb.client.RevId;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.googlesource.gerrit.plugins.its.base.its.ItsConfig;
@@ -31,12 +33,7 @@
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({PatchSet.class, RevId.class})
public class IssueExtractorTest extends LoggingMockingTestCase {
private Injector injector;
private ItsConfig itsConfig;
@@ -46,124 +43,127 @@
public void testIssueIdsNullPattern() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(null).atLeastOnce();
-
- replayMocks();
-
String[] ret = issueExtractor.getIssueIds("Test");
assertEquals("Number of found ids do not match", 0, ret.length);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
}
public void testIssueIdsNoMatch() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("Test");
assertEquals("Number of found ids do not match", 0, ret.length);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsEmptyGroup() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(X*)(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(X*)(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("bug#4711");
assertEquals("Number of found ids do not match", 0, ret.length);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsFullMatch() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("bug#4711");
assertEquals("Number of found ids do not match", 1, ret.length);
assertEquals("First found issue id do not match", "4711", ret[0]);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsMatch() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bar");
assertEquals("Number of found ids do not match", 1, ret.length);
assertEquals("Found issue id does not match", "4711", ret[0]);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsGrouplessMatch() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#\\d+")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(0).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#\\d+"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(0);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bar");
assertEquals("Number of found ids do not match", 1, ret.length);
assertEquals("Found issue id does not match", "bug#4711", ret[0]);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsMultiGroupMatchGroup1() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d)(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d)(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bar");
assertEquals("Number of found ids do not match", 1, ret.length);
assertEquals("Found issue id does not match", "4", ret[0]);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsMultiGroupMatchGroup2() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d)(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(2).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d)(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(2);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bar");
assertEquals("Number of found ids do not match", 1, ret.length);
assertEquals("Found issue id does not match", "711", ret[0]);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsMulipleMatches() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bug#42 bar bug#123");
assertEquals("Number of found ids do not match", 3, ret.length);
@@ -173,15 +173,16 @@
assertTrue("123 not among the extracted ids", retList.contains("123"));
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsMulipleMatchesWithDuplicates() {
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
String[] ret = issueExtractor.getIssueIds("Foo bug#4711 bug#42 bar\n" + "bug#123 baz bug#42");
assertEquals("Number of found ids do not match", 3, ret.length);
@@ -191,18 +192,18 @@
assertTrue("123 not among the extracted ids", retList.contains("123"));
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitSingleIssue() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
-
- replayMocks();
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -212,27 +213,23 @@
expected.put("42", Sets.newHashSet("somewhere", "subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 5);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitMultipleIssues() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"bug#42, and bug#4711\n"
+ "\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -242,27 +239,23 @@
expected.put("4711", Sets.newHashSet("somewhere", "subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 5);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitMultipleIssuesMultipleTimes() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"bug#42, bug#4711, bug#4711, bug#42, and bug#4711\n"
+ "\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -272,29 +265,25 @@
expected.put("4711", Sets.newHashSet("somewhere", "subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 5);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitSingleIssueBody() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject does not reference a bug\n"
+ "Body references bug#42\n"
+ "\n"
+ "Footer: does not reference a bug\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -303,30 +292,25 @@
expected.put("42", Sets.newHashSet("somewhere", "body"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitSingleIssueFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject does not reference a bug\n"
+ "Body does not reference a bug\n"
+ "\n"
+ "Footer: references bug#42\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -335,22 +319,19 @@
expected.put("42", Sets.newHashSet("somewhere", "footer", "footer-Footer"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitMultipleIssuesFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject does not reference a bug\n"
+ "Body does not reference a bug\n"
+ "\n"
@@ -361,8 +342,6 @@
+ "Change-Id: I1234567891123456789212345678931234567894\n"
+ "KeyZ: references bug#256");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -374,25 +353,19 @@
expected.put("4711", Sets.newHashSet("somewhere", "footer"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 9);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentParts() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n"
@@ -400,8 +373,6 @@
+ "Bug: bug#4711 in footer\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -413,22 +384,19 @@
expected.put("4711", Sets.newHashSet("somewhere", "footer", "footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsEmptySubject() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n"
@@ -436,8 +404,6 @@
+ "Bug: bug#4711 in footer\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -448,22 +414,19 @@
expected.put("4711", Sets.newHashSet("somewhere", "footer", "footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsLinePastFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n"
@@ -471,8 +434,6 @@
+ "Bug: bug#4711 in footer\n"
+ "Change-Id: I1234567891123456789212345678931234567894\n");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -484,22 +445,19 @@
expected.put("4711", Sets.newHashSet("somewhere", "footer", "footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsLinesPastFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n"
@@ -508,8 +466,6 @@
+ "Change-Id: I1234567891123456789212345678931234567894\n"
+ "\n");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -521,28 +477,23 @@
expected.put("4711", Sets.newHashSet("somewhere", "footer", "footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsNoFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -553,25 +504,23 @@
expected.put("176", Sets.newHashSet("somewhere", "body"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 3);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsNoFooterTrailingLine() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -582,26 +531,24 @@
expected.put("176", Sets.newHashSet("somewhere", "body"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 3);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitDifferentPartsNoFooterTrailingLines() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject references bug#42.\n"
+ "Body references bug#16.\n"
+ "Body also references bug#176.\n"
+ "\n");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -612,21 +559,19 @@
expected.put("176", Sets.newHashSet("somewhere", "body"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 3);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitEmpty() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("");
-
- replayMocks();
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("");
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -635,21 +580,19 @@
Map<String, Set<String>> expected = Maps.newHashMap();
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 3);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitBlankLine() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("\n");
-
- replayMocks();
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("\n");
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -659,18 +602,18 @@
assertEquals("Extracted issues do not match", expected, actual);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitBlankLines() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("\n\n");
-
- replayMocks();
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("\n\n");
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -680,18 +623,18 @@
assertEquals("Extracted issues do not match", expected, actual);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitMoreBlankLines() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("\n\n\n");
-
- replayMocks();
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("\n\n\n");
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -701,16 +644,18 @@
assertEquals("Extracted issues do not match", expected, actual);
assertLogMessageContains("Matching");
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitMixed() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"Subject bug#42, bug#1984, and bug#16\n"
+ "\n"
+ "bug#4711 in body,\n"
@@ -720,8 +665,6 @@
+ "Bug: bug#176, bug#1984, and bug#5150\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
- replayMocks();
-
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds("testProject", "1234567891123456789212345678931234567894");
@@ -735,26 +678,21 @@
expected.put("5150", Sets.newHashSet("somewhere", "body", "footer", "footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 6);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedEmptyFirst() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("");
- replayMocks();
-
- PatchSet.Id patchSetId = new PatchSet.Id(new Change.Id(4), 1);
+ PatchSet.Id patchSetId = PatchSet.id(Change.id(4), 1);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
issueExtractor.getIssueIds(
@@ -763,27 +701,25 @@
Map<String, Set<String>> expected = Maps.newHashMap();
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 3);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSingleSubjectIssueFirst() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(1).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(1);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -794,40 +730,34 @@
expected.put("42", Sets.newHashSet("somewhere", "subject", "added@somewhere", "added@subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 5);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSingleSubjectIssueSecondEmpty() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn("subject\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn("subject\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -838,45 +768,34 @@
expected.put("42", Sets.newHashSet("somewhere", "subject", "added@somewhere", "added@subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 10);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSingleSubjectIssueSecondSame() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -887,49 +806,38 @@
expected.put("42", Sets.newHashSet("somewhere", "subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 10);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSingleSubjectIssueSecondBody() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn(
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn(
"subject\n"
+ "bug#42\n"
+ "\n"
+ "Change-Id: I9876543211987654321298765432139876543214");
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -940,49 +848,38 @@
expected.put("42", Sets.newHashSet("somewhere", "subject", "added@subject"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 10);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSingleSubjectIssueSecondFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"subject\n"
+ "\n"
+ "Bug: bug#42\n"
+ "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn("bug#42\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn("bug#42\n" + "\n" + "Change-Id: I9876543211987654321298765432139876543214");
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -995,30 +892,22 @@
Sets.newHashSet("somewhere", "footer", "added@footer", "footer-Bug", "added@footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 11);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedSubjectFooter() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"subject bug#42\n"
+ "\n"
+ "body bug#42\n"
@@ -1027,24 +916,20 @@
+ "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn(
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn(
"subject\n"
+ "bug#42\n"
+ "\n"
+ "Change-Id: I9876543211987654321298765432139876543214");
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -1065,30 +950,22 @@
"added@footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 11);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
}
public void testIssueIdsCommitWAddedMultiple() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).atLeastOnce();
- expect(itsConfig.getIssuePatternGroupIndex()).andReturn(1).atLeastOnce();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ when(itsConfig.getIssuePatternGroupIndex()).thenReturn(1);
- Change.Id changeId = createMock(Change.Id.class);
+ Change.Id changeId = mock(Change.Id.class);
// Call for current patch set
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "1234567891123456789212345678931234567894"))
- .andReturn(
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "1234567891123456789212345678931234567894"))
+ .thenReturn(
"subject bug#42\n"
+ "\n"
+ "body bug#42 bug#16\n"
@@ -1097,25 +974,21 @@
+ "Change-Id: I1234567891123456789212345678931234567894");
// Call for previous patch set
- PatchSet.Id previousPatchSetId = new PatchSet.Id(changeId, 1);
- expect(
- commitMessageFetcher.fetchGuarded(
- "testProject", "9876543211987654321298765432139876543214"))
- .andReturn(
+ PatchSet.Id previousPatchSetId = PatchSet.id(changeId, 1);
+ when(commitMessageFetcher.fetchGuarded(
+ "testProject", "9876543211987654321298765432139876543214"))
+ .thenReturn(
"subject\n"
+ "bug#42 bug#4711\n"
+ "\n"
+ "Bug: bug#16\n"
+ "Change-Id: I9876543211987654321298765432139876543214");
- expect(db.getRevision(previousPatchSetId))
- .andReturn("9876543211987654321298765432139876543214");
+ when(db.getRevision(previousPatchSetId)).thenReturn("9876543211987654321298765432139876543214");
- PatchSet.Id currentPatchSetId = createMock(PatchSet.Id.class);
- expect(currentPatchSetId.get()).andReturn(2).anyTimes();
- expect(currentPatchSetId.getParentKey()).andReturn(changeId).anyTimes();
-
- replayMocks();
+ PatchSet.Id currentPatchSetId = mock(PatchSet.Id.class);
+ when(currentPatchSetId.get()).thenReturn(2);
+ when(currentPatchSetId.changeId()).thenReturn(changeId);
IssueExtractor issueExtractor = injector.getInstance(IssueExtractor.class);
Map<String, Set<String>> actual =
@@ -1137,18 +1010,14 @@
"added@footer-Bug"));
assertEquals("Extracted issues do not match", expected, actual);
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
- assertLogMessageContains("Matching");
+ assertLogMessageContains("Matching", 12);
+
+ verifyOneOrMore(itsConfig).getIssuePattern();
+ verifyOneOrMore(itsConfig).getIssuePatternGroupIndex();
+ }
+
+ private <T> T verifyOneOrMore(T mock) {
+ return verify(mock, atLeastOnce());
}
@Override
@@ -1161,13 +1030,13 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- itsConfig = createMock(ItsConfig.class);
+ itsConfig = mock(ItsConfig.class);
bind(ItsConfig.class).toInstance(itsConfig);
- commitMessageFetcher = createMock(CommitMessageFetcher.class);
+ commitMessageFetcher = mock(CommitMessageFetcher.class);
bind(CommitMessageFetcher.class).toInstance(commitMessageFetcher);
- db = createMock(PatchSetDb.class);
+ db = mock(PatchSetDb.class);
bind(PatchSetDb.class).toInstance(db);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractorTest.java
index 0aecd05..2fbca57 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/ItsProjectExtractorTest.java
@@ -14,17 +14,18 @@
package com.googlesource.gerrit.plugins.its.base.util;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.googlesource.gerrit.plugins.its.base.its.ItsConfig;
-import com.googlesource.gerrit.plugins.its.base.testutil.MockingTestCase;
import java.util.Optional;
+import junit.framework.TestCase;
-public class ItsProjectExtractorTest extends MockingTestCase {
+public class ItsProjectExtractorTest extends TestCase {
private static final String PROJECT = "project";
private static final String ITS_PROJECT = "itsProject";
@@ -35,11 +36,9 @@
public void test() {
ItsProjectExtractor projectExtractor = injector.getInstance(ItsProjectExtractor.class);
- expect(itsConfig.getItsProjectName(new Project.NameKey(PROJECT)))
- .andReturn(Optional.of(ITS_PROJECT))
- .once();
-
- replayMocks();
+ when(itsConfig.getItsProjectName(Project.nameKey(PROJECT)))
+ .thenReturn(Optional.of(ITS_PROJECT))
+ .thenThrow(new UnsupportedOperationException("Method more than once"));
String ret = projectExtractor.getItsProject(PROJECT).orElse(null);
assertEquals(ret, ITS_PROJECT);
@@ -55,7 +54,7 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- itsConfig = createMock(ItsConfig.class);
+ itsConfig = mock(ItsConfig.class);
bind(ItsConfig.class).toInstance(itsConfig);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
index df88c2f..153f1c3 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
@@ -13,13 +13,14 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.util;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Change.Status;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.Change.Status;
import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.ApprovalAttribute;
import com.google.gerrit.server.data.ChangeAttribute;
@@ -38,8 +39,6 @@
private ItsFacade facade;
public void testAccountAttributeNull() {
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(null, "prefix");
@@ -55,8 +54,6 @@
accountAttribute.name = "testName";
accountAttribute.username = "testUsername";
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(accountAttribute, "prefix");
@@ -87,10 +84,8 @@
changeAttribute.commitMessage = "Commit Message";
changeAttribute.status = Change.Status.NEW;
- expect(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
- .andReturn("http://www.example.org/test");
-
- replayMocks();
+ when(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
+ .thenReturn("http://www.example.org/test");
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
@@ -133,10 +128,8 @@
changeAttribute.commitMessage = "Commit Message";
changeAttribute.status = Change.Status.NEW;
- expect(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
- .andReturn("http://www.example.org/test");
-
- replayMocks();
+ when(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
+ .thenReturn("http://www.example.org/test");
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
@@ -179,10 +172,8 @@
changeAttribute.owner = owner;
changeAttribute.commitMessage = "Commit Message";
- expect(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
- .andReturn("http://www.example.org/test");
-
- replayMocks();
+ when(facade.createLinkForWebui("http://www.example.org/test", "http://www.example.org/test"))
+ .thenReturn("http://www.example.org/test");
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
@@ -231,8 +222,6 @@
patchSetAttribute.uploader = uploader;
patchSetAttribute.author = author;
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(patchSetAttribute);
@@ -262,8 +251,6 @@
refUpdateAttribute.oldRev = "9876543211987654321298765432139876543214";
refUpdateAttribute.refName = "refs/heads/master";
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(refUpdateAttribute);
@@ -284,8 +271,6 @@
approvalAttribute.type = "TestType";
approvalAttribute.value = "TestValue";
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(approvalAttribute);
@@ -299,8 +284,6 @@
approvalAttribute.type = "Test-Type";
approvalAttribute.value = "TestValue";
- replayMocks();
-
PropertyAttributeExtractor extractor = injector.getInstance(PropertyAttributeExtractor.class);
Map<String, String> actual = extractor.extractFrom(approvalAttribute);
@@ -318,7 +301,7 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- facade = createMock(ItsFacade.class);
+ facade = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(facade);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
index bfaa949..bdc697b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
@@ -13,18 +13,19 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.util;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.PatchSet;
+import com.google.gerrit.entities.Project;
+import com.google.gerrit.entities.Project.NameKey;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSet;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Project.NameKey;
import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.ApprovalAttribute;
import com.google.gerrit.server.data.ChangeAttribute;
@@ -56,9 +57,7 @@
public void testDummyChangeEvent() {
PropertyExtractor propertyExtractor = injector.getInstance(PropertyExtractor.class);
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
-
- replayMocks();
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
Set<Map<String, String>> actual =
propertyExtractor.extractFrom(new DummyEvent()).getIssuesProperties();
@@ -70,25 +69,25 @@
public void testChangeAbandonedEvent() {
ChangeAbandonedEvent event = new ChangeAbandonedEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.abandoner = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("abandonerName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "abandoner"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "abandoner"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
event.reason = "testReason";
changeAttribute.project = "testProject";
@@ -111,25 +110,25 @@
public void testChangeMergedEvent() {
ChangeMergedEvent event = new ChangeMergedEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.submitter = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("submitterName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "submitter"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "submitter"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
changeAttribute.project = "testProject";
changeAttribute.number = 176;
@@ -150,25 +149,25 @@
public void testChangeRestoredEvent() {
ChangeRestoredEvent event = new ChangeRestoredEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.restorer = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("restorerName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "restorer"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "restorer"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
event.reason = "testReason";
changeAttribute.project = "testProject";
@@ -191,25 +190,25 @@
public void testCommentAddedEventWOApprovals() {
CommentAddedEvent event = new CommentAddedEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.author = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("commenterName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "commenter"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "commenter"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
event.approvals = Suppliers.ofInstance(null);
@@ -234,34 +233,34 @@
public void testCommentAddedEventWApprovals() {
CommentAddedEvent event = new CommentAddedEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.author = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("commenterName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "commenter"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "commenter"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
- ApprovalAttribute approvalAttribute1 = createMock(ApprovalAttribute.class);
+ ApprovalAttribute approvalAttribute1 = mock(ApprovalAttribute.class);
Map<String, String> approuvalProperties1 = ImmutableMap.of("approvalCodeReview", "0");
- expect(propertyAttributeExtractor.extractFrom(approvalAttribute1))
- .andReturn(approuvalProperties1);
- ApprovalAttribute approvalAttribute2 = createMock(ApprovalAttribute.class);
+ when(propertyAttributeExtractor.extractFrom(approvalAttribute1))
+ .thenReturn(approuvalProperties1);
+ ApprovalAttribute approvalAttribute2 = mock(ApprovalAttribute.class);
Map<String, String> approuvalProperties2 = ImmutableMap.of("approvalVerified", "0");
- expect(propertyAttributeExtractor.extractFrom(approvalAttribute2))
- .andReturn(approuvalProperties2);
+ when(propertyAttributeExtractor.extractFrom(approvalAttribute2))
+ .thenReturn(approuvalProperties2);
ApprovalAttribute[] approvalAttributes = {approvalAttribute1, approvalAttribute2};
event.approvals = Suppliers.ofInstance(approvalAttributes);
@@ -288,25 +287,25 @@
public void testPatchSetCreatedEvent() {
PatchSetCreatedEvent event = new PatchSetCreatedEvent(testChange("testProject", "testBranch"));
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
- ChangeAttribute changeAttribute = createMock(ChangeAttribute.class);
+ ChangeAttribute changeAttribute = mock(ChangeAttribute.class);
event.change = Suppliers.ofInstance(changeAttribute);
Map<String, String> changeProperties =
ImmutableMap.of("project", "testProject", "changeNumber", "176");
- expect(propertyAttributeExtractor.extractFrom(changeAttribute)).andReturn(changeProperties);
+ when(propertyAttributeExtractor.extractFrom(changeAttribute)).thenReturn(changeProperties);
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.uploader = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("uploaderName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "uploader"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "uploader"))
+ .thenReturn(accountProperties);
- PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class);
+ PatchSetAttribute patchSetAttribute = mock(PatchSetAttribute.class);
event.patchSet = Suppliers.ofInstance(patchSetAttribute);
Map<String, String> patchSetProperties =
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
- expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ when(propertyAttributeExtractor.extractFrom(patchSetAttribute)).thenReturn(patchSetProperties);
changeAttribute.project = "testProject";
changeAttribute.number = 176;
@@ -327,25 +326,25 @@
public void testRefUpdatedEvent() {
RefUpdatedEvent event = new RefUpdatedEvent();
- AccountAttribute accountAttribute = createMock(AccountAttribute.class);
+ AccountAttribute accountAttribute = mock(AccountAttribute.class);
event.submitter = Suppliers.ofInstance(accountAttribute);
Map<String, String> accountProperties = ImmutableMap.of("submitterName", "testName");
- expect(propertyAttributeExtractor.extractFrom(accountAttribute, "submitter"))
- .andReturn(accountProperties);
+ when(propertyAttributeExtractor.extractFrom(accountAttribute, "submitter"))
+ .thenReturn(accountProperties);
- RefUpdateAttribute refUpdateAttribute = createMock(RefUpdateAttribute.class);
+ RefUpdateAttribute refUpdateAttribute = mock(RefUpdateAttribute.class);
event.refUpdate = Suppliers.ofInstance(refUpdateAttribute);
Map<String, String> refUpdatedProperties =
ImmutableMap.of("revision", "testRevision", "revisionOld", "oldRevision");
- expect(propertyAttributeExtractor.extractFrom(refUpdateAttribute))
- .andReturn(refUpdatedProperties);
+ when(propertyAttributeExtractor.extractFrom(refUpdateAttribute))
+ .thenReturn(refUpdatedProperties);
refUpdateAttribute.project = "testProject";
refUpdateAttribute.newRev = "testRevision";
refUpdateAttribute.oldRev = "oldRevision";
refUpdateAttribute.refName = "testBranch";
- expect(itsProjectExtractor.getItsProject("testProject")).andReturn(Optional.empty());
+ when(itsProjectExtractor.getItsProject("testProject")).thenReturn(Optional.empty());
Map<String, String> common =
ImmutableMap.<String, String>builder()
@@ -370,15 +369,13 @@
issueMap.put("4711", Sets.newHashSet("body", "anywhere"));
issueMap.put("42", Sets.newHashSet("footer", "anywhere"));
if (withRevision) {
- PatchSet.Id patchSetId = new PatchSet.Id(new Change.Id(176), 3);
- expect(issueExtractor.getIssueIds("testProject", "testRevision", patchSetId))
- .andReturn(issueMap);
+ PatchSet.Id patchSetId = PatchSet.id(Change.id(176), 3);
+ when(issueExtractor.getIssueIds("testProject", "testRevision", patchSetId))
+ .thenReturn(issueMap);
} else {
- expect(issueExtractor.getIssueIds("testProject", "testRevision")).andReturn(issueMap);
+ when(issueExtractor.getIssueIds("testProject", "testRevision")).thenReturn(issueMap);
}
- replayMocks();
-
Set<Map<String, String>> actual = propertyExtractor.extractFrom(event).getIssuesProperties();
Map<String, String> propertiesIssue4711 =
@@ -417,13 +414,13 @@
protected void configure() {
bind(String.class).annotatedWith(PluginName.class).toInstance("ItsTestName");
- itsProjectExtractor = createMock(ItsProjectExtractor.class);
+ itsProjectExtractor = mock(ItsProjectExtractor.class);
bind(ItsProjectExtractor.class).toInstance(itsProjectExtractor);
- issueExtractor = createMock(IssueExtractor.class);
+ issueExtractor = mock(IssueExtractor.class);
bind(IssueExtractor.class).toInstance(issueExtractor);
- propertyAttributeExtractor = createMock(PropertyAttributeExtractor.class);
+ propertyAttributeExtractor = mock(PropertyAttributeExtractor.class);
bind(PropertyAttributeExtractor.class).toInstance(propertyAttributeExtractor);
}
}
@@ -440,7 +437,7 @@
@Override
public NameKey getProjectNameKey() {
- return new Project.NameKey("testProject");
+ return Project.nameKey("testProject");
}
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
index 666d463..433c43e 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
@@ -13,11 +13,17 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.validation;
-import static org.easymock.EasyMock.expect;
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.testing.GerritJUnit.assertThrows;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.events.CommitReceivedEvent;
import com.google.gerrit.server.git.validators.CommitValidationException;
@@ -30,17 +36,14 @@
import com.googlesource.gerrit.plugins.its.base.testutil.LoggingMockingTestCase;
import com.googlesource.gerrit.plugins.its.base.util.IssueExtractor;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
import java.util.Optional;
+import java.util.Random;
import java.util.regex.Pattern;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({RevCommit.class})
public class ItsValidateCommentTest extends LoggingMockingTestCase {
private Injector injector;
private IssueExtractor issueExtractor;
@@ -48,43 +51,34 @@
private ItsConfig itsConfig;
private ItsFacadeFactory itsFacadeFactory;
- private Project project = new Project(new Project.NameKey("myProject"));
+ private Project project = new Project(Project.nameKey("myProject"));
public void testOptional() throws CommitValidationException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit();
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.OPTIONAL)
- .atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.OPTIONAL);
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
}
public void testSuggestedNonMatching() throws CommitValidationException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("TestMessage");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(itsConfig.getDummyIssuePattern()).andReturn(Optional.empty()).atLeastOnce();
- expect(commit.getFullMessage()).andReturn("TestMessage").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("TestMessage")).andReturn(new String[] {}).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(itsConfig.getDummyIssuePattern()).thenReturn(Optional.empty());
+ when(issueExtractor.getIssueIds("TestMessage")).thenReturn(new String[] {});
ret = ivc.onCommitReceived(event);
@@ -92,126 +86,104 @@
assertTrue(
"First CommitValidationMessages does not contain 'Missing " + "issue'",
ret.get(0).getMessage().contains("Missing issue"));
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(itsConfig).getDummyIssuePattern();
+ verifyOneOrMore(issueExtractor).getIssueIds("TestMessage");
}
public void testMandatoryNonMatching() {
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("TestMessage");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(itsConfig.getDummyIssuePattern()).andReturn(Optional.empty()).atLeastOnce();
- expect(commit.getFullMessage()).andReturn("TestMessage").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("TestMessage")).andReturn(new String[] {}).atLeastOnce();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(itsConfig.getDummyIssuePattern()).thenReturn(Optional.empty());
+ when(issueExtractor.getIssueIds("TestMessage")).thenReturn(new String[] {});
- replayMocks();
+ CommitValidationException thrown =
+ assertThrows(CommitValidationException.class, () -> ivc.onCommitReceived(event));
+ assertThat(thrown).hasMessageThat().contains("Missing issue");
- try {
- ivc.onCommitReceived(event);
- fail("onCommitReceived did not throw any exception");
- } catch (CommitValidationException e) {
- assertTrue(
- "Message of thrown CommitValidationException does not " + "contain 'Missing issue'",
- e.getMessage().contains("Missing issue"));
- }
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(itsConfig).getDummyIssuePattern();
+ verifyOneOrMore(issueExtractor).getIssueIds("TestMessage");
}
public void testOnlySkipMatching() throws CommitValidationException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("TestMessage SKIP");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(itsConfig.getDummyIssuePattern())
- .andReturn(Optional.of(Pattern.compile("SKIP")))
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("TestMessage SKIP").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("TestMessage SKIP")).andReturn(new String[] {}).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(itsConfig.getDummyIssuePattern()).thenReturn(Optional.of(Pattern.compile("SKIP")));
+ when(issueExtractor.getIssueIds("TestMessage SKIP")).thenReturn(new String[] {});
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(itsConfig).getDummyIssuePattern();
+ verifyOneOrMore(issueExtractor).getIssueIds("TestMessage SKIP");
}
public void testSuggestedMatchingSingleExisting() throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711")).andReturn(new String[] {"4711"}).atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade);
- expect(itsFacade.exists("4711")).andReturn(true).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711")).thenReturn(new String[] {"4711"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(true);
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711");
+ verifyOneOrMore(itsFacade).exists("4711");
}
public void testMandatoryMatchingSingleExisting() throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711")).andReturn(new String[] {"4711"}).atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade);
- expect(itsFacade.exists("4711")).andReturn(true).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711")).thenReturn(new String[] {"4711"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(true);
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711");
+ verifyOneOrMore(itsFacade).exists("4711");
}
public void testSuggestedMatchingSingleNonExisting()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711")).andReturn(new String[] {"4711"}).atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade);
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711")).thenReturn(new String[] {"4711"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
ret = ivc.onCommitReceived(event);
@@ -222,111 +194,90 @@
assertTrue(
"First CommitValidationMessages does not contain '4711'",
ret.get(0).getMessage().contains("4711"));
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711");
+ verifyOneOrMore(itsFacade).exists("4711");
}
public void testMandatoryMatchingSingleNonExisting() throws IOException {
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711")).andReturn(new String[] {"4711"}).atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade);
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711")).thenReturn(new String[] {"4711"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
- replayMocks();
+ CommitValidationException thrown =
+ assertThrows(CommitValidationException.class, () -> ivc.onCommitReceived(event));
+ assertThat(thrown).hasMessageThat().contains("Non-existing");
- try {
- ivc.onCommitReceived(event);
- fail("onCommitReceived did not throw any exception");
- } catch (CommitValidationException e) {
- assertTrue(
- "Message of thrown CommitValidationException does not " + "contain 'Non-existing'",
- e.getMessage().contains("Non-existing"));
- }
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711");
+ verifyOneOrMore(itsFacade).exists("4711");
}
public void testSuggestedMatchingMultiple() throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(true).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(true);
+ when(itsFacade.exists("42")).thenReturn(true);
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testMandatoryMatchingMultiple() throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(true).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(true);
+ when(itsFacade.exists("42")).thenReturn(true);
ret = ivc.onCommitReceived(event);
assertEmptyList(ret);
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testSuggestedMatchingMultipleOneNonExsting()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
+ when(itsFacade.exists("42")).thenReturn(true);
ret = ivc.onCommitReceived(event);
@@ -340,61 +291,48 @@
assertFalse(
"First CommitValidationMessages contains '42', although " + "that bug exists",
ret.get(0).getMessage().contains("42"));
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testMandatoryMatchingMultipleOneNonExsting() throws IOException {
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
+ when(itsFacade.exists("42")).thenReturn(true);
- replayMocks();
+ CommitValidationException thrown =
+ assertThrows(CommitValidationException.class, () -> ivc.onCommitReceived(event));
+ assertThat(thrown).hasMessageThat().contains("Non-existing");
- try {
- ivc.onCommitReceived(event);
- fail("onCommitReceived did not throw any exception");
- } catch (CommitValidationException e) {
- assertTrue(
- "Message of thrown CommitValidationException does not " + "contain 'Non-existing'",
- e.getMessage().contains("Non-existing"));
- }
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testSuggestedMatchingMultipleSomeNonExsting()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(false).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
+ when(itsFacade.exists("42")).thenReturn(false);
ret = ivc.onCommitReceived(event);
@@ -408,61 +346,48 @@
assertTrue(
"First CommitValidationMessages does not contain '42'",
ret.get(0).getMessage().contains("42"));
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testMandatoryMatchingMultipleSomeNonExsting() throws IOException {
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andReturn(false).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ when(itsFacade.exists("4711")).thenReturn(false);
+ when(itsFacade.exists("42")).thenReturn(true);
- replayMocks();
+ CommitValidationException thrown =
+ assertThrows(CommitValidationException.class, () -> ivc.onCommitReceived(event));
+ assertThat(thrown).hasMessageThat().contains("Non-existing");
- try {
- ivc.onCommitReceived(event);
- fail("onCommitReceived did not throw any exception");
- } catch (CommitValidationException e) {
- assertTrue(
- "Message of thrown CommitValidationException does not " + "contain 'Non-existing'",
- e.getMessage().contains("Non-existing"));
- }
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testSuggestedMatchingMultipleIOExceptionIsNonExsting()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.SUGGESTED)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andThrow(new IOException("InjectedEx1")).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(false).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.SUGGESTED);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ doThrow(new IOException("InjectedEx1")).when(itsFacade).exists("4711");
+ when(itsFacade.exists("42")).thenReturn(false);
ret = ivc.onCommitReceived(event);
@@ -488,27 +413,25 @@
ret.get(1).getMessage().contains("42"));
assertLogMessageContains("4711");
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testMandatoryMatchingSingleIOException()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711")).andReturn(new String[] {"4711"}).atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andThrow(new IOException("InjectedEx1")).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711")).thenReturn(new String[] {"4711"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ doThrow(new IOException("InjectedEx1")).when(itsFacade).exists("4711");
ret = ivc.onCommitReceived(event);
@@ -524,29 +447,23 @@
ret.get(0).getMessage().contains("InjectedEx1"));
assertLogMessageContains("4711");
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711");
+ verifyOneOrMore(itsFacade).exists("4711");
}
public void testMandatoryMatchingMultipleIOExceptionIsNonExisting() throws IOException {
- List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andThrow(new IOException("InjectedEx1")).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(false).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ doThrow(new IOException("InjectedEx1")).when(itsFacade).exists("4711");
+ when(itsFacade.exists("42")).thenReturn(false);
try {
ivc.onCommitReceived(event);
@@ -557,30 +474,26 @@
"Message of thrown CommitValidationException does not " + "contain 'Non-existing'",
e.getMessage().contains("Non-existing"));
}
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void testMandatoryMatchingMultipleIOExceptionExisting()
throws CommitValidationException, IOException {
List<CommitValidationMessage> ret;
ItsValidateComment ivc = injector.getInstance(ItsValidateComment.class);
- ReceiveCommand command = createMock(ReceiveCommand.class);
- RevCommit commit = createMock(RevCommit.class);
+ ReceiveCommand command = mock(ReceiveCommand.class);
+ RevCommit commit = createCommit("bug#4711, bug#42");
CommitReceivedEvent event = newCommitReceivedEvent(command, project, null, commit, null);
- expect(itsConfig.getItsAssociationPolicy())
- .andReturn(ItsAssociationPolicy.MANDATORY)
- .atLeastOnce();
- expect(commit.getFullMessage()).andReturn("bug#4711, bug#42").atLeastOnce();
- expect(commit.getId()).andReturn(commit).anyTimes();
- expect(commit.getName()).andReturn("TestCommit").anyTimes();
- expect(issueExtractor.getIssueIds("bug#4711, bug#42"))
- .andReturn(new String[] {"4711", "42"})
- .atLeastOnce();
- expect(itsFacadeFactory.getFacade(project.getNameKey())).andReturn(itsFacade).anyTimes();
- expect(itsFacade.exists("4711")).andThrow(new IOException("InjectedEx1")).atLeastOnce();
- expect(itsFacade.exists("42")).andReturn(true).atLeastOnce();
-
- replayMocks();
+ when(itsConfig.getItsAssociationPolicy()).thenReturn(ItsAssociationPolicy.MANDATORY);
+ when(issueExtractor.getIssueIds("bug#4711, bug#42")).thenReturn(new String[] {"4711", "42"});
+ when(itsFacadeFactory.getFacade(project.getNameKey())).thenReturn(itsFacade);
+ doThrow(new IOException("InjectedEx1")).when(itsFacade).exists("4711");
+ when(itsFacade.exists("42")).thenReturn(true);
ret = ivc.onCommitReceived(event);
@@ -596,6 +509,11 @@
ret.get(0).getMessage().contains("InjectedEx1"));
assertLogMessageContains("4711");
+
+ verifyOneOrMore(itsConfig).getItsAssociationPolicy();
+ verifyOneOrMore(issueExtractor).getIssueIds("bug#4711, bug#42");
+ verifyOneOrMore(itsFacade).exists("4711");
+ verifyOneOrMore(itsFacade).exists("42");
}
public void assertEmptyList(List<CommitValidationMessage> list) {
@@ -611,9 +529,9 @@
}
private void setupCommonMocks() {
- expect(itsConfig.getIssuePattern()).andReturn(Pattern.compile("bug#(\\d+)")).anyTimes();
- Project.NameKey projectNK = new Project.NameKey("myProject");
- expect(itsConfig.isEnabled(projectNK, null)).andReturn(true).anyTimes();
+ when(itsConfig.getIssuePattern()).thenReturn(Pattern.compile("bug#(\\d+)"));
+ Project.NameKey projectNK = Project.nameKey("myProject");
+ when(itsConfig.isEnabled(projectNK, null)).thenReturn(true);
}
@Override
@@ -631,32 +549,56 @@
String refName,
RevCommit commit,
IdentifiedUser user) {
- CommitReceivedEvent event = createMock(CommitReceivedEvent.class);
+ CommitReceivedEvent event = mock(CommitReceivedEvent.class);
event.command = command;
event.project = project;
event.refName = refName;
event.commit = commit;
event.user = user;
- expect(event.getProjectNameKey()).andReturn(project.getNameKey()).anyTimes();
- expect(event.getRefName()).andReturn(null).anyTimes();
+ when(event.getProjectNameKey()).thenReturn(project.getNameKey());
+ when(event.getRefName()).thenReturn(null);
return event;
}
+ private RevCommit createCommit() {
+ return createCommit("Hello world");
+ }
+
+ private RevCommit createCommit(String fullMessage) {
+ String parents = String.format("parent %040x\n", new java.util.Random().nextLong());
+ String commitData =
+ String.format(
+ "tree %040x\n"
+ + parents
+ + "author John Doe <john@doe.com> %d +0100\n"
+ + "committer John Doe <john@doe.com> %d +0100\n\n"
+ + "%s",
+ new Random().nextLong(),
+ new Date().getTime(),
+ new Date().getTime(),
+ fullMessage);
+ return RevCommit.parse(commitData.getBytes());
+ }
+
+ private <T> T verifyOneOrMore(T mock) {
+ return verify(mock, atLeastOnce());
+ }
+
private class TestModule extends FactoryModule {
@Override
protected void configure() {
bind(String.class).annotatedWith(PluginName.class).toInstance("ItsTestName");
- issueExtractor = createMock(IssueExtractor.class);
+ issueExtractor = mock(IssueExtractor.class);
bind(IssueExtractor.class).toInstance(issueExtractor);
- itsFacade = createMock(ItsFacade.class);
+ itsFacade = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(itsFacade);
- itsConfig = createMock(ItsConfig.class);
+ itsConfig = mock(ItsConfig.class);
bind(ItsConfig.class).toInstance(itsConfig);
- itsFacadeFactory = createMock(ItsFacadeFactory.class);
+ itsFacadeFactory = mock(ItsFacadeFactory.class);
bind(ItsFacadeFactory.class).toInstance(itsFacadeFactory);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionControllerTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionControllerTest.java
index bd32089..3653d26 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionControllerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionControllerTest.java
@@ -13,8 +13,10 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -44,14 +46,11 @@
public void testNoPropertySets() {
ActionController actionController = createActionController();
- ChangeEvent event = createMock(ChangeEvent.class);
+ ChangeEvent event = mock(ChangeEvent.class);
Set<Map<String, String>> propertySets = new HashSet<>();
- expect(propertyExtractor.extractFrom(event))
- .andReturn(new RefEventProperties(Collections.emptyMap(), propertySets))
- .anyTimes();
-
- replayMocks();
+ when(propertyExtractor.extractFrom(event))
+ .thenReturn(new RefEventProperties(Collections.emptyMap(), propertySets));
actionController.onEvent(event);
}
@@ -59,22 +58,22 @@
public void testNoActionsOrNoIssues() {
ActionController actionController = createActionController();
- ChangeEvent event = createMock(ChangeEvent.class);
+ ChangeEvent event = mock(ChangeEvent.class);
Set<Map<String, String>> propertySets = new HashSet<>();
Map<String, String> properties = ImmutableMap.of("fake", "property");
propertySets.add(properties);
- expect(propertyExtractor.extractFrom(event))
- .andReturn(new RefEventProperties(properties, propertySets))
- .anyTimes();
+ when(propertyExtractor.extractFrom(event))
+ .thenReturn(new RefEventProperties(properties, propertySets));
// When no issues are found in the commit message, the list of actions is empty
// as there are no matchs with an empty map of properties.
Collection<ActionRequest> actions = Collections.emptySet();
- expect(ruleBase.actionRequestsFor(properties)).andReturn(actions).times(2);
-
- replayMocks();
+ when(ruleBase.actionRequestsFor(properties))
+ .thenReturn(actions)
+ .thenReturn(actions)
+ .thenThrow(new UnsupportedOperationException("Method called more than twice"));
actionController.onEvent(event);
}
@@ -82,7 +81,7 @@
public void testSinglePropertyMapSingleIssueActionSingleProjectAction() {
ActionController actionController = createActionController();
- ChangeEvent event = createMock(ChangeEvent.class);
+ ChangeEvent event = mock(ChangeEvent.class);
Map<String, String> projectProperties = ImmutableMap.of("its-project", "itsProject");
@@ -94,56 +93,58 @@
Set<Map<String, String>> propertySets = ImmutableSet.of(issueProperties);
- expect(propertyExtractor.extractFrom(event))
- .andReturn(new RefEventProperties(projectProperties, propertySets))
- .anyTimes();
+ when(propertyExtractor.extractFrom(event))
+ .thenReturn(new RefEventProperties(projectProperties, propertySets));
- ActionRequest issueActionRequest1 = createMock(ActionRequest.class);
+ ActionRequest issueActionRequest1 = mock(ActionRequest.class);
Collection<ActionRequest> issueActionRequests = ImmutableList.of(issueActionRequest1);
- expect(ruleBase.actionRequestsFor(issueProperties)).andReturn(issueActionRequests).once();
+ when(ruleBase.actionRequestsFor(issueProperties))
+ .thenReturn(issueActionRequests)
+ .thenThrow(new UnsupportedOperationException("Method called more than once"));
- ActionRequest projectActionRequest1 = createMock(ActionRequest.class);
+ ActionRequest projectActionRequest1 = mock(ActionRequest.class);
Collection<ActionRequest> projectActionRequests = ImmutableList.of(projectActionRequest1);
- expect(ruleBase.actionRequestsFor(projectProperties)).andReturn(projectActionRequests).once();
-
- actionExecutor.executeOnIssue(issueActionRequests, issueProperties);
- actionExecutor.executeOnProject(projectActionRequests, projectProperties);
-
- replayMocks();
+ when(ruleBase.actionRequestsFor(projectProperties))
+ .thenReturn(projectActionRequests)
+ .thenThrow(new UnsupportedOperationException("Method called more than once"));
actionController.onEvent(event);
+
+ verify(actionExecutor).executeOnIssue(issueActionRequests, issueProperties);
+ verify(actionExecutor).executeOnProject(projectActionRequests, projectProperties);
}
public void testMultiplePropertyMapsMultipleActionMultipleIssue() {
ActionController actionController = createActionController();
- ChangeEvent event = createMock(ChangeEvent.class);
+ ChangeEvent event = mock(ChangeEvent.class);
Map<String, String> properties1 = ImmutableMap.of("issue", "testIssue");
Map<String, String> properties2 = ImmutableMap.of("issue", "testIssue2");
Set<Map<String, String>> propertySets = ImmutableSet.of(properties1, properties2);
- expect(propertyExtractor.extractFrom(event))
- .andReturn(new RefEventProperties(Collections.emptyMap(), propertySets))
- .anyTimes();
+ when(propertyExtractor.extractFrom(event))
+ .thenReturn(new RefEventProperties(Collections.emptyMap(), propertySets));
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
Collection<ActionRequest> actionRequests1 = ImmutableList.of(actionRequest1);
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
- ActionRequest actionRequest3 = createMock(ActionRequest.class);
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
+ ActionRequest actionRequest3 = mock(ActionRequest.class);
Collection<ActionRequest> actionRequests2 = ImmutableList.of(actionRequest2, actionRequest3);
- expect(ruleBase.actionRequestsFor(properties1)).andReturn(actionRequests1).once();
- expect(ruleBase.actionRequestsFor(properties2)).andReturn(actionRequests2).once();
-
- actionExecutor.executeOnIssue(actionRequests1, properties1);
- actionExecutor.executeOnIssue(actionRequests2, properties2);
-
- replayMocks();
+ when(ruleBase.actionRequestsFor(properties1))
+ .thenReturn(actionRequests1)
+ .thenThrow(new UnsupportedOperationException("Method called more than once"));
+ when(ruleBase.actionRequestsFor(properties2))
+ .thenReturn(actionRequests2)
+ .thenThrow(new UnsupportedOperationException("Method called more than once"));
actionController.onEvent(event);
+
+ verify(actionExecutor).executeOnIssue(actionRequests1, properties1);
+ verify(actionExecutor).executeOnIssue(actionRequests2, properties2);
}
private ActionController createActionController() {
@@ -151,7 +152,7 @@
}
private void setupCommonMocks() {
- expect(itsConfig.isEnabled(anyObject(RefEvent.class))).andReturn(true).anyTimes();
+ when(itsConfig.isEnabled(any(RefEvent.class))).thenReturn(true);
}
@Override
@@ -165,16 +166,16 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- propertyExtractor = createMock(PropertyExtractor.class);
+ propertyExtractor = mock(PropertyExtractor.class);
bind(PropertyExtractor.class).toInstance(propertyExtractor);
- ruleBase = createMock(RuleBase.class);
+ ruleBase = mock(RuleBase.class);
bind(RuleBase.class).toInstance(ruleBase);
- actionExecutor = createMock(ActionExecutor.class);
+ actionExecutor = mock(ActionExecutor.class);
bind(ActionExecutor.class).toInstance(actionExecutor);
- itsConfig = createMock(ItsConfig.class);
+ itsConfig = mock(ItsConfig.class);
bind(ItsConfig.class).toInstance(itsConfig);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutorTest.java
index e82ffd1..5b8c43f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionExecutorTest.java
@@ -13,15 +13,17 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.annotations.Exports;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.gerrit.extensions.registration.DynamicMap;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
@@ -57,35 +59,30 @@
.build();
public void testExecuteItem() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("unparsed");
- expect(actionRequest.getUnparsed()).andReturn("unparsed action 1");
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("unparsed");
+ when(actionRequest.getUnparsed()).thenReturn("unparsed action 1");
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- its.performAction("4711", "unparsed action 1");
-
- replayMocks();
-
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(its).performAction("4711", "unparsed action 1");
}
public void testExecuteItemException() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("unparsed");
- expect(actionRequest.getUnparsed()).andReturn("unparsed action 1");
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("unparsed");
+ when(actionRequest.getUnparsed()).thenReturn("unparsed action 1");
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- its.performAction("4711", "unparsed action 1");
- expectLastCall().andThrow(new IOException("injected exception 1"));
-
- replayMocks();
+ doThrow(new IOException("injected exception 1"))
+ .when(its)
+ .performAction("4711", "unparsed action 1");
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
@@ -94,209 +91,180 @@
}
public void testExecuteIterable() throws IOException {
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
- expect(actionRequest1.getName()).andReturn("unparsed");
- expect(actionRequest1.getUnparsed()).andReturn("unparsed action 1");
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
+ when(actionRequest1.getName()).thenReturn("unparsed");
+ when(actionRequest1.getUnparsed()).thenReturn("unparsed action 1");
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
- expect(actionRequest2.getName()).andReturn("unparsed");
- expect(actionRequest2.getUnparsed()).andReturn("unparsed action 2");
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its)
- .anyTimes();
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
+ when(actionRequest2.getName()).thenReturn("unparsed");
+ when(actionRequest2.getUnparsed()).thenReturn("unparsed action 2");
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest1, actionRequest2);
- its.performAction("4711", "unparsed action 1");
- its.performAction("4711", "unparsed action 2");
-
- replayMocks();
-
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(its).performAction("4711", "unparsed action 1");
+ verify(its).performAction("4711", "unparsed action 2");
}
public void testExecuteIterableExceptions() throws IOException {
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
- expect(actionRequest1.getName()).andReturn("unparsed");
- expect(actionRequest1.getUnparsed()).andReturn("unparsed action 1");
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
+ when(actionRequest1.getName()).thenReturn("unparsed");
+ when(actionRequest1.getUnparsed()).thenReturn("unparsed action 1");
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
- expect(actionRequest2.getName()).andReturn("unparsed");
- expect(actionRequest2.getUnparsed()).andReturn("unparsed action 2");
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
+ when(actionRequest2.getName()).thenReturn("unparsed");
+ when(actionRequest2.getUnparsed()).thenReturn("unparsed action 2");
- ActionRequest actionRequest3 = createMock(ActionRequest.class);
- expect(actionRequest3.getName()).andReturn("unparsed");
- expect(actionRequest3.getUnparsed()).andReturn("unparsed action 3");
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its)
- .anyTimes();
+ ActionRequest actionRequest3 = mock(ActionRequest.class);
+ when(actionRequest3.getName()).thenReturn("unparsed");
+ when(actionRequest3.getUnparsed()).thenReturn("unparsed action 3");
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests =
ImmutableSet.of(actionRequest1, actionRequest2, actionRequest3);
- its.performAction("4711", "unparsed action 1");
- expectLastCall().andThrow(new IOException("injected exception 1"));
- its.performAction("4711", "unparsed action 2");
- its.performAction("4711", "unparsed action 3");
- expectLastCall().andThrow(new IOException("injected exception 3"));
-
- replayMocks();
+ doThrow(new IOException("injected exception 1"))
+ .when(its)
+ .performAction("4711", "unparsed action 1");
+ doThrow(new IOException("injected exception 3"))
+ .when(its)
+ .performAction("4711", "unparsed action 3");
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
assertLogThrowableMessageContains("injected exception 1");
assertLogThrowableMessageContains("injected exception 3");
+
+ verify(its).performAction("4711", "unparsed action 2");
}
public void testAddCommentDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("add-comment");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("add-comment");
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- AddComment addComment = createMock(AddComment.class);
- expect(addCommentFactory.create()).andReturn(addComment);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- addComment.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
+ AddComment addComment = mock(AddComment.class);
+ when(addCommentFactory.create()).thenReturn(addComment);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(addComment).execute(its, "4711", actionRequest, properties);
}
public void testAddSoyCommentDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("add-soy-comment");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("add-soy-comment");
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- AddSoyComment addSoyComment = createMock(AddSoyComment.class);
- expect(addSoyCommentFactory.create()).andReturn(addSoyComment);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- addSoyComment.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
+ AddSoyComment addSoyComment = mock(AddSoyComment.class);
+ when(addSoyCommentFactory.create()).thenReturn(addSoyComment);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(addSoyComment).execute(its, "4711", actionRequest, properties);
}
public void testAddStandardCommentDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("add-standard-comment");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("add-standard-comment");
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- AddStandardComment addStandardComment = createMock(AddStandardComment.class);
- expect(addStandardCommentFactory.create()).andReturn(addStandardComment);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- addStandardComment.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
+ AddStandardComment addStandardComment = mock(AddStandardComment.class);
+ when(addStandardCommentFactory.create()).thenReturn(addStandardComment);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(addStandardComment).execute(its, "4711", actionRequest, properties);
}
public void testLogEventDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("log-event");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("log-event");
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- LogEvent logEvent = createMock(LogEvent.class);
- expect(logEventFactory.create()).andReturn(logEvent);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- logEvent.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
+ LogEvent logEvent = mock(LogEvent.class);
+ when(logEventFactory.create()).thenReturn(logEvent);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(logEvent).execute(its, "4711", actionRequest, properties);
}
public void testCreateVersionFromPropertyDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("create-version-from-property");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("create-version-from-property");
- CreateVersionFromProperty createVersionFromProperty =
- createMock(CreateVersionFromProperty.class);
- expect(createVersionFromPropertyFactory.create()).andReturn(createVersionFromProperty);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- createVersionFromProperty.execute(its, "itsTestProject", actionRequest, projectProperties);
-
- replayMocks();
+ CreateVersionFromProperty createVersionFromProperty = mock(CreateVersionFromProperty.class);
+ when(createVersionFromPropertyFactory.create()).thenReturn(createVersionFromProperty);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnProject(Collections.singleton(actionRequest), projectProperties);
+
+ verify(createVersionFromProperty)
+ .execute(its, "itsTestProject", actionRequest, projectProperties);
}
public void testAddPropertyToFieldDelegation() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn("add-property-to-field");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn("add-property-to-field");
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- AddPropertyToField addPropertyToField = createMock(AddPropertyToField.class);
- expect(addPropertyToFieldFactory.create()).andReturn(addPropertyToField);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
-
- addPropertyToField.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
+ AddPropertyToField addPropertyToField = mock(AddPropertyToField.class);
+ when(addPropertyToFieldFactory.create()).thenReturn(addPropertyToField);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(addPropertyToField).execute(its, "4711", actionRequest, properties);
}
public void testExecuteIssueCustomAction() throws IOException {
- expect(customAction.getType()).andReturn(ActionType.ISSUE);
+ when(customAction.getType()).thenReturn(ActionType.ISSUE);
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn(CUSTOM_ACTION_NAME);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn(CUSTOM_ACTION_NAME);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- customAction.execute(its, "4711", actionRequest, properties);
-
- replayMocks();
-
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnIssue(actionRequests, properties);
+
+ verify(customAction).execute(its, "4711", actionRequest, properties);
}
public void testExecuteProjectCustomAction() throws IOException {
- expect(customAction.getType()).andReturn(ActionType.PROJECT);
+ when(customAction.getType()).thenReturn(ActionType.PROJECT);
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getName()).andReturn(CUSTOM_ACTION_NAME);
- expect(itsFacadeFactory.getFacade(new Project.NameKey(properties.get("project"))))
- .andReturn(its);
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getName()).thenReturn(CUSTOM_ACTION_NAME);
+ when(itsFacadeFactory.getFacade(Project.nameKey(properties.get("project")))).thenReturn(its);
Set<ActionRequest> actionRequests = ImmutableSet.of(actionRequest);
- customAction.execute(its, "itsTestProject", actionRequest, projectProperties);
-
- replayMocks();
-
ActionExecutor actionExecutor = createActionExecutor();
actionExecutor.executeOnProject(actionRequests, projectProperties);
+
+ verify(customAction).execute(its, "itsTestProject", actionRequest, projectProperties);
}
private ActionExecutor createActionExecutor() {
@@ -312,32 +280,32 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(its);
- addCommentFactory = createMock(AddComment.Factory.class);
+ addCommentFactory = mock(AddComment.Factory.class);
bind(AddComment.Factory.class).toInstance(addCommentFactory);
- addSoyCommentFactory = createMock(AddSoyComment.Factory.class);
+ addSoyCommentFactory = mock(AddSoyComment.Factory.class);
bind(AddSoyComment.Factory.class).toInstance(addSoyCommentFactory);
- addStandardCommentFactory = createMock(AddStandardComment.Factory.class);
+ addStandardCommentFactory = mock(AddStandardComment.Factory.class);
bind(AddStandardComment.Factory.class).toInstance(addStandardCommentFactory);
- logEventFactory = createMock(LogEvent.Factory.class);
+ logEventFactory = mock(LogEvent.Factory.class);
bind(LogEvent.Factory.class).toInstance(logEventFactory);
- itsFacadeFactory = createMock(ItsFacadeFactory.class);
+ itsFacadeFactory = mock(ItsFacadeFactory.class);
bind(ItsFacadeFactory.class).toInstance(itsFacadeFactory);
- addPropertyToFieldFactory = createMock(AddPropertyToField.Factory.class);
+ addPropertyToFieldFactory = mock(AddPropertyToField.Factory.class);
bind(AddPropertyToField.Factory.class).toInstance(addPropertyToFieldFactory);
- createVersionFromPropertyFactory = createMock(CreateVersionFromProperty.Factory.class);
+ createVersionFromPropertyFactory = mock(CreateVersionFromProperty.Factory.class);
bind(CreateVersionFromProperty.Factory.class).toInstance(createVersionFromPropertyFactory);
DynamicMap.mapOf(binder(), CustomAction.class);
- customAction = createMock(CustomAction.class);
+ customAction = mock(CustomAction.class);
bind(CustomAction.class)
.annotatedWith(Exports.named(CUSTOM_ACTION_NAME))
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionRequestTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionRequestTest.java
index e6de999..ac927f4 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionRequestTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionRequestTest.java
@@ -23,135 +23,97 @@
private Injector injector;
public void testUnparsedParameterless() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action");
assertEquals("Unparsed string does not match", "action", actionRequest.getUnparsed());
}
public void testUnparsedNull() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest(null);
assertEquals("Unparsed string does not match", "", actionRequest.getUnparsed());
}
public void testUnparsedSingleParameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param");
assertEquals("Unparsed string does not match", "action param", actionRequest.getUnparsed());
}
public void testUnparsedMultipleParameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2");
assertEquals(
"Unparsed string does not match", "action param1 param2", actionRequest.getUnparsed());
}
public void testNameParameterless() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action");
assertEquals("Unparsed string does not match", "action", actionRequest.getName());
}
public void testNameSingleParameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param");
assertEquals("Unparsed string does not match", "action", actionRequest.getName());
}
public void testNameMultipleParameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2");
assertEquals("Unparsed string does not match", "action", actionRequest.getName());
}
public void testNameNull() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest(null);
assertEquals("Unparsed string does not match", "", actionRequest.getName());
}
public void testParameter1Parameterless() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action");
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(1));
}
public void testParameter1Null() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest(null);
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(1));
}
public void testParameter1SingleParameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param");
assertEquals("Unparsed string does not match", "param", actionRequest.getParameter(1));
}
public void testParemeter1MultipleParameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2");
assertEquals("Unparsed string does not match", "param1", actionRequest.getParameter(1));
}
public void testParameter3Parameterless() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action");
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(3));
}
public void testParameter3Null() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest(null);
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(3));
}
public void testParameter3SingleParameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param");
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(3));
}
public void testParemeter3With2Parameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2");
assertEquals("Unparsed string does not match", "", actionRequest.getParameter(3));
}
public void testParemeter3With3Parameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2 " + "param3");
assertEquals("Unparsed string does not match", "param3", actionRequest.getParameter(3));
}
public void testParemeter3With4Parameters() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2 " + "param3 param4");
assertEquals("Unparsed string does not match", "param3", actionRequest.getParameter(3));
}
public void testParametersParameterless() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action");
String[] expected = new String[0];
@@ -162,8 +124,6 @@
}
public void testParametersNull() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest(null);
String[] expected = new String[0];
@@ -174,8 +134,6 @@
}
public void testParametersSingleParameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param");
String[] expected = new String[] {"param"};
@@ -186,8 +144,6 @@
}
public void testParameters3Parameter() {
- replayMocks();
-
ActionRequest actionRequest = createActionRequest("action param1 param2 " + "param3");
String[] expected = new String[] {"param1", "param2", "param3"};
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddCommentTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddCommentTest.java
index 149dfca..87fc762 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddCommentTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddCommentTest.java
@@ -13,7 +13,9 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.google.gerrit.extensions.config.FactoryModule;
@@ -29,25 +31,21 @@
private ItsFacade its;
public void testEmpty() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {});
AddComment addComment = createAddComment();
addComment.execute(null, "4711", actionRequest, ImmutableMap.of());
}
public void testPlain() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {"Some", "test", "comment"});
-
- its.addComment("4711", "Some test comment");
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {"Some", "test", "comment"});
AddComment addComment = createAddComment();
addComment.execute(its, "4711", actionRequest, ImmutableMap.of());
+
+ verify(its).addComment("4711", "Some test comment");
}
private AddComment createAddComment() {
@@ -63,7 +61,7 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(its);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractorTest.java
index fb047f7..a760936 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldParametersExtractorTest.java
@@ -14,16 +14,18 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static com.google.common.truth.Truth8.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.googlesource.gerrit.plugins.its.base.testutil.MockingTestCase;
import java.util.Collections;
import java.util.Optional;
+import junit.framework.TestCase;
-public class AddPropertyToFieldParametersExtractorTest extends MockingTestCase {
+public class AddPropertyToFieldParametersExtractorTest extends TestCase {
private static final String FIELD_ID = "fieldId";
private static final String PROPERTY_ID = "propertyId";
@@ -53,52 +55,40 @@
}
private void testWrongNumberOfReceivedParameters(String[] parameters) {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(parameters);
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(parameters);
assertFalse(extractor.extract(actionRequest, Collections.emptyMap()).isPresent());
}
public void testBlankFieldId() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {PROPERTY_ID, ""});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {PROPERTY_ID, ""});
assertFalse(extractor.extract(actionRequest, Collections.emptyMap()).isPresent());
}
public void testBlankPropertyId() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {"", FIELD_ID});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {"", FIELD_ID});
assertFalse(extractor.extract(actionRequest, Collections.emptyMap()).isPresent());
}
public void testUnknownPropertyId() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {FIELD_ID, PROPERTY_ID});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {FIELD_ID, PROPERTY_ID});
assertFalse(extractor.extract(actionRequest, Collections.emptyMap()).isPresent());
}
public void testHappyPath() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {PROPERTY_ID, FIELD_ID});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {PROPERTY_ID, FIELD_ID});
Optional<AddPropertyToFieldParameters> extractedParameters =
extractor.extract(actionRequest, Collections.singletonMap(PROPERTY_ID, PROPERTY_VALUE));
- if (!extractedParameters.isPresent()) {
- fail();
- }
+ assertThat(extractedParameters).isPresent();
assertEquals(PROPERTY_VALUE, extractedParameters.get().getPropertyValue());
assertEquals(FIELD_ID, extractedParameters.get().getFieldId());
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldTest.java
index a601b04..0f05875 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddPropertyToFieldTest.java
@@ -14,20 +14,21 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
-import com.googlesource.gerrit.plugins.its.base.testutil.MockingTestCase;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
-import org.easymock.EasyMock;
+import junit.framework.TestCase;
-public class AddPropertyToFieldTest extends MockingTestCase {
+public class AddPropertyToFieldTest extends TestCase {
private static final String ISSUE_ID = "4711";
private static final String FIELD_ID = "fieldId";
@@ -47,28 +48,25 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- parametersExtractor = createMock(AddPropertyToFieldParametersExtractor.class);
+ parametersExtractor = mock(AddPropertyToFieldParametersExtractor.class);
bind(AddPropertyToFieldParametersExtractor.class).toInstance(parametersExtractor);
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(its);
}
}
public void testHappyPath() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = Collections.singletonMap(PROPERTY_ID, PROPERTY_VALUE);
- expect(parametersExtractor.extract(actionRequest, properties))
- .andReturn(Optional.of(new AddPropertyToFieldParameters(PROPERTY_VALUE, FIELD_ID)));
-
- its.addValueToField(ISSUE_ID, PROPERTY_VALUE, FIELD_ID);
- EasyMock.expectLastCall().once();
-
- replayMocks();
+ when(parametersExtractor.extract(actionRequest, properties))
+ .thenReturn(Optional.of(new AddPropertyToFieldParameters(PROPERTY_VALUE, FIELD_ID)));
AddPropertyToField addPropertyToField = createAddPropertyToField();
addPropertyToField.execute(its, ISSUE_ID, actionRequest, properties);
+
+ verify(its).addValueToField(ISSUE_ID, PROPERTY_VALUE, FIELD_ID);
}
private AddPropertyToField createAddPropertyToField() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyCommentTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyCommentTest.java
new file mode 100644
index 0000000..8b9e974
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddSoyCommentTest.java
@@ -0,0 +1,196 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// 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 com.googlesource.gerrit.plugins.its.base.workflow;
+
+import static com.google.gerrit.testing.GerritJUnit.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.gerrit.extensions.config.FactoryModule;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.ProvisionException;
+import com.googlesource.gerrit.plugins.its.base.ItsPath;
+import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
+import com.googlesource.gerrit.plugins.its.base.testutil.LoggingMockingTestCase;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.UUID;
+import org.eclipse.jgit.util.FileUtils;
+import org.junit.Test;
+
+public class AddSoyCommentTest extends LoggingMockingTestCase {
+ private Injector injector;
+
+ private ItsFacade its;
+ private boolean cleanupSitePath;
+ private Path itsPath;
+
+ @Test
+ public void testNoTemplateFileParameter() throws IOException {
+ ActionRequest actionRequest = new ActionRequest("foo");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, ImmutableMap.of());
+
+ assertLogMessageContains("No template");
+ }
+
+ @Test
+ public void testTemplateFileDoesNotExist() {
+ ActionRequest actionRequest = new ActionRequest("foo nonExistingTemplate");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+
+ assertThrows(
+ ProvisionException.class,
+ () -> addSoyComment.execute(its, "4711", actionRequest, ImmutableMap.of()));
+ }
+
+ @Test
+ public void testPlain() throws IOException {
+ String templateName = "plain";
+
+ ActionRequest actionRequest = new ActionRequest("foo " + templateName);
+
+ injectTemplate(templateName, "bar");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, ImmutableMap.of());
+
+ verify(its).addComment("4711", "bar");
+ }
+
+ @Test
+ public void testParameterPlain() throws IOException {
+ String templateName = "parameterPlain";
+
+ ActionRequest actionRequest = new ActionRequest("foo " + templateName);
+ Map<String, String> properties =
+ ImmutableMap.<String, String>builder().put("param1", "simple").build();
+
+ injectTemplate(templateName, "{@param param1:string}{$param1}");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, properties);
+
+ verify(its).addComment("4711", "simple");
+ }
+
+ @Test
+ public void testParameterEscapingDefault() throws IOException {
+ String templateName = "parameterEscapingDefault";
+
+ ActionRequest actionRequest = new ActionRequest("foo " + templateName);
+ Map<String, String> properties =
+ ImmutableMap.<String, String>builder().put("param1", "<b>bar\"/>").build();
+
+ injectTemplate(templateName, "{@param param1:string}{$param1}");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, properties);
+
+ verify(its).addComment("4711", "<b>bar"/>");
+ }
+
+ @Test
+ public void testParameterEscapingTextUnescaped() throws IOException {
+ String templateName = "parameterEscapingTextUnescaped";
+
+ ActionRequest actionRequest = new ActionRequest("foo " + templateName);
+ Map<String, String> properties =
+ ImmutableMap.<String, String>builder().put("param1", "<b>bar\"/>").build();
+
+ injectTemplate(templateName, "text", "{@param param1:string}{$param1}");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, properties);
+
+ verify(its).addComment("4711", "<b>bar\"/>");
+ }
+
+ @Test
+ public void testParameterEscapingTextForcedEscapingUri() throws IOException {
+ String templateName = "parameterEscapingTextForcedEscapingUri";
+
+ ActionRequest actionRequest = new ActionRequest("foo " + templateName);
+ Map<String, String> properties =
+ ImmutableMap.<String, String>builder().put("param1", "<b>bar\"/>").build();
+
+ injectTemplate(templateName, "text", "{@param param1:string}{$param1|escapeUri}");
+
+ AddSoyComment addSoyComment = createAddSoyComment();
+ addSoyComment.execute(its, "4711", actionRequest, properties);
+
+ verify(its).addComment("4711", "%3Cb%3Ebar%22%2F%3E");
+ }
+
+ private AddSoyComment createAddSoyComment() {
+ return injector.getInstance(AddSoyComment.class);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ cleanupSitePath = false;
+ injector = Guice.createInjector(new TestModule());
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ if (cleanupSitePath) {
+ if (Files.exists(itsPath)) {
+ FileUtils.delete(itsPath.toFile(), FileUtils.RECURSIVE);
+ }
+ }
+ super.tearDown();
+ }
+
+ private void injectTemplate(String name, String content) throws IOException {
+ injectTemplate(name, null, content);
+ }
+
+ private void injectTemplate(String name, String kind, String content) throws IOException {
+ Path templatePath = itsPath.resolve("templates").resolve(name + ".soy");
+ Files.createDirectories(templatePath.getParent());
+ String namespace = "{namespace etc.its.templates}";
+ String opening = "{template ." + name + (kind != null ? (" kind=\"" + kind + "\"") : "") + "}";
+ String closing = "{/template}";
+
+ String fullTemplate = namespace + opening + content + closing;
+
+ Files.write(templatePath, fullTemplate.getBytes());
+ }
+
+ private Path randomTargetPath() {
+ return Paths.get("target", "random_name_" + UUID.randomUUID().toString().replaceAll("-", "_"));
+ }
+
+ private class TestModule extends FactoryModule {
+ @Override
+ protected void configure() {
+ its = mock(ItsFacade.class);
+ bind(ItsFacade.class).toInstance(its);
+
+ itsPath = randomTargetPath().resolve("etc").resolve("its");
+ assertFalse("itsPath (" + itsPath + ") already exists", Files.exists(itsPath));
+ cleanupSitePath = true;
+ bind(Path.class).annotatedWith(ItsPath.class).toInstance(itsPath);
+ }
+ }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddStandardCommentTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddStandardCommentTest.java
index d695bd1..ab11820 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddStandardCommentTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/AddStandardCommentTest.java
@@ -13,6 +13,9 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
import com.google.common.collect.ImmutableMap;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.inject.Guice;
@@ -28,19 +31,18 @@
private ItsFacade its;
public void testChangeMergedPlain() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of("event-type", "change-merged");
- its.addComment("42", "Change merged");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "42", actionRequest, properties);
+
+ verify(its).addComment("42", "Change merged");
}
public void testChangeMergedFull() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties =
ImmutableMap.<String, String>builder()
@@ -51,32 +53,31 @@
.put("formatChangeUrl", "HtTp://ExAmPlE.OrG/ChAnGe")
.build();
- its.addComment(
- "176",
- "Change 4711 merged by John Doe:\n"
- + "Test-Change-Subject\n"
- + "\n"
- + "HtTp://ExAmPlE.OrG/ChAnGe");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "176", actionRequest, properties);
+
+ verify(its)
+ .addComment(
+ "176",
+ "Change 4711 merged by John Doe:\n"
+ + "Test-Change-Subject\n"
+ + "\n"
+ + "HtTp://ExAmPlE.OrG/ChAnGe");
}
public void testChangeAbandonedPlain() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of("event-type", "change-abandoned");
- its.addComment("42", "Change abandoned");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "42", actionRequest, properties);
+
+ verify(its).addComment("42", "Change abandoned");
}
public void testChangeAbandonedFull() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties =
ImmutableMap.<String, String>builder()
@@ -88,35 +89,34 @@
.put("formatChangeUrl", "HtTp://ExAmPlE.OrG/ChAnGe")
.build();
- its.addComment(
- "176",
- "Change 4711 abandoned by John Doe:\n"
- + "Test-Change-Subject\n"
- + "\n"
- + "Reason:\n"
- + "Test-Reason\n"
- + "\n"
- + "HtTp://ExAmPlE.OrG/ChAnGe");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "176", actionRequest, properties);
+
+ verify(its)
+ .addComment(
+ "176",
+ "Change 4711 abandoned by John Doe:\n"
+ + "Test-Change-Subject\n"
+ + "\n"
+ + "Reason:\n"
+ + "Test-Reason\n"
+ + "\n"
+ + "HtTp://ExAmPlE.OrG/ChAnGe");
}
public void testChangeRestoredPlain() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of("event-type", "change-restored");
- its.addComment("42", "Change restored");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "42", actionRequest, properties);
+
+ verify(its).addComment("42", "Change restored");
}
public void testChangeRestoredFull() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties =
ImmutableMap.<String, String>builder()
@@ -128,35 +128,34 @@
.put("formatChangeUrl", "HtTp://ExAmPlE.OrG/ChAnGe")
.build();
- its.addComment(
- "176",
- "Change 4711 restored by John Doe:\n"
- + "Test-Change-Subject\n"
- + "\n"
- + "Reason:\n"
- + "Test-Reason\n"
- + "\n"
- + "HtTp://ExAmPlE.OrG/ChAnGe");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "176", actionRequest, properties);
+
+ verify(its)
+ .addComment(
+ "176",
+ "Change 4711 restored by John Doe:\n"
+ + "Test-Change-Subject\n"
+ + "\n"
+ + "Reason:\n"
+ + "Test-Reason\n"
+ + "\n"
+ + "HtTp://ExAmPlE.OrG/ChAnGe");
}
public void testPatchSetCreatedPlain() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of("event-type", "patchset-created");
- its.addComment("42", "Change had a related patch set uploaded");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "42", actionRequest, properties);
+
+ verify(its).addComment("42", "Change had a related patch set uploaded");
}
public void testPatchSetCreatedFull() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties =
ImmutableMap.<String, String>builder()
@@ -167,17 +166,17 @@
.put("formatChangeUrl", "HtTp://ExAmPlE.OrG/ChAnGe")
.build();
- its.addComment(
- "176",
- "Change 4711 had a related patch set uploaded by "
- + "John Doe:\n"
- + "Test-Change-Subject\n"
- + "\n"
- + "HtTp://ExAmPlE.OrG/ChAnGe");
- replayMocks();
-
StandardAction action = injector.getInstance(AddStandardComment.class);
action.execute(its, "176", actionRequest, properties);
+
+ verify(its)
+ .addComment(
+ "176",
+ "Change 4711 had a related patch set uploaded by "
+ + "John Doe:\n"
+ + "Test-Change-Subject\n"
+ + "\n"
+ + "HtTp://ExAmPlE.OrG/ChAnGe");
}
@Override
@@ -190,7 +189,7 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(its);
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ConditionTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ConditionTest.java
index 3df38cc..b31b3e2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ConditionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ConditionTest.java
@@ -33,8 +33,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "testValue");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -43,8 +41,6 @@
Map<String, String> properties = ImmutableMap.of();
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -53,8 +49,6 @@
Map<String, String> properties = ImmutableMap.of("otherKey", "testValue");
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -63,8 +57,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "otherValue");
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -73,8 +65,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value2");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -83,8 +73,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1 value3");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -93,8 +81,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1 value3");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -103,8 +89,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1 value2 value3");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -113,8 +97,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "otherValue1 value2 otherValue3");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -123,8 +105,6 @@
Map<String, String> properties = ImmutableMap.of();
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -133,8 +113,6 @@
Map<String, String> properties = ImmutableMap.of("otherKey", "testValue");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -143,8 +121,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "otherValue");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -153,8 +129,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "otherValue");
- replayMocks();
-
assertTrue("isMetBy gave false", condition.isMetBy(properties));
}
@@ -163,8 +137,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1");
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -173,8 +145,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1 value3");
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -183,8 +153,6 @@
Map<String, String> properties = ImmutableMap.of("testKey", "value1 value2 value3");
- replayMocks();
-
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
@@ -192,7 +160,6 @@
Condition condition = createCondition("testKey", "!,value1,value2,value3");
Map<String, String> properties = ImmutableMap.of("testKey", "otherValue1 value2 otherValue3");
- replayMocks();
assertFalse("isMetBy gave true", condition.isMetBy(properties));
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractorTest.java
index 82b33e7..881fd6c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyParametersExtractorTest.java
@@ -1,17 +1,18 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static com.google.common.truth.Truth8.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.googlesource.gerrit.plugins.its.base.testutil.MockingTestCase;
import java.util.Collections;
import java.util.Optional;
+import junit.framework.TestCase;
-public class CreateVersionFromPropertyParametersExtractorTest extends MockingTestCase {
+public class CreateVersionFromPropertyParametersExtractorTest extends TestCase {
- private static final String ITS_PROJECT = "test-project";
private static final String PROPERTY_ID = "propertyId";
private static final String PROPERTY_VALUE = "propertyValue";
@@ -35,10 +36,8 @@
}
private void testWrongNumberOfReceivedParameters(String[] parameters) {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(parameters);
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(parameters);
Optional<CreateVersionFromPropertyParameters> extractedParameters =
extractor.extract(actionRequest, Collections.emptyMap());
@@ -46,10 +45,8 @@
}
public void testBlankPropertyId() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {""});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {""});
Optional<CreateVersionFromPropertyParameters> extractedParameters =
extractor.extract(actionRequest, Collections.emptyMap());
@@ -57,10 +54,8 @@
}
public void testUnknownPropertyId() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {PROPERTY_ID});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {PROPERTY_ID});
Optional<CreateVersionFromPropertyParameters> extractedParameters =
extractor.extract(actionRequest, Collections.emptyMap());
@@ -68,16 +63,12 @@
}
public void testHappyPath() {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameters()).andReturn(new String[] {PROPERTY_ID});
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameters()).thenReturn(new String[] {PROPERTY_ID});
Optional<CreateVersionFromPropertyParameters> extractedParameters =
extractor.extract(actionRequest, Collections.singletonMap(PROPERTY_ID, PROPERTY_VALUE));
- if (!extractedParameters.isPresent()) {
- fail();
- }
+ assertThat(extractedParameters).isPresent();
assertEquals(PROPERTY_VALUE, extractedParameters.get().getPropertyValue());
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyTest.java
index a89509c..7f3e2e0 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/CreateVersionFromPropertyTest.java
@@ -14,23 +14,23 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.googlesource.gerrit.plugins.its.base.its.ItsFacade;
-import com.googlesource.gerrit.plugins.its.base.testutil.MockingTestCase;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
-import org.easymock.EasyMock;
+import junit.framework.TestCase;
-public class CreateVersionFromPropertyTest extends MockingTestCase {
+public class CreateVersionFromPropertyTest extends TestCase {
private static final String ITS_PROJECT = "test-project";
- private static final String PROPERTY_ID = "propertyId";
private static final String PROPERTY_VALUE = "propertyValue";
private Injector injector;
@@ -46,28 +46,25 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
bind(ItsFacade.class).toInstance(its);
- parametersExtractor = createMock(CreateVersionFromPropertyParametersExtractor.class);
+ parametersExtractor = mock(CreateVersionFromPropertyParametersExtractor.class);
bind(CreateVersionFromPropertyParametersExtractor.class).toInstance(parametersExtractor);
}
}
public void testHappyPath() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
+ ActionRequest actionRequest = mock(ActionRequest.class);
Map<String, String> properties = Collections.emptyMap();
- expect(parametersExtractor.extract(actionRequest, properties))
- .andReturn(Optional.of(new CreateVersionFromPropertyParameters(PROPERTY_VALUE)));
-
- its.createVersion(ITS_PROJECT, PROPERTY_VALUE);
- EasyMock.expectLastCall().once();
-
- replayMocks();
+ when(parametersExtractor.extract(actionRequest, properties))
+ .thenReturn(Optional.of(new CreateVersionFromPropertyParameters(PROPERTY_VALUE)));
CreateVersionFromProperty createVersionFromProperty = createCreateVersionFromProperty();
createVersionFromProperty.execute(its, ITS_PROJECT, actionRequest, properties);
+
+ verify(its).createVersion(ITS_PROJECT, PROPERTY_VALUE);
}
private CreateVersionFromProperty createCreateVersionFromProperty() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheTest.java
index 3b33b41..6b83097 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/ItsRulesProjectCacheTest.java
@@ -16,13 +16,14 @@
import static com.googlesource.gerrit.plugins.its.base.workflow.RulesConfigReader.ACTION_KEY;
import static com.googlesource.gerrit.plugins.its.base.workflow.RulesConfigReader.RULE_SECTION;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
+import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.config.FactoryModule;
-import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectLevelConfig;
import com.google.gerrit.server.project.ProjectState;
@@ -41,10 +42,10 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- rulesConfigReader = createMock(RulesConfigReader.class);
+ rulesConfigReader = mock(RulesConfigReader.class);
bind(RulesConfigReader.class).toInstance(rulesConfigReader);
- projectCache = createMock(ProjectCache.class);
+ projectCache = mock(ProjectCache.class);
bind(ProjectCache.class).toInstance(projectCache);
bind(String.class)
@@ -79,22 +80,20 @@
rule1.addActionRequest(action1);
rule1.addCondition(condition1);
- ProjectState projectState = createMock(ProjectState.class);
- ProjectLevelConfig projectLevelConfigGlobal = createMock(ProjectLevelConfig.class);
+ ProjectState projectState = mock(ProjectState.class);
+ ProjectLevelConfig projectLevelConfigGlobal = mock(ProjectLevelConfig.class);
Config projectGlobalCfg = new Config();
projectGlobalCfg.setString(RULE_SECTION, RULE_1, CONDITION_KEY, VALUE_1);
projectGlobalCfg.setString(RULE_SECTION, RULE_1, ACTION_KEY, ACTION_1);
- expect(projectLevelConfigGlobal.get()).andReturn(projectGlobalCfg);
- expect(projectState.getConfig(RuleBaseKind.GLOBAL.fileName))
- .andReturn(projectLevelConfigGlobal);
- ProjectLevelConfig projectLevelConfigPlugin = createMock(ProjectLevelConfig.class);
- expect(projectLevelConfigPlugin.get()).andReturn(new Config());
- expect(projectState.getConfig(RuleBaseKind.ITS.fileName)).andReturn(projectLevelConfigPlugin);
- expect(projectCache.checkedGet(new Project.NameKey(TEST_PROJECT))).andReturn(projectState);
- expect(rulesConfigReader.getRulesFromConfig(isA(Config.class)))
- .andReturn(ImmutableList.of(rule1))
- .andReturn(ImmutableList.of());
- replayMocks();
+ when(projectLevelConfigGlobal.get()).thenReturn(projectGlobalCfg);
+ when(projectState.getConfig(RuleBaseKind.GLOBAL.fileName)).thenReturn(projectLevelConfigGlobal);
+ ProjectLevelConfig projectLevelConfigPlugin = mock(ProjectLevelConfig.class);
+ when(projectLevelConfigPlugin.get()).thenReturn(new Config());
+ when(projectState.getConfig(RuleBaseKind.ITS.fileName)).thenReturn(projectLevelConfigPlugin);
+ when(projectCache.checkedGet(Project.nameKey(TEST_PROJECT))).thenReturn(projectState);
+ when(rulesConfigReader.getRulesFromConfig(any(Config.class)))
+ .thenReturn(ImmutableList.of(rule1))
+ .thenReturn(ImmutableList.of());
ItsRulesProjectCacheImpl.Loader loader =
injector.getInstance(ItsRulesProjectCacheImpl.Loader.class);
@@ -112,37 +111,34 @@
rule1.addActionRequest(action1);
rule1.addCondition(condition1);
- ProjectState projectState = createMock(ProjectState.class);
- ProjectLevelConfig projectLevelConfigGlobal = createMock(ProjectLevelConfig.class);
- expect(projectLevelConfigGlobal.get()).andReturn(new Config());
- expect(projectState.getConfig(RuleBaseKind.GLOBAL.fileName))
- .andReturn(projectLevelConfigGlobal);
- ProjectLevelConfig projectLevelConfigPlugin = createMock(ProjectLevelConfig.class);
- expect(projectLevelConfigPlugin.get()).andReturn(new Config());
- expect(projectState.getConfig(RuleBaseKind.ITS.fileName)).andReturn(projectLevelConfigPlugin);
+ ProjectState projectState = mock(ProjectState.class);
+ ProjectLevelConfig projectLevelConfigGlobal = mock(ProjectLevelConfig.class);
+ when(projectLevelConfigGlobal.get()).thenReturn(new Config());
+ when(projectState.getConfig(RuleBaseKind.GLOBAL.fileName)).thenReturn(projectLevelConfigGlobal);
+ ProjectLevelConfig projectLevelConfigPlugin = mock(ProjectLevelConfig.class);
+ when(projectLevelConfigPlugin.get()).thenReturn(new Config());
+ when(projectState.getConfig(RuleBaseKind.ITS.fileName)).thenReturn(projectLevelConfigPlugin);
- ProjectState parentProjectState = createMock(ProjectState.class);
- ProjectLevelConfig parentProjectConfigGlobal = createMock(ProjectLevelConfig.class);
+ ProjectState parentProjectState = mock(ProjectState.class);
+ ProjectLevelConfig parentProjectConfigGlobal = mock(ProjectLevelConfig.class);
Config parentGlobalCfg = new Config();
parentGlobalCfg.setString(RULE_SECTION, RULE_1, CONDITION_KEY, VALUE_1);
parentGlobalCfg.setString(RULE_SECTION, RULE_1, ACTION_KEY, ACTION_1);
- expect(parentProjectConfigGlobal.get()).andReturn(parentGlobalCfg);
- expect(parentProjectState.getConfig(RuleBaseKind.GLOBAL.fileName))
- .andReturn(parentProjectConfigGlobal);
- ProjectLevelConfig parentProjectConfigPlugin = createMock(ProjectLevelConfig.class);
- expect(parentProjectConfigPlugin.get()).andReturn(new Config());
- expect(parentProjectState.getConfig(RuleBaseKind.ITS.fileName))
- .andReturn(parentProjectConfigPlugin);
- expect(projectState.parents()).andReturn(FluentIterable.of(parentProjectState));
- expect(projectCache.checkedGet(new Project.NameKey(TEST_PROJECT))).andReturn(projectState);
+ when(parentProjectConfigGlobal.get()).thenReturn(parentGlobalCfg);
+ when(parentProjectState.getConfig(RuleBaseKind.GLOBAL.fileName))
+ .thenReturn(parentProjectConfigGlobal);
+ ProjectLevelConfig parentProjectConfigPlugin = mock(ProjectLevelConfig.class);
+ when(parentProjectConfigPlugin.get()).thenReturn(new Config());
+ when(parentProjectState.getConfig(RuleBaseKind.ITS.fileName))
+ .thenReturn(parentProjectConfigPlugin);
+ when(projectState.parents()).thenReturn(FluentIterable.of(parentProjectState));
+ when(projectCache.checkedGet(Project.nameKey(TEST_PROJECT))).thenReturn(projectState);
- expect(rulesConfigReader.getRulesFromConfig(isA(Config.class)))
- .andReturn(ImmutableList.of())
- .andReturn(ImmutableList.of())
- .andReturn(ImmutableList.of(rule1))
- .andReturn(ImmutableList.of());
-
- replayMocks();
+ when(rulesConfigReader.getRulesFromConfig(any(Config.class)))
+ .thenReturn(ImmutableList.of())
+ .thenReturn(ImmutableList.of())
+ .thenReturn(ImmutableList.of(rule1))
+ .thenReturn(ImmutableList.of());
ItsRulesProjectCacheImpl.Loader loader =
injector.getInstance(ItsRulesProjectCacheImpl.Loader.class);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEventTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEventTest.java
index 0a26db8..5f82eae 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEventTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/LogEventTest.java
@@ -13,7 +13,8 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.google.gerrit.extensions.config.FactoryModule;
@@ -30,33 +31,27 @@
private ItsFacade its;
public void testNull() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn(null);
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn(null);
LogEvent logEvent = createLogEvent();
logEvent.execute(null, "4711", actionRequest, ImmutableMap.of());
}
public void testEmpty() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("");
-
- replayMocks();
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("");
LogEvent logEvent = createLogEvent();
logEvent.execute(null, "4711", actionRequest, ImmutableMap.of());
}
public void testLevelDefault() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("");
Map<String, String> properties = ImmutableMap.of("KeyA", "ValueA");
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -64,13 +59,11 @@
}
public void testLevelError() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("error");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("error");
Map<String, String> properties = ImmutableMap.of("KeyA", "ValueA");
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -78,13 +71,11 @@
}
public void testLevelWarn() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("warn");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("warn");
Map<String, String> properties = ImmutableMap.of("KeyA", "ValueA");
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -92,13 +83,11 @@
}
public void testLevelInfo() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("info");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("info");
Map<String, String> properties = ImmutableMap.of("KeyA", "ValueA");
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -106,13 +95,11 @@
}
public void testLevelDebug() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("debug");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("debug");
Map<String, String> properties = ImmutableMap.of("KeyA", "ValueA");
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -120,8 +107,8 @@
}
public void testMultipleProperties() throws IOException {
- ActionRequest actionRequest = createMock(ActionRequest.class);
- expect(actionRequest.getParameter(1)).andReturn("info");
+ ActionRequest actionRequest = mock(ActionRequest.class);
+ when(actionRequest.getParameter(1)).thenReturn("info");
Map<String, String> properties =
ImmutableMap.<String, String>builder()
@@ -130,8 +117,6 @@
.put("KeyC", "ValueC")
.build();
- replayMocks();
-
LogEvent logEvent = createLogEvent();
logEvent.execute(its, "4711", actionRequest, properties);
@@ -153,7 +138,7 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- its = createMock(ItsFacade.class);
+ its = mock(ItsFacade.class);
}
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBaseTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBaseTest.java
index 305e8d1..717886c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBaseTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleBaseTest.java
@@ -14,8 +14,9 @@
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -66,22 +67,20 @@
String rules = "[rule \"rule1\"]\n\taction = action1\n";
injectRuleBase(rules);
- Rule rule1 = createMock(Rule.class);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ Rule rule1 = mock(Rule.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of(PROJECT_KEY, TEST_PROJECT);
List<ActionRequest> rule1Match = Lists.newArrayListWithCapacity(1);
rule1Match.add(actionRequest1);
- expect(rule1.actionRequestsFor(properties)).andReturn(rule1Match);
+ when(rule1.actionRequestsFor(properties)).thenReturn(rule1Match);
- expect(rulesConfigReader.getRulesFromConfig(isA(Config.class)))
- .andReturn(ImmutableList.of(rule1))
- .once();
+ when(rulesConfigReader.getRulesFromConfig(any(Config.class)))
+ .thenReturn(ImmutableList.of(rule1))
+ .thenThrow(new UnsupportedOperationException("Method called more than once"));
- expect(rulesProjectCache.get(TEST_PROJECT)).andReturn(ImmutableList.of());
-
- replayMocks();
+ when(rulesProjectCache.get(TEST_PROJECT)).thenReturn(ImmutableList.of());
RuleBase ruleBase = createRuleBase();
Collection<ActionRequest> actual = ruleBase.actionRequestsFor(properties);
@@ -101,29 +100,26 @@
+ "[rule \"rule2\"]\n"
+ "\taction = action3\n");
- Rule rule1 = createMock(Rule.class);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
+ Rule rule1 = mock(Rule.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
- Rule rule2 = createMock(Rule.class);
- ActionRequest actionRequest3 = createMock(ActionRequest.class);
+ Rule rule2 = mock(Rule.class);
+ ActionRequest actionRequest3 = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of(PROJECT_KEY, TEST_PROJECT);
List<ActionRequest> rule1Match = ImmutableList.of(actionRequest1, actionRequest2);
- expect(rule1.actionRequestsFor(properties)).andReturn(rule1Match).anyTimes();
+ when(rule1.actionRequestsFor(properties)).thenReturn(rule1Match);
List<ActionRequest> rule2Match = ImmutableList.of(actionRequest3);
- expect(rule2.actionRequestsFor(properties)).andReturn(rule2Match).anyTimes();
+ when(rule2.actionRequestsFor(properties)).thenReturn(rule2Match);
- expect(rulesProjectCache.get(TEST_PROJECT)).andReturn(ImmutableList.of());
+ when(rulesProjectCache.get(TEST_PROJECT)).thenReturn(ImmutableList.of());
- expect(rulesConfigReader.getRulesFromConfig(isA(Config.class)))
- .andReturn(ImmutableList.of(rule1, rule2))
- .andReturn(ImmutableList.of())
- .anyTimes();
-
- replayMocks();
+ when(rulesConfigReader.getRulesFromConfig(any(Config.class)))
+ .thenReturn(ImmutableList.of(rule1, rule2))
+ .thenReturn(ImmutableList.of());
RuleBase ruleBase = createRuleBase();
Collection<ActionRequest> actual = ruleBase.actionRequestsFor(properties);
@@ -140,26 +136,23 @@
Map<String, String> properties = ImmutableMap.of(PROJECT_KEY, TEST_PROJECT);
- Rule rule2 = createMock(Rule.class);
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
+ Rule rule2 = mock(Rule.class);
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
List<ActionRequest> rule2Match = ImmutableList.of(actionRequest2);
- expect(rule2.actionRequestsFor(properties)).andReturn(rule2Match);
+ when(rule2.actionRequestsFor(properties)).thenReturn(rule2Match);
- Rule rule3 = createMock(Rule.class);
- ActionRequest actionRequest3 = createMock(ActionRequest.class);
+ Rule rule3 = mock(Rule.class);
+ ActionRequest actionRequest3 = mock(ActionRequest.class);
List<ActionRequest> rule3Match = ImmutableList.of(actionRequest3);
- expect(rule3.actionRequestsFor(properties)).andReturn(rule3Match);
+ when(rule3.actionRequestsFor(properties)).thenReturn(rule3Match);
- expect(rulesProjectCache.get(TEST_PROJECT)).andReturn(ImmutableList.of());
+ when(rulesProjectCache.get(TEST_PROJECT)).thenReturn(ImmutableList.of());
- expect(rulesConfigReader.getRulesFromConfig(isA(Config.class)))
- .andReturn(ImmutableList.of(rule2, rule3))
- .andReturn(ImmutableList.of())
- .anyTimes();
-
- replayMocks();
+ when(rulesConfigReader.getRulesFromConfig(any(Config.class)))
+ .thenReturn(ImmutableList.of(rule2, rule3))
+ .thenReturn(ImmutableList.of());
RuleBase ruleBase = createRuleBase();
@@ -171,17 +164,15 @@
}
public void testProjectConfigIsLoaded() {
- Rule rule1 = createMock(Rule.class);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ Rule rule1 = mock(Rule.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
Map<String, String> properties = ImmutableMap.of(PROJECT_KEY, TEST_PROJECT);
List<ActionRequest> rule1Match = ImmutableList.of(actionRequest1);
- expect(rule1.actionRequestsFor(properties)).andReturn(rule1Match);
+ when(rule1.actionRequestsFor(properties)).thenReturn(rule1Match);
- expect(rulesProjectCache.get(TEST_PROJECT)).andReturn(ImmutableList.of(rule1));
-
- replayMocks();
+ when(rulesProjectCache.get(TEST_PROJECT)).thenReturn(ImmutableList.of(rule1));
RuleBase ruleBase = createRuleBase();
Collection<ActionRequest> actual = ruleBase.actionRequestsFor(properties);
@@ -238,10 +229,10 @@
bind(Path.class).annotatedWith(ItsPath.class).toInstance(itsPath);
- rulesConfigReader = createMock(RulesConfigReader.class);
+ rulesConfigReader = mock(RulesConfigReader.class);
bind(RulesConfigReader.class).toInstance(rulesConfigReader);
- rulesProjectCache = createMock(ItsRulesProjectCache.class);
+ rulesProjectCache = mock(ItsRulesProjectCache.class);
bind(ItsRulesProjectCache.class).toInstance(rulesProjectCache);
bind(String.class)
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleTest.java
index c106a81..91f5072 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RuleTest.java
@@ -13,7 +13,8 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.its.base.workflow;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
@@ -39,11 +40,9 @@
Rule rule = createRule("testRule");
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
rule.addActionRequest(actionRequest1);
- replayMocks();
-
Collection<ActionRequest> actual = rule.actionRequestsFor(properties);
Collection<ActionRequest> expected = Lists.newArrayListWithCapacity(1);
@@ -56,15 +55,13 @@
Rule rule = createRule("testRule");
- Condition condition1 = createMock(Condition.class);
- expect(condition1.isMetBy(properties)).andReturn(false).anyTimes();
+ Condition condition1 = mock(Condition.class);
+ when(condition1.isMetBy(properties)).thenReturn(false);
rule.addCondition(condition1);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
rule.addActionRequest(actionRequest1);
- replayMocks();
-
Collection<ActionRequest> actual = rule.actionRequestsFor(properties);
List<ActionRequest> expected = Collections.emptyList();
@@ -76,19 +73,17 @@
Rule rule = createRule("testRule");
- Condition condition1 = createMock(Condition.class);
- expect(condition1.isMetBy(properties)).andReturn(true).anyTimes();
+ Condition condition1 = mock(Condition.class);
+ when(condition1.isMetBy(properties)).thenReturn(true);
rule.addCondition(condition1);
- Condition condition2 = createMock(Condition.class);
- expect(condition2.isMetBy(properties)).andReturn(false).anyTimes();
+ Condition condition2 = mock(Condition.class);
+ when(condition2.isMetBy(properties)).thenReturn(false);
rule.addCondition(condition2);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
rule.addActionRequest(actionRequest1);
- replayMocks();
-
Collection<ActionRequest> actual = rule.actionRequestsFor(properties);
List<ActionRequest> expected = Collections.emptyList();
@@ -100,14 +95,12 @@
Rule rule = createRule("testRule");
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
rule.addActionRequest(actionRequest1);
- ActionRequest actionRequest2 = createMock(ActionRequest.class);
+ ActionRequest actionRequest2 = mock(ActionRequest.class);
rule.addActionRequest(actionRequest2);
- replayMocks();
-
Collection<ActionRequest> actual = rule.actionRequestsFor(properties);
List<ActionRequest> expected = Lists.newArrayListWithCapacity(1);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RulesConfigReaderTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RulesConfigReaderTest.java
index 96fb869..12535f2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RulesConfigReaderTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/workflow/RulesConfigReaderTest.java
@@ -16,7 +16,9 @@
import static com.googlesource.gerrit.plugins.its.base.workflow.RulesConfigReader.ACTION_KEY;
import static com.googlesource.gerrit.plugins.its.base.workflow.RulesConfigReader.RULE_SECTION;
-import static org.easymock.EasyMock.expect;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.extensions.config.FactoryModule;
@@ -31,13 +33,13 @@
private class TestModule extends FactoryModule {
@Override
protected void configure() {
- ruleFactory = createMock(Rule.Factory.class);
+ ruleFactory = mock(Rule.Factory.class);
bind(Rule.Factory.class).toInstance(ruleFactory);
- conditionFactory = createMock(Condition.Factory.class);
+ conditionFactory = mock(Condition.Factory.class);
bind(Condition.Factory.class).toInstance(conditionFactory);
- actionRequestFactory = createMock(ActionRequest.Factory.class);
+ actionRequestFactory = mock(ActionRequest.Factory.class);
bind(ActionRequest.Factory.class).toInstance(actionRequestFactory);
}
}
@@ -63,22 +65,21 @@
cfg.setString(RULE_SECTION, RULE_1, CONDITION_KEY, VALUE_1);
cfg.setString(RULE_SECTION, RULE_1, ACTION_KEY, ACTION_1);
- Rule rule1 = createMock(Rule.class);
- expect(ruleFactory.create(RULE_1)).andReturn(rule1);
+ Rule rule1 = mock(Rule.class);
+ when(ruleFactory.create(RULE_1)).thenReturn(rule1);
- ActionRequest actionRequest1 = createMock(ActionRequest.class);
- expect(actionRequestFactory.create(ACTION_1)).andReturn(actionRequest1);
- rule1.addActionRequest(actionRequest1);
+ ActionRequest actionRequest1 = mock(ActionRequest.class);
+ when(actionRequestFactory.create(ACTION_1)).thenReturn(actionRequest1);
- Condition condition1 = createMock(Condition.class);
- expect(conditionFactory.create(CONDITION_KEY, VALUE_1)).andReturn(condition1);
- rule1.addCondition(condition1);
-
- replayMocks();
+ Condition condition1 = mock(Condition.class);
+ when(conditionFactory.create(CONDITION_KEY, VALUE_1)).thenReturn(condition1);
Collection<Rule> expected = ImmutableList.of(rule1);
RulesConfigReader rulesConfigReader = injector.getInstance(RulesConfigReader.class);
assertEquals("Rules do not match", expected, rulesConfigReader.getRulesFromConfig(cfg));
+
+ verify(rule1).addActionRequest(actionRequest1);
+ verify(rule1).addCondition(condition1);
}
}
diff --git a/tools/bzl/classpath.bzl b/tools/bzl/classpath.bzl
index d5764f7..c921d01 100644
--- a/tools/bzl/classpath.bzl
+++ b/tools/bzl/classpath.bzl
@@ -1,4 +1,6 @@
load(
"@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
- "classpath_collector",
+ _classpath_collector = "classpath_collector",
)
+
+classpath_collector = _classpath_collector
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
index 3af7e58..97307bd 100644
--- a/tools/bzl/junit.bzl
+++ b/tools/bzl/junit.bzl
@@ -1,4 +1,6 @@
load(
"@com_googlesource_gerrit_bazlets//tools:junit.bzl",
- "junit_tests",
+ _junit_tests = "junit_tests",
)
+
+junit_tests = _junit_tests
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
deleted file mode 100644
index 2eabedb..0000000
--- a/tools/bzl/maven_jar.bzl
+++ /dev/null
@@ -1 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "maven_jar")
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
index 0b25d23..4d2dbdd 100644
--- a/tools/bzl/plugin.bzl
+++ b/tools/bzl/plugin.bzl
@@ -1,6 +1,10 @@
load(
"@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
- "PLUGIN_DEPS",
- "PLUGIN_TEST_DEPS",
- "gerrit_plugin",
+ _gerrit_plugin = "gerrit_plugin",
+ _plugin_deps = "PLUGIN_DEPS",
+ _plugin_test_deps = "PLUGIN_TEST_DEPS",
)
+
+gerrit_plugin = _gerrit_plugin
+PLUGIN_DEPS = _plugin_deps
+PLUGIN_TEST_DEPS = _plugin_test_deps