diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..bef79ea --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,2 @@ +- [ ] All [tests](https://github.com/jfrog/jfrog-eclipse-plugin/actions/workflows/tests.yml) passed. If this feature is not already covered by the tests, I added new tests. +----- \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..5f8f99b --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,44 @@ +name: Test + +on: + push: + branches: + - '**' + tags-ignore: + - '**' + pull_request: + types: [labeled] + +# Ensures that only the latest commit is running for each PR at a time. +# Ignores this rule for push events. +concurrency: + group: ${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + ref: ${{ github.event.pull_request.head.sha }} + + - name: Unlabel 'safe to test' + uses: actions-ecosystem/action-remove-labels@v1 + if: ${{ github.event_name != 'push' }} + with: + labels: "safe to test" + + - name: Set up Java + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: "17" + + - name: Run tests + run: mvn clean verify diff --git a/tests/.classpath b/tests/.classpath index 7f457fa..9e101bc 100644 --- a/tests/.classpath +++ b/tests/.classpath @@ -1,7 +1,8 @@ - + - + + diff --git a/tests/.settings/org.eclipse.jdt.core.prefs b/tests/.settings/org.eclipse.jdt.core.prefs index 9f6ece8..a84e30e 100644 --- a/tests/.settings/org.eclipse.jdt.core.prefs +++ b/tests/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/tests/META-INF/MANIFEST.MF b/tests/META-INF/MANIFEST.MF index d3c18a4..068a9c0 100644 --- a/tests/META-INF/MANIFEST.MF +++ b/tests/META-INF/MANIFEST.MF @@ -3,10 +3,11 @@ Bundle-ManifestVersion: 2 Bundle-Name: XRay Plugin Tests Bundle-SymbolicName: com.jfrog.ide.eclipse.tests;singleton:=true Bundle-Version: 2.0.1 -nEnvironment: JavaSE-1.8 -Import-Package: org.apache.commons.io;version="2.2.0" +nEnvironment: JavaSE-17 +Import-Package: org.apache.commons.io;version="2.2.0", + org.eclipse.swt.widgets Automatic-Module-Name: org.jfrog.plugin.rcp -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ClassPath: ., lib/ide-plugins-common.jar Bundle-Vendor: JFrog diff --git a/tests/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagerTest.java b/tests/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagerTest.java index 9522669..ffbaab0 100644 --- a/tests/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagerTest.java +++ b/tests/src/main/java/com/jfrog/ide/eclipse/scan/ScanManagerTest.java @@ -1,9 +1,9 @@ package com.jfrog.ide.eclipse.scan; import java.io.IOException; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; - import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; @@ -12,37 +12,38 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.JobChangeAdapter; -import com.jfrog.ide.eclipse.scheduling.ScanJob; -import com.jfrog.ide.eclipse.utils.Utils; +import com.jfrog.ide.eclipse.scheduling.CliJob; +import com.jfrog.ide.eclipse.utils.Utils; import junit.framework.TestCase; public class ScanManagerTest extends TestCase { + private ScanManager scanManager = ScanManager.getInstance(); + // TODO: add integration test for scanning: Maven, Gradle and NPM projects. + public void testSchedulingAJob() throws IOException, CoreException, OperationCanceledException, InterruptedException { String projectName = "gradleIsApplicable"; JobListener jobListener = new JobListener(); IProject project = Utils.createProject(projectName, "gradle"); - ScanManager scanManager = new GradleScanManager(project); Job.getJobManager().addJobChangeListener(jobListener); - scanManager.scanAndUpdateResults(false, null, null, null); - Job.getJobManager().join(ScanJob.FAMILY, new NullProgressMonitor()); + scanManager.scanAndUpdateResults(null, null, project, null); + Job.getJobManager().join(CliJob.FAMILY, new NullProgressMonitor()); assertJobInformation(projectName, jobListener); cleanup(jobListener); } public void testScanFinished() throws IOException, CoreException, OperationCanceledException, InterruptedException { - ScanManagersFactory.getInstance().getScanInProgress().set(true); + scanManager.getScanInProgress().set(true); String projectName = "gradleIsApplicable"; JobListener jobListener = new JobListener(); Job.getJobManager().addJobChangeListener(jobListener); IProject project = Utils.createProject(projectName, "gradle"); - ScanManager scanManager = new GradleScanManager(project); - scanManager.scanAndUpdateResults(false, null, null, null); - Job.getJobManager().join(ScanJob.FAMILY, new NullProgressMonitor()); + scanManager.scanAndUpdateResults(null, null, project, null); + Job.getJobManager().join(CliJob.FAMILY, new NullProgressMonitor()); assertJobInformation(projectName, jobListener); - assertFalse(ScanManagersFactory.getInstance().getScanInProgress().get()); + assertFalse(scanManager.getScanInProgress().get()); cleanup(jobListener); } @@ -54,7 +55,7 @@ private void cleanup(JobListener jobListener) { private void assertJobInformation(String projectName, JobListener jobListener) { assertTrue(jobListener.isJobExists()); - assertEquals(projectName, jobListener.getJobName()); + assertEquals("Performing Scan: " + projectName, jobListener.getJobName()); assertEquals(1, jobListener.numOfJobs()); } @@ -63,10 +64,10 @@ static class JobListener extends JobChangeAdapter { private static AtomicBoolean jobExists = new AtomicBoolean(false); private String jobName; private static AtomicInteger numOfJobs = new AtomicInteger(); - + @Override public void scheduled(IJobChangeEvent event) { - if (event.getJob().belongsTo(ScanJob.FAMILY)) { + if (event.getJob().belongsTo(CliJob.FAMILY)) { this.jobName = event.getJob().getName(); numOfJobs.incrementAndGet(); } @@ -74,7 +75,7 @@ public void scheduled(IJobChangeEvent event) { @Override public void done(IJobChangeEvent event) { - if (event.getJob().belongsTo(ScanJob.FAMILY)) { + if (event.getJob().belongsTo(CliJob.FAMILY)) { jobExists.set(true); } } diff --git a/tests/src/main/java/com/jfrog/ide/eclipse/utils/Utils.java b/tests/src/main/java/com/jfrog/ide/eclipse/utils/Utils.java index 89a46dc..4216559 100644 --- a/tests/src/main/java/com/jfrog/ide/eclipse/utils/Utils.java +++ b/tests/src/main/java/com/jfrog/ide/eclipse/utils/Utils.java @@ -1,10 +1,8 @@ package com.jfrog.ide.eclipse.utils; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Paths; import org.apache.commons.io.FileUtils; import org.eclipse.core.resources.IProject; @@ -18,8 +16,6 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; -import com.jfrog.ide.eclipse.scan.GradleScanManager; - /** * Utils class for testing * @author alexeiv @@ -60,16 +56,6 @@ public void run(IProgressMonitor monitor) throws CoreException { return project; } - /** - * Returns the gradle init script file location - */ - public static String getGradleInitScriptLocation(GradleScanManager gradleScanManager) throws IOException { - File currentDir = new File(System.getProperty("user.dir")); - File parentDir = currentDir.getParentFile(); - File pathToGradleScriptFile = Paths.get(parentDir.getAbsolutePath(), "bundle", "src", "main", "resources", "gradle", GradleScanManager.GRADLE_INIT_SCRIPT).toFile(); - return gradleScanManager.createGradleFile(new FileInputStream(pathToGradleScriptFile)); - } - /** * Returns the expected result content from the test resources. * @param folderName - The folder name where the file located