blob: c4d765df836a1f1101163558ff0b5f3e0723dbf4 [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.sling.maven.projectsupport;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.Test;
/**
* Tests of PreparePageMojo
*/
public class PreparePackageMojoTest {
@Test
public void testInitArtifactDefinitionsAllDefaults() throws Exception {
PreparePackageMojo mojo = new PreparePackageMojo();
invokeInitArtifactDefinitions(mojo);
makeArtifactAssertions(mojo, "base", "org.apache.sling",
"org.apache.sling.launchpad.base", null, "jar", null, 0);
//makeArtifactAssertions(mojo, "defaultBundles", "org.apache.sling",
// "org.apache.sling.launchpad", "RELEASE", "jar", "bundles", 0);
makeArtifactAssertions(mojo, "defaultBundleList", "org.apache.sling",
"org.apache.sling.launchpad", "7", "xml", "bundlelist", 0);
makeArtifactAssertions(mojo, "jarWebSupport", "org.apache.felix",
"org.apache.felix.http.jetty", "RELEASE", "jar", null, -1);
}
private void makeArtifactAssertions(PreparePackageMojo mojo, String name,
String groupId, String artifactId, String version, String type,
String classifier, int startLevel) throws Exception {
ArtifactDefinition def = getArtifactDefinition(mojo, name);
assertNotNull(def);
assertEquals(groupId, def.getGroupId());
assertEquals(artifactId, def.getArtifactId());
assertEquals(version, def.getVersion());
assertEquals(type, def.getType());
assertEquals(classifier, def.getClassifier());
assertEquals(startLevel, def.getStartLevel());
}
private void invokeInitArtifactDefinitions(PreparePackageMojo mojo)
throws Exception {
Method method = findMethod(mojo.getClass(), "initArtifactDefinitions");
method.setAccessible(true);
method.invoke(mojo);
method.setAccessible(false);
}
private Method findMethod(Class<?> clazz, String name, Class<?>... args)
throws NoSuchMethodException {
while (clazz != Object.class) {
try {
return clazz.getDeclaredMethod(name, args);
} catch (SecurityException e) {
} catch (NoSuchMethodException e) {
}
clazz = clazz.getSuperclass();
}
throw new NoSuchMethodException("Could not find method " + name);
}
private Field findField(Class<?> clazz, String name)
throws NoSuchFieldException {
while (clazz != Object.class) {
try {
return clazz.getDeclaredField(name);
} catch (SecurityException e) {
} catch (NoSuchFieldException e) {
}
clazz = clazz.getSuperclass();
}
throw new NoSuchFieldException("Could not find field " + name);
}
private ArtifactDefinition getArtifactDefinition(PreparePackageMojo mojo,
String name) throws Exception {
Field field = findField(mojo.getClass(), name);
field.setAccessible(true);
ArtifactDefinition def = (ArtifactDefinition) field.get(mojo);
field.setAccessible(false);
return def;
}
}