#    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.

-include: base-itest.bndrun
#-runjdb: 8000

-runrequires: \
	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.owb)'

-runblacklist: \
	osgi.identity;filter:='(osgi.identity=*weld*)'
-runbundles: \
	assertj-core;version='[3.16.1,3.16.2)',\
	javax.servlet.jsp-api;version='[2.3.3,2.3.4)',\
	openwebbeans-impl;version='[2.0.13,2.0.14)',\
	openwebbeans-spi;version='[2.0.13,2.0.14)',\
	openwebbeans-web;version='[2.0.13,2.0.14)',\
	org.apache.aries.cdi.extender;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.jaxrs;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.mp-config;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.mp-jwt-auth;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.mp-jwt-auth-tests;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.servlet.common;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.servlet.owb;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extension.spi;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.extra;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.owb;version='[1.1.2,1.1.3)',\
	org.apache.aries.cdi.spi;version='[1.1.2,1.1.3)',\
	org.apache.aries.jax.rs.whiteboard;version='[1.0.7,1.0.8)',\
	org.apache.aries.spifly.dynamic.framework.extension;version='[1.3.0,1.3.1)',\
	org.apache.commons.io;version='[2.6.0,2.6.1)',\
	org.apache.felix.configadmin;version='[1.9.10,1.9.11)',\
	org.apache.felix.converter;version='[1.0.12,1.0.13)',\
	org.apache.felix.gogo.command;version='[1.1.0,1.1.1)',\
	org.apache.felix.gogo.runtime;version='[1.1.2,1.1.3)',\
	org.apache.felix.gogo.shell;version='[1.1.2,1.1.3)',\
	org.apache.felix.http.jetty;version='[4.0.14,4.0.15)',\
	org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
	org.apache.geronimo.specs.geronimo-annotation_1.3_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-atinject_1.0_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-el_2.2_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-interceptor_1.2_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-jaxrs_2.1_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-jcdi_2.0_spec;version='[1.1.0,1.1.1)',\
	org.apache.geronimo.specs.geronimo-json_1.1_spec;version='[1.3.0,1.3.1)',\
	org.apache.geronimo.specs.geronimo-jsonb_1.0_spec;version='[1.2.0,1.2.1)',\
	org.apache.johnzon.core;version='[1.2.3,1.2.4)',\
	org.apache.johnzon.jsonb;version='[1.2.3,1.2.4)',\
	org.apache.johnzon.mapper;version='[1.2.3,1.2.4)',\
	org.apache.johnzon.osgi;version='[1.2.3,1.2.4)',\
	org.apache.servicemix.bundles.junit;version='[4.12.0,4.12.1)',\
	org.apache.xbean.asm7-shaded;version='[4.13.0,4.13.1)',\
	org.apache.xbean.bundleutils;version='[4.15.0,4.15.1)',\
	org.apache.xbean.finder-shaded;version='[4.13.0,4.13.1)',\
	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
	org.osgi.service.jaxrs;version='[1.0.0,1.0.1)',\
	org.osgi.test.common;version='[0.9.0,0.9.1)',\
	org.osgi.test.junit4;version='[0.9.0,0.9.1)',\
	org.osgi.util.function;version='[1.1.0,1.1.1)',\
	org.osgi.util.promise;version='[1.1.0,1.1.1)'
