Skip to content

Commit

Permalink
Unit test for no resources in the target folder
Browse files Browse the repository at this point in the history
  • Loading branch information
BoykoAlex committed Aug 2, 2023
1 parent 51609ad commit 40c9204
Show file tree
Hide file tree
Showing 5 changed files with 159 additions and 0 deletions.
41 changes: 41 additions & 0 deletions org.eclipse.m2e.core.tests/resources/projects/demo/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {

@Test
void contextLoads() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/*******************************************************************************
* Copyright (c) 2023 Alex Boyko and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.m2e.core;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;

import org.apache.commons.io.FileUtils;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.m2e.tests.common.AbstractMavenProjectTestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class AppPropsNotCopiedIntoTargetTest extends AbstractMavenProjectTestCase {

private File projectDirectory;

@Override
@Before
public void setUp() throws Exception {
super.setUp();
setAutoBuilding(true);
projectDirectory = new File(Files.createTempDirectory("m2e-tests").toFile(), "demo");
projectDirectory.mkdirs();
copyDir(new File("resources/projects/demo"), projectDirectory);
}

@Override
@After
public void tearDown() throws Exception {
FileUtils.deleteDirectory(this.projectDirectory.getParentFile());
super.tearDown();
}

@Test
public void test() throws Exception {
IProject project = importProject(new File(projectDirectory, "pom.xml").toString());
waitForJobsToComplete(monitor);

IJavaProject jp = JavaCore.create(project);

assertTrue(isAutoBuilding());

IPath rootPath = project.getWorkspace().getRoot().getLocation();

// Project imported for the first time and built - everything is properly in the target folder
assertTrue(rootPath.append(jp.getOutputLocation()).append("/application.properties").toFile()
.exists());
assertTrue(rootPath.append(jp.getOutputLocation())
.append("/com/example/demo/DemoApplication.class").makeAbsolute().toFile().exists());

IFile pomXml = project.getFile("pom.xml");
String content = Files.readString(Path.of(pomXml.getLocationURI()));
pomXml.setContents(new ByteArrayInputStream("Nothing".getBytes()), true, false, null);

waitForJobsToComplete(monitor);
Thread.sleep(5000);
// Invalid pom file. JavaBuilder built java sources but MavenBuilder wqs unable to do anything hence no resources in the target folder except for compiled classes
assertFalse(rootPath.append(jp.getOutputLocation()).append("/application.properties").toFile()
.exists());
assertTrue(rootPath.append(jp.getOutputLocation())
.append("/com/example/demo/DemoApplication.class").toFile().exists());

pomXml.setContents(new ByteArrayInputStream(content.getBytes()), true, false, null);
waitForJobsToComplete(monitor);
Thread.sleep(5000);
// Valid pom file. Compiled classes and resources should reappear in the target folder. However, resources are missing which makes the test fail
assertTrue(rootPath.append(jp.getOutputLocation())
.append("/com/example/demo/DemoApplication.class").toFile().exists());
assertTrue(rootPath.append(jp.getOutputLocation()).append("/application.properties").toFile()
.exists());
}

}

0 comments on commit 40c9204

Please sign in to comment.