/* * JBoss, Home of Professional Open Source * Copyright 2012, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * Licensed 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 * http://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.jboss.shrinkwrap.resolver.impl.maven.bootstrap; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.jboss.shrinkwrap.resolver.api.NoResolvedResultException; import org.jboss.shrinkwrap.resolver.api.maven.Maven; import org.jboss.shrinkwrap.resolver.impl.maven.util.ValidationUtil; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * Test cases for System property precedence in ShrinkWrap configuration * * @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a> * */ public class SystemPropertyPrecedenceTestCase { private static final String SETTINGS_XML_PATH = "target/settings/profiles/settings.xml"; @BeforeClass public static void initialize() { System.clearProperty("maven.repo.local"); // May conflict with release settings System.setProperty(MavenSettingsBuilder.ALT_USER_SETTINGS_XML_LOCATION, " "); // without space it will be // ignored, and users settings // will be used! } @Before public void cleanLocalRepos() throws IOException { FileUtils.deleteDirectory(new File("target/profile-repository")); FileUtils.deleteDirectory(new File("target/syspropertyrepo")); } @Test public void overrideUserSettings() { System.setProperty(MavenSettingsBuilder.ALT_USER_SETTINGS_XML_LOCATION, SETTINGS_XML_PATH); File[] files = Maven.resolver().resolve("org.jboss.shrinkwrap.test:test-deps-c:1.0.0").withTransitivity() .as(File.class); ValidationUtil.fromDependencyTree(new File("src/test/resources/dependency-trees/test-deps-c.tree")).validate( true, files); System.setProperty(MavenSettingsBuilder.ALT_USER_SETTINGS_XML_LOCATION, " "); } @Test public void overrideGlobalSettings() { System.setProperty(MavenSettingsBuilder.ALT_GLOBAL_SETTINGS_XML_LOCATION, SETTINGS_XML_PATH); File[] files = Maven.resolver().resolve("org.jboss.shrinkwrap.test:test-deps-c:1.0.0").withTransitivity() .as(File.class); ValidationUtil.fromDependencyTree(new File("src/test/resources/dependency-trees/test-deps-c.tree")).validate(true, files); System.clearProperty(MavenSettingsBuilder.ALT_GLOBAL_SETTINGS_XML_LOCATION); } @Test(expected = NoResolvedResultException.class) public void overrideOfflineFlag() { try { System.setProperty(MavenSettingsBuilder.ALT_MAVEN_OFFLINE, "true"); Maven.configureResolver().fromFile(SETTINGS_XML_PATH).resolve("junit:junit:3.8.2").withTransitivity() .as(File.class); Assert.fail("Artifact junit:junit:3.8.2 should not be present in local repository"); } finally { // this has to be executed in finally block System.clearProperty(MavenSettingsBuilder.ALT_MAVEN_OFFLINE); } } @Test public void overrideLocalRepositoryLocation() { System.setProperty(MavenSettingsBuilder.ALT_LOCAL_REPOSITORY_LOCATION, "target/syspropertyrepo"); File[] files = Maven.configureResolver().fromFile(SETTINGS_XML_PATH) .resolve("org.jboss.shrinkwrap.test:test-deps-c:1.0.0").withTransitivity().as(File.class); ValidationUtil.fromDependencyTree(new File("src/test/resources/dependency-trees/test-deps-c.tree")).validate(true, files); // Assert file was downloaded into syspropertyrepo directory File testDep = new File( "target/syspropertyrepo/org/jboss/shrinkwrap/test/test-deps-c/1.0.0/test-deps-c-1.0.0.jar"); Assert.assertTrue("Sysproperty local repository took precedence", testDep.exists()); System.clearProperty(MavenSettingsBuilder.ALT_LOCAL_REPOSITORY_LOCATION); } }