420165: fix failures due to too fast task submission in
TracTaskDataHandlerXmlRpcTest
Change-Id: I4ba997880ee0614c072da99fa8f30eef88b3850f
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=420165
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/core/TracTaskDataHandlerXmlRpcTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/core/TracTaskDataHandlerXmlRpcTest.java
index 683c9be..352b468 100644
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/core/TracTaskDataHandlerXmlRpcTest.java
+++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/core/TracTaskDataHandlerXmlRpcTest.java
@@ -199,6 +199,7 @@
AbstractTaskAttachmentHandler attachmentHandler = connector.getTaskAttachmentHandler();
ITask task = harness.createTask("attachmentChangesLastModifiedDate");
Date lastModified = task.getModificationDate();
+ harness.getFixture().waitToGuaranteeTaskUpdate();
// XXX the test case fails when comment == null
attachmentHandler.postContent(repository, task, new TextTaskAttachmentSource("abc"), "comment", null, null);
@@ -441,6 +442,8 @@
ticket.putBuiltinValue(Key.PRIORITY, "trivial");
client.updateTicket(ticket, "changing priority", null);
+ harness.getFixture().waitToGuaranteeTaskUpdate();
+
// submit conflicting change
try {
taskDataHandler.postTaskData(repository, taskData, null, new NullProgressMonitor());
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracFixture.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracFixture.java
index 3760f25..f292e80 100644
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracFixture.java
+++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracFixture.java
@@ -197,4 +197,15 @@
return super.isExcluded() || excluded;
}
+ public void waitToGuaranteeTaskUpdate() {
+ if (getVersion().compareTo("0.12") < 0) {
+ // Trac 0.11 can fail with database errors if subsequent task updates happen too quickly
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
}