Skip to content
This repository was archived by the owner on Nov 28, 2022. It is now read-only.

Commit 31b680f

Browse files
keithchongsghung
authored andcommitted
[48] Pull out useful methods to util class for use by new UI tests
Signed-off-by: Keith Chong <[email protected]>
1 parent 08a74c2 commit 31b680f

File tree

3 files changed

+110
-36
lines changed

3 files changed

+110
-36
lines changed

dev/org.eclipse.codewind.openapi.test/META-INF/MANIFEST.MF

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,18 @@ Require-Bundle: org.junit,
1616
Bundle-Activator: org.eclipse.codewind.openapi.test.Activator
1717
Bundle-Vendor: IBM
1818
Bundle-ActivationPolicy: lazy
19-
Export-Package: org.eclipse.codewind.openapi.test;x-internal:=true,
19+
Export-Package: org.eclipse.codewind.openapi.test,
2020
org.eclipse.codewind.openapi.test.client;x-internal:=true,
2121
org.eclipse.codewind.openapi.test.client.go;x-internal:=true,
2222
org.eclipse.codewind.openapi.test.client.java;x-internal:=true,
2323
org.eclipse.codewind.openapi.test.client.nodejs;x-internal:=true,
2424
org.eclipse.codewind.openapi.test.client.python;x-internal:=true,
2525
org.eclipse.codewind.openapi.test.client.swift;x-internal:=true,
26+
org.eclipse.codewind.openapi.test.core.contenttype;x-internal:=true,
2627
org.eclipse.codewind.openapi.test.html;x-internal:=true,
2728
org.eclipse.codewind.openapi.test.server;x-internal:=true,
2829
org.eclipse.codewind.openapi.test.server.go;x-internal:=true,
2930
org.eclipse.codewind.openapi.test.server.java;x-internal:=true,
3031
org.eclipse.codewind.openapi.test.server.nodejs;x-internal:=true,
31-
org.eclipse.codewind.openapi.test.server.python;x-internal:=true
32+
org.eclipse.codewind.openapi.test.server.python;x-internal:=true,
33+
org.eclipse.codewind.openapi.test.util

dev/org.eclipse.codewind.openapi.test/src/org/eclipse/codewind/openapi/test/BaseTestCase.java

+5-34
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,18 @@
1212
*******************************************************************************/
1313
package org.eclipse.codewind.openapi.test;
1414

15-
import java.io.BufferedInputStream;
16-
import java.io.FileInputStream;
1715
import java.io.FileNotFoundException;
1816
import java.io.IOException;
19-
import java.io.InputStream;
20-
import java.net.URL;
2117
import java.util.StringTokenizer;
2218

19+
import org.eclipse.codewind.openapi.test.util.TestUtilities;
2320
import org.eclipse.core.resources.IContainer;
2421
import org.eclipse.core.resources.IFile;
2522
import org.eclipse.core.resources.IFolder;
2623
import org.eclipse.core.resources.IProject;
2724
import org.eclipse.core.resources.IResource;
2825
import org.eclipse.core.resources.ResourcesPlugin;
2926
import org.eclipse.core.runtime.CoreException;
30-
import org.eclipse.core.runtime.FileLocator;
3127
import org.eclipse.core.runtime.IProgressMonitor;
3228
import org.eclipse.core.runtime.NullProgressMonitor;
3329
import org.eclipse.core.runtime.Path;
@@ -53,17 +49,13 @@ public BaseTestCase(String name) {
5349
super(name);
5450
}
5551

