Skip to content

Commit be6a763

Browse files
authored
Fix build hang on .validation.test (#1553)
* Save dirty buffer * Back to org.eclipse.rcp from org.eclipse.platform * Enhance test * Tycho requires org.eclipse.jst.web_ui.feature * Do not install App Engine Standard facet
1 parent 69e0665 commit be6a763

4 files changed

Lines changed: 55 additions & 32 deletions

File tree

plugins/com.google.cloud.tools.eclipse.appengine.validation.test/META-INF/MANIFEST.MF

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,12 @@ Bundle-SymbolicName: com.google.cloud.tools.eclipse.appengine.validation.test
77
Bundle-Vendor: Google Inc.
88
Bundle-Version: 0.1.0.qualifier
99
Fragment-Host: com.google.cloud.tools.eclipse.appengine.validation
10-
Require-Bundle: org.junit,
11-
org.eclipse.equinox.registry,
12-
com.google.cloud.tools.eclipse.test.dependencies
13-
Import-Package: com.google.cloud.tools.eclipse.appengine.compat,
14-
com.google.cloud.tools.eclipse.test.util,
10+
Require-Bundle: org.junit;bundle-version="4.12.0"
11+
Import-Package: com.google.cloud.tools.eclipse.test.util,
1512
com.google.cloud.tools.eclipse.test.util.project,
1613
com.google.cloud.tools.eclipse.ui.util,
17-
org.eclipse.core.resources,
18-
org.eclipse.jface.text,
19-
org.eclipse.jface.text.contentassist,
20-
org.eclipse.ui,
21-
org.mockito;provider=google
14+
org.eclipse.jst.common.project.facet.core,
15+
org.eclipse.jst.j2ee.web.project.facet,
16+
org.eclipse.wst.common.project.facet.core,
17+
org.mockito;provider=google;version="1.10.19",
18+
org.mockito.stubbing;provider=google;version="1.10.19"

plugins/com.google.cloud.tools.eclipse.appengine.validation.test/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,19 @@
3131
<extraRequirements>
3232
<requirement>
3333
<type>eclipse-feature</type>
34-
<id>org.eclipse.platform</id>
34+
<id>org.eclipse.rcp</id>
3535
<versionRange>0.0.0</versionRange>
3636
</requirement>
3737
<requirement>
3838
<type>eclipse-plugin</type>
3939
<id>org.eclipse.wst.xml.ui</id>
4040
<versionRange>0.0.0</versionRange>
4141
</requirement>
42+
<requirement>
43+
<type>eclipse-feature</type>
44+
<id>org.eclipse.jst.web_ui.feature</id>
45+
<versionRange>0.0.0</versionRange>
46+
</requirement>
4247
</extraRequirements>
4348
</dependency-resolution>
4449
</configuration>

plugins/com.google.cloud.tools.eclipse.appengine.validation.test/src/com/google/cloud/tools/eclipse/appengine/validation/XsltSourceQuickFixTest.java

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,54 +16,73 @@
1616

1717
package com.google.cloud.tools.eclipse.appengine.validation;
1818

19+
import static org.junit.Assert.assertEquals;
1920
import static org.junit.Assert.assertFalse;
2021
import static org.junit.Assert.assertTrue;
2122

23+
import com.google.cloud.tools.eclipse.test.util.project.ProjectUtils;
24+
import com.google.cloud.tools.eclipse.test.util.project.TestProjectCreator;
25+
import com.google.cloud.tools.eclipse.ui.util.WorkbenchUtil;
26+
import java.util.Arrays;
2227
import org.eclipse.core.resources.IFile;
2328
import org.eclipse.core.resources.IProject;
29+
import org.eclipse.core.resources.IResource;
2430
import org.eclipse.core.runtime.CoreException;
31+
import org.eclipse.core.runtime.NullProgressMonitor;
2532
import org.eclipse.jface.text.IDocument;
2633
import org.eclipse.jface.text.ITextViewer;
34+
import org.eclipse.jst.common.project.facet.core.JavaFacet;
35+
import org.eclipse.jst.j2ee.web.project.facet.WebFacetUtils;
36+
import org.eclipse.ui.IEditorPart;
2737
import org.eclipse.ui.IWorkbench;
2838
import org.eclipse.ui.PlatformUI;
2939
import org.junit.Rule;
3040
import org.junit.Test;
3141

32-
import com.google.cloud.tools.eclipse.test.util.project.TestProjectCreator;
33-
import com.google.cloud.tools.eclipse.ui.util.WorkbenchUtil;
34-
3542
public class XsltSourceQuickFixTest {
36-
43+
44+
private static final String BLACKLIST_MARKER =
45+
"com.google.cloud.tools.eclipse.appengine.validation.appEngineBlacklistMarker";
46+
3747
private static final String APPLICATION_XML =
3848
"<appengine-web-app xmlns='http://appengine.google.com/ns/1.0'>"
3949
+ "<application>"
4050
+ "</application>"
4151
+ "</appengine-web-app>";
42-
43-
@Rule public TestProjectCreator projectCreator = new TestProjectCreator();
44-
52+
53+
@Rule public TestProjectCreator projectCreator = new TestProjectCreator().withFacetVersions(
54+
Arrays.asList(JavaFacet.VERSION_1_7, WebFacetUtils.WEB_25));
55+
4556
@Test
4657
public void testApply() throws CoreException {
47-
58+
4859
IProject project = projectCreator.getProject();
49-
IFile file = project.getFile("testdata.xml");
50-
file.create(ValidationTestUtils.stringToInputStream(
51-
APPLICATION_XML), IFile.FORCE, null);
52-
60+
IFile file = project.getFile("appengine-web.xml");
61+
file.create(ValidationTestUtils.stringToInputStream(APPLICATION_XML), IFile.FORCE, null);
62+
5363
IWorkbench workbench = PlatformUI.getWorkbench();
54-
WorkbenchUtil.openInEditor(workbench, file);
64+
IEditorPart editorPart = WorkbenchUtil.openInEditor(workbench, file);
5565
ITextViewer viewer = ValidationTestUtils.getViewer(file);
5666
String preContents = viewer.getDocument().get();
57-
67+
5868
assertTrue(preContents.contains("application"));
59-
69+
70+
ProjectUtils.waitForProjects(project);
71+
assertEquals(1, file.findMarkers(BLACKLIST_MARKER, true, IResource.DEPTH_ZERO).length);
72+
6073
XsltSourceQuickFix quickFix = new XsltSourceQuickFix("/xslt/application.xsl",
6174
Messages.getString("remove.application.element"));
6275
quickFix.apply(viewer, 'a', 0, 0);
63-
76+
6477
IDocument document = viewer.getDocument();
6578
String contents = document.get();
6679
assertFalse(contents.contains("application"));
80+
81+
// https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/1527
82+
editorPart.doSave(new NullProgressMonitor());
83+
84+
ProjectUtils.waitForProjects(project);
85+
assertEquals(0, file.findMarkers(BLACKLIST_MARKER, true, IResource.DEPTH_ZERO).length);
6786
}
68-
87+
6988
}

plugins/com.google.cloud.tools.eclipse.ui.util/src/com/google/cloud/tools/eclipse/ui/util/WorkbenchUtil.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.eclipse.core.runtime.Status;
2828
import org.eclipse.core.runtime.jobs.Job;
2929
import org.eclipse.swt.program.Program;
30+
import org.eclipse.ui.IEditorPart;
3031
import org.eclipse.ui.IWorkbench;
3132
import org.eclipse.ui.IWorkbenchPage;
3233
import org.eclipse.ui.IWorkbenchWindow;
@@ -41,22 +42,23 @@ public class WorkbenchUtil {
4142

4243
/**
4344
* Open the specified file in the editor.
44-
*
45+
*
4546
* @param workbench the active workbench
4647
* @param file the file to open
4748
*/
48-
public static void openInEditor(IWorkbench workbench, IFile file) {
49+
public static IEditorPart openInEditor(IWorkbench workbench, IFile file) {
4950
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
5051
if (window != null && file != null) {
5152
IWorkbenchPage page = window.getActivePage();
5253
try {
53-
IDE.openEditor(page, file, true);
54+
return IDE.openEditor(page, file, true);
5455
} catch (PartInitException ex) {
5556
// ignore; we don't have to open the file
5657
}
5758
}
59+
return null;
5860
}
59-
61+
6062
/**
6163
* Opens the specified url in a Web browser instance in a UI thread.
6264
*

0 commit comments

Comments
 (0)