blob: 5a4e913b61c695eab787c7caa49ff844e00b51ad [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
<version>26</version>
<relativePath/>
</parent>
<artifactId>org.apache.sling.samples.testing.bundle-with-it</artifactId>
<version>0.0.9-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Sling Testing - sample bundle with integration tests</name>
<description>
Sample project that demonstrates a bundle with unit and integration
tests in the same Maven module, running against a full Sling instance.
Uses both HTTP-based and teleported server-side tests.
</description>
<properties>
<!-- Set this to run the server on a specific port
<http.port></http.port>
-->
<!-- Set this to run tests against an existing server instance -->
<keepJarRunning>false</keepJarRunning>
<!-- URL of a server against which to run tests -->
<test.server.url />
<!-- Set this to run tests against a specific hostname, if test.server.url is not set-->
<test.server.hostname />
<!-- Set this to use a different username for remote execution of sling junit tests -->
<test.server.username />
<!-- Set this to use a different password for remote execution of sling junit tests -->
<test.server.password />
<!-- Options for the VM that executes our runnable jar -->
<jar.executor.vm.options>-Xmx512m</jar.executor.vm.options>
<!-- Change this to use longer or shorter timeouts for testing -->
<sling.testing.timeout.multiplier>1.0</sling.testing.timeout.multiplier>
<!-- Set this to run the executable jar in a specified filesystem folder -->
<jar.executor.work.folder />
<!-- Options for the jar to execute. $JAREXEC_SERVER_PORT$ is replaced by the
selected port number -->
<jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$</jar.executor.jar.options>
<!-- Filter IT -->
<sling.it.ignorelist>*.FilterIT#testShouldNotRun:test_filter</sling.it.ignorelist>
</properties>
<scm>
<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-samples.git</connection>
<developerConnection> scm:svn:https://svn.apache.org/repos/asf/sling/trunk/testing/samples/bundle-with-tests</developerConnection>
<url>https://gitbox.apache.org/repos/asf?p=sling-samples.git</url>
</scm>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>${basedir}</directory>
<includes>
<!-- sling folder is the workdir of the executable jar that we test -->
<include>sling/**</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
<exclude>derby.log</exclude>
<exclude>sling/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-runnable-jar</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<includeArtifactIds>org.apache.sling.launchpad</includeArtifactIds>
<excludeTransitive>true</excludeTransitive>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
</configuration>
</execution>
<execution>
<!--
Consider all dependencies as candidates to be installed
as additional bundles. We use system properties to define
which bundles to install in which order.
-->
<id>copy-additional-bundles</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<excludeTransitive>true</excludeTransitive>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- Find free ports to run our server -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>reserve-server-port</id>
<goals>
<goal>reserve-network-port</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<portNames>
<portName>http.port</portName>
</portNames>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<!--
TODO this is a fairly complicated setup, we might
switch to a Maven plugin using a Sling provisioning
model to start the server under test. The slingstart
plugin does this but currently requires a launchpad jar,
using a pure provisioning model startup would be more
flexible.
-->
<!-- if set, this prevents jar executor from starting Sling??
<test.server.url>${test.server.url}</test.server.url>
-->
<test.server.hostname>${test.server.hostname}</test.server.hostname>
<test.server.username>${test.server.username}</test.server.username>
<test.server.password>${test.server.password}</test.server.password>
<jar.executor.server.port>${http.port}</jar.executor.server.port>
<jar.executor.vm.options>${jar.executor.vm.options}</jar.executor.vm.options>
<jar.executor.jar.folder>${project.basedir}/target/dependency</jar.executor.jar.folder>
<jar.executor.jar.name.regexp>org.apache.sling.launchpad.*jar$</jar.executor.jar.name.regexp>
<jar.executor.work.folder>${jar.executor.work.folder}</jar.executor.work.folder>
<jar.executor.jar.options>${jar.executor.jar.options}</jar.executor.jar.options>
<additional.bundles.path>${project.build.directory}</additional.bundles.path>
<keepJarRunning>${keepJarRunning}</keepJarRunning>
<server.ready.timeout.seconds>60</server.ready.timeout.seconds>
<sling.testing.timeout.multiplier>${sling.testing.timeout.multiplier}</sling.testing.timeout.multiplier>
<server.ready.path.1>/:script src="system/sling.js"</server.ready.path.1>
<server.ready.path.2>/.explorer.html:href="/libs/sling/explorer/css/explorer.css"</server.ready.path.2>
<server.ready.path.3>/sling-test/sling/sling-test.html:Sling client library tests</server.ready.path.3>
<start.bundles.timeout.seconds>30</start.bundles.timeout.seconds>
<bundle.install.timeout.seconds>20</bundle.install.timeout.seconds>
<!--
Define additional bundles to install by specifying the beginning of their artifact name.
The bundles are installed in lexical order of these property names.
All bundles must be listed as dependencies in this pom, or they won't be installed.
-->
<sling.additional.bundle.1>org.apache.sling.junit.core</sling.additional.bundle.1>
<!-- Install this bundle for integration tests -->
<sling.additional.bundle.2>${project.artifactId}-${project.version}.jar</sling.additional.bundle.2>
<!-- Test the Filter rule -->
<sling.it.ignorelist>${sling.it.ignorelist}</sling.it.ignorelist>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
<version>2.4.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.mime</artifactId>
<version>2.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.junit.core</artifactId>
<version>1.0.14</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.rules</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.junit.teleporter</artifactId>
<version>1.0.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad</artifactId>
<version>8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>