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

javac.compilerargs=-Xlint -Xlint:-serial
javac.source=1.6

test.timeout=2400000

test.config.stable.includes=\
    **/FromDBTest.class,\
    **/CRUDTest.class,\
    **/PatternsTest.class,\
    **/RestCStubsTest.class,\
    **/RestNodeTest.class,\
    **/RestSamplesTest*
test.config.validation.includes=\
    **/FromDBTest.class,\
    **/CRUDTest.class,\
    **/PatternsTest.class,\
    **/RestCStubsTest.class,\
    **/RestNodeTest.class,\
    **/RestSamplesTest*

test.config.antjee5.includes=\
    **/AntJEE5Suite.class
test.config.antjee6.includes=\
    **/AntJEE6Suite.class
test.config.mavenjee5.includes=\
    **/MvnJEE5Suite.class
test.config.mavenjee6.includes=\
    **/MvnJEE5Suite.class
