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

org.jboss.jsr299.tck.spi.Managers=org.apache.webbeans.test.tck.ManagersImpl
org.jboss.jsr299.tck.spi.Beans=org.apache.webbeans.test.tck.BeansImpl
org.jboss.jsr299.tck.spi.Contexts=org.apache.webbeans.test.tck.ContextsImpl
org.jboss.jsr299.tck.spi.EL=org.apache.webbeans.test.tck.ELImpl
org.jboss.testharness.spi.StandaloneContainers=org.apache.webbeans.test.tck.StandaloneContainersImpl

#org.jboss.testharness.standalone=true
#org.jboss.testharness.runIntegrationTests=false

#org.jboss.testharness.api.TestLauncher=org.jboss.testharness.impl.runner.servlet.ServletTestLauncher