56-
protected void createGeneralProject(String projectName) {
57-
IProgressMonitor monitor = new NullProgressMonitor();
58-
this.testProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
52+
protected void createGeneralProject(String projectName) {
5953
try {
60-
this.testProject.create(monitor);
61-
this.testProject.open(monitor);
54+
this.testProject = TestUtilities.createGeneralProject(projectName);
6255
} catch (CoreException e) {
63-
e.printStackTrace();
6456
fail();
6557
}
66-
assertNotNull("Project creation", testProject);
58+
assertNotNull("Project creation", this.testProject);
6759
assertEquals("Test project name", projectName, this.testProject.getName());
6860
}
6961

@@ -74,29 +66,8 @@ protected void createGeneralProject(String projectName) {
7466
* the project name
7567
*/
7668
protected void copyDefinitionToProject(String sourceFile, String destinationFile) {
77-
NullProgressMonitor nullProgressMonitor = new NullProgressMonitor();
7869
try {
79-
URL url = Activator.getDefault().getBundle().getEntry(sourceFile);
80-
URL fileURL = FileLocator.toFileURL(url);
81-
82-
StringTokenizer st = new StringTokenizer(destinationFile, "/");
83-
StringBuffer sb = new StringBuffer();
84-
IFolder aFolder = null;
85-
while (st.hasMoreTokens()) {
86-
String nextToken = st.nextToken();
87-
if (!st.hasMoreTokens()) {
88-
break;
89-
}
90-
aFolder = this.testProject.getFolder(new Path(sb.toString() + "/" + nextToken));
91-
aFolder.create(true, true, nullProgressMonitor);
92-
sb.append("/" + nextToken);
93-
}
94-
IFile destFile = this.testProject.getFile(destinationFile);
95-
InputStream in = new BufferedInputStream(new FileInputStream(fileURL.getFile()));
96-
destFile.create(in, true, nullProgressMonitor);
97-
98-
this.testProject.refreshLocal(IProject.DEPTH_ONE, nullProgressMonitor);
99-
this.definitionFile = this.testProject.getFile(destinationFile);
70+
this.definitionFile = TestUtilities.copyDefinitionToProject(sourceFile, destinationFile, this.testProject);
10071
assertTrue("Copied file exists in workspace", this.definitionFile.exists());
10172
assertEquals("Definition is in the test project", this.testProject, this.definitionFile.getProject());
10273
} catch (CoreException e) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2019 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License 2.0
5+
* which accompanies this distribution, and is available at
6+
* https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* IBM Corporation - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.codewind.openapi.test.util;
14+
15+
import java.io.BufferedInputStream;
16+
import java.io.FileInputStream;
17+
import java.io.FileNotFoundException;
18+
import java.io.IOException;
19+
import java.io.InputStream;
20+
import java.net.URL;
21+
import java.util.StringTokenizer;
22+
23+
import org.eclipse.codewind.openapi.test.Activator;
24+
import org.eclipse.core.resources.IFile;
25+
import org.eclipse.core.resources.IFolder;
26+
import org.eclipse.core.resources.IProject;
27+
import org.eclipse.core.resources.ResourcesPlugin;
28+
import org.eclipse.core.runtime.CoreException;
29+
import org.eclipse.core.runtime.FileLocator;
30+
import org.eclipse.core.runtime.IProgressMonitor;
31+
import org.eclipse.core.runtime.NullProgressMonitor;
32+
import org.eclipse.core.runtime.Path;
33+
import org.junit.Assert;
34+
35+
public class TestUtilities {
36+
37+
public TestUtilities() {
38+
// Empty
39+
}
40+
41+
/**
42+
* Create a General Project
43+
*
44+
* @param projectName
45+
* @return
46+
* @throws CoreException
47+
*/
48+
public static IProject createGeneralProject(String projectName) throws CoreException {
49+
IProgressMonitor monitor = new NullProgressMonitor();
50+
IProject testProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
51+
try {
52+
testProject.create(monitor);
53+
testProject.open(monitor);
54+
} catch (CoreException e) {
55+
throw e;
56+
}
57+
return testProject;
58+
}
59+
60+
/**
61+
*
62+
* @param sourceFile - source OpenAPI definition in the test plugin resources folder
63+
* @param destinationFile - path of target OpenAPI definition in the test project but excludes
64+
* the project name
65+
*/
66+
public static IFile copyDefinitionToProject(String sourceFile, String destinationFile, IProject testProject) throws CoreException, FileNotFoundException, IOException {
67+
NullProgressMonitor nullProgressMonitor = new NullProgressMonitor();
68+
try {
69+
URL url = Activator.getDefault().getBundle().getEntry(sourceFile);
70+
URL fileURL = FileLocator.toFileURL(url);
71+
72+
StringTokenizer st = new StringTokenizer(destinationFile, "/");
73+
StringBuffer sb = new StringBuffer();
74+
IFolder aFolder = null;
75+
while (st.hasMoreTokens()) {
76+
String nextToken = st.nextToken();
77+
if (!st.hasMoreTokens()) {
78+
break;
79+
}
80+
aFolder = testProject.getFolder(new Path(sb.toString() + "/" + nextToken));
81+
aFolder.create(true, true, nullProgressMonitor);
82+
sb.append("/" + nextToken);
83+
}
84+
IFile destFile = testProject.getFile(destinationFile);
85+
InputStream in = new BufferedInputStream(new FileInputStream(fileURL.getFile()));
86+
destFile.create(in, true, nullProgressMonitor);
87+
88+
testProject.refreshLocal(IProject.DEPTH_ONE, nullProgressMonitor);
89+
IFile defFile = testProject.getFile(destinationFile);
90+
Assert.assertTrue("Copied file exists in workspace", defFile.exists());
91+
Assert.assertEquals("Definition is in the test project", testProject, defFile.getProject());
92+
return defFile;
93+
} catch (CoreException e) {
94+
throw e;
95+
} catch (FileNotFoundException e) {
96+
throw e;
97+
} catch (IOException e) {
98+
throw e;
99+
}
100+
}
101+
}

0 commit comments

Comments
 (0)