blob: 70ca53e14639e362a9051320f851507255f9cde4 [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
*
* 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.apache.maven.it;
import java.io.File;
import java.util.Map;
import java.util.Properties;
import org.apache.maven.shared.utils.io.FileUtils;
import org.apache.maven.shared.verifier.Verifier;
import org.apache.maven.shared.verifier.util.ResourceExtractor;
import org.junit.jupiter.api.Test;
/**
* This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-4745">MNG-4745</a>.
*
* @author Benjamin Bentmann
*/
public class MavenITmng4745PluginVersionUpdateTest extends AbstractMavenIntegrationTestCase {
public MavenITmng4745PluginVersionUpdateTest() {
super("[2.0.3,3.0-alpha-1),[3.0-beta-2,)");
}
/**
* Verify that the update policy of a (plugin) repository affects the check for newer plugin versions.
*
* @throws Exception in case of failure
*/
@Test
public void testitRepoPolicyAlways() throws Exception {
File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-4745");
Verifier verifier = newVerifier(testDir.getAbsolutePath());
verifier.setAutoclean(false);
verifier.setForkJvm(true);
verifier.deleteArtifacts("org.apache.maven.its.mng4745");
verifier.addCliArgument("-s");
verifier.addCliArgument("settings.xml");
Map<String, String> filterProps = verifier.newDefaultFilterMap();
filterProps.put("@updates@", "always");
verifier.filterFile("settings-template.xml", "settings.xml", "UTF-8", filterProps);
writeMetadata(testDir, "1.0", "20100729123455");
verifier.setLogFileName("log-1a.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
writeMetadata(testDir, "1.1", "20100730123456");
verifier.setLogFileName("log-1b.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
verifier.verifyErrorFreeLog();
Properties props = verifier.loadProperties("target/plugin.properties");
assertEquals("1.1", props.get("plugin.version"));
}
/**
* Verify that the update policy of a (plugin) repository affects the check for newer plugin versions.
*
* @throws Exception in case of failure
*/
@Test
public void testitRepoPolicyNever() throws Exception {
File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-4745");
Verifier verifier = newVerifier(testDir.getAbsolutePath());
verifier.setAutoclean(false);
verifier.setForkJvm(true);
verifier.deleteArtifacts("org.apache.maven.its.mng4745");
verifier.addCliArgument("-s");
verifier.addCliArgument("settings.xml");
Map<String, String> filterProps = verifier.newDefaultFilterMap();
filterProps.put("@updates@", "never");
verifier.filterFile("settings-template.xml", "settings.xml", "UTF-8", filterProps);
writeMetadata(testDir, "1.0", "20100729123455");
verifier.setLogFileName("log-2a.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
writeMetadata(testDir, "1.1", "20100730123456");
verifier.setLogFileName("log-2b.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
verifier.verifyErrorFreeLog();
Properties props = verifier.loadProperties("target/plugin.properties");
assertEquals("1.0", props.get("plugin.version"));
}
/**
* Verify that the CLI's force update flag affects the check for newer plugin versions.
*
* @throws Exception in case of failure
*/
@Test
public void testitForceUpdate() throws Exception {
File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-4745");
Verifier verifier = newVerifier(testDir.getAbsolutePath());
verifier.setAutoclean(false);
verifier.setForkJvm(true);
verifier.deleteArtifacts("org.apache.maven.its.mng4745");
verifier.addCliArgument("-U");
verifier.addCliArgument("-s");
verifier.addCliArgument("settings.xml");
Map<String, String> filterProps = verifier.newDefaultFilterMap();
filterProps.put("@updates@", "never");
verifier.filterFile("settings-template.xml", "settings.xml", "UTF-8", filterProps);
writeMetadata(testDir, "1.0", "20100729123455");
verifier.setLogFileName("log-3a.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
writeMetadata(testDir, "1.1", "20100730123456");
verifier.setLogFileName("log-3b.txt");
verifier.addCliArgument("org.apache.maven.its.mng4745:maven-it-plugin:touch");
verifier.execute();
verifier.verifyErrorFreeLog();
Properties props = verifier.loadProperties("target/plugin.properties");
assertEquals("1.1", props.get("plugin.version"));
}
private static void writeMetadata(File testdir, String version, String timestamp) throws Exception {
StringBuilder content = new StringBuilder(1024);
content.append("<?xml version=\"1.0\"?>\n");
content.append("<metadata>\n");
content.append(" <groupId>org.apache.maven.its.mng4745</groupId>\n");
content.append(" <artifactId>maven-it-plugin</artifactId>\n");
content.append(" <versioning>\n");
content.append(" <latest>" + version + "</latest>\n");
content.append(" <release>" + version + "</release>\n");
content.append(" <versions>\n");
content.append(" <version>1.0</version>\n");
content.append(" </versions>\n");
content.append(" <lastUpdated>" + timestamp + "</lastUpdated>\n");
content.append(" </versioning>\n");
content.append("</metadata>\n");
File metadata = new File(testdir, "repo/org/apache/maven/its/mng4745/maven-it-plugin/maven-metadata.xml");
metadata.getParentFile().mkdirs();
FileUtils.fileWrite(metadata.getAbsolutePath(), "UTF-8", content.toString());
}
}