blob: cdb7a58b17d45ac2f96d26f5b269b688c0d1c367 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.ivy.ant;
import java.io.File;
import org.apache.ivy.TestHelper;
import org.apache.ivy.ant.AntWorkspaceResolver.WorkspaceArtifact;
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.report.DownloadStatus;
import org.apache.ivy.core.report.ResolveReport;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class AntBuildResolverTest {
private static final ModuleRevisionId MRID_MODULE1 = ModuleRevisionId.newInstance("org.acme",
"module1", "1.1");
private static final ModuleRevisionId MRID_PROJECT1 = ModuleRevisionId.newInstance(
"org.apache.ivy.test", "project1", "0.1");
private Project project;
private IvyConfigure configure;
private WorkspaceArtifact wa;
@Before
public void setUp() {
TestHelper.cleanCache();
project = TestHelper.newProject();
project.setProperty("ivy.cache.dir", TestHelper.cache.getAbsolutePath());
AntWorkspaceResolver antWorkspaceResolver = new AntWorkspaceResolver();
antWorkspaceResolver.setName("test-workspace");
wa = antWorkspaceResolver.createArtifact();
FileSet fileset = new FileSet();
fileset.setProject(project);
fileset.setDir(new File("test/workspace"));
fileset.setIncludes("*/ivy.xml");
antWorkspaceResolver.addConfigured(fileset);
antWorkspaceResolver.setProject(project);
configure = new IvyConfigure();
configure.setProject(project);
configure.setFile(new File("test/workspace/ivysettings.xml"));
configure.addConfiguredWorkspaceResolver(antWorkspaceResolver);
configure.execute();
}
@After
public void tearDown() {
TestHelper.cleanCache();
}
@Test
public void testNoProject() {
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project1/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
ResolveReport report = project.getReference("ivy.resolved.report");
assertEquals(1, report.getDependencies().size());
assertEquals(MRID_MODULE1, report.getDependencies().get(0).getResolvedId());
}
@Test
public void testProject() throws Exception {
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project2/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
ResolveReport report = project.getReference("ivy.resolved.report");
assertEquals(2, report.getDependencies().size());
assertEquals(MRID_PROJECT1, report.getDependencies().get(0).getResolvedId());
assertEquals(MRID_MODULE1, report.getDependencies().get(1).getResolvedId());
assertEquals(1, report.getArtifactsReports(MRID_PROJECT1).length);
assertEquals(DownloadStatus.NO,
report.getArtifactsReports(MRID_PROJECT1)[0].getDownloadStatus());
assertEquals(new File("test/workspace/project1/target/dist/jars/project1.jar").toURI()
.toURL(), report.getArtifactsReports(MRID_PROJECT1)[0].getArtifact().getUrl());
assertEquals(
new File("test/workspace/project1/target/dist/jars/project1.jar").getAbsoluteFile(),
report.getArtifactsReports(MRID_PROJECT1)[0].getLocalFile());
}
@Test
public void testProjectFolder() throws Exception {
wa.setPath("target/classes");
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project2/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
ResolveReport report = project.getReference("ivy.resolved.report");
assertEquals(2, report.getDependencies().size());
assertEquals(MRID_PROJECT1, report.getDependencies().get(0).getResolvedId());
assertEquals(MRID_MODULE1, report.getDependencies().get(1).getResolvedId());
assertEquals(1, report.getArtifactsReports(MRID_PROJECT1).length);
assertEquals(DownloadStatus.NO,
report.getArtifactsReports(MRID_PROJECT1)[0].getDownloadStatus());
assertEquals(new File("test/workspace/project1/target/classes").toURI().toURL(),
report.getArtifactsReports(MRID_PROJECT1)[0].getArtifact().getUrl());
assertEquals(new File("test/workspace/project1/target/classes").getAbsoluteFile(),
report.getArtifactsReports(MRID_PROJECT1)[0].getLocalFile());
}
@Test
public void testDependencyArtifact() throws Exception {
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project3/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
ResolveReport report = project.getReference("ivy.resolved.report");
assertEquals(2, report.getDependencies().size());
assertEquals(MRID_PROJECT1, report.getDependencies().get(0).getResolvedId());
assertEquals(MRID_MODULE1, report.getDependencies().get(1).getResolvedId());
assertEquals(1, report.getArtifactsReports(MRID_PROJECT1).length);
assertEquals(DownloadStatus.NO,
report.getArtifactsReports(MRID_PROJECT1)[0].getDownloadStatus());
assertEquals(new File("test/workspace/project1/target/dist/jars/project1.jar").toURI()
.toURL(), report.getArtifactsReports(MRID_PROJECT1)[0].getArtifact().getUrl());
assertEquals(
new File("test/workspace/project1/target/dist/jars/project1.jar").getAbsoluteFile(),
report.getArtifactsReports(MRID_PROJECT1)[0].getLocalFile());
}
@Test
public void testCachePath() {
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project2/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
IvyCachePath cachePath = new IvyCachePath();
cachePath.setProject(project);
cachePath.setPathid("test.cachepath.id");
cachePath.execute();
Path path = project.getReference("test.cachepath.id");
assertEquals(2, path.size());
assertEquals(
new File("test/workspace/project1/target/dist/jars/project1.jar").getAbsolutePath(),
path.list()[0]);
assertEquals(new File(TestHelper.cache, "org.acme/module1/jars/module1-1.1.jar").getAbsolutePath(),
path.list()[1]);
}
@Test
public void testCachePathFolder() {
wa.setPath("target/classes");
IvyResolve resolve = new IvyResolve();
resolve.setProject(project);
resolve.setFile(new File("test/workspace/project2/ivy.xml"));
resolve.setKeep(true);
resolve.execute();
IvyCachePath cachePath = new IvyCachePath();
cachePath.setProject(project);
cachePath.setPathid("test.cachepath.id");
cachePath.execute();
Path path = project.getReference("test.cachepath.id");
assertEquals(2, path.size());
assertEquals(new File("test/workspace/project1/target/classes").getAbsolutePath(),
path.list()[0]);
assertEquals(new File(TestHelper.cache, "org.acme/module1/jars/module1-1.1.jar").getAbsolutePath(),
path.list()[1]);
}
}