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

is.autoload=true
cp.extra=${tools.jar}:${jpda.classes.dir}
#cp.extra=${java.home}/../lib/tools.jar
javac.compilerargs=-Xlint:unchecked
javac.release=17
javadoc.arch=${basedir}/arch.xml
jpda.classes.dir=${build.dir}/jpda/classes/
requires.nb.javac=true
spec.version.base=1.142.0
test-unit-sys-prop.test.dir.src=${basedir}/test/unit/src/
test-unit-sys-prop.netbeans.user=${basedir}/work/nb_user_dir
test.unit.cp.extra=../java.source.nbjavac/build/test-nb-javac/cluster/modules/org-netbeans-modules-java-source-nbjavac-test.jar

test.jms.flags=\
 --add-opens=jdk.jdi/com.sun.jdi=ALL-UNNAMED

test.config.default.excludes=\
    **/AsynchStepTest.class,\
    **/BreakpointsClassFilterTest.class,\
    **/BreakpointsDeactivationTest.class,\
    **/ClassBasedBreakpointTest.class,\
    **/ConcurrencyTest.class,\
    **/ConnectorsTest.class,\
    **/EvaluationTest.class,\
    **/HeapWalkingTest.class,\
    **/JDIWrappersTest.class,\
    **/JPDAWrappersTest.class,\
    **/JPDAClassTypeTest.class,\
    **/JspLineBreakpointTest.class,\
    **/LineBreakpointTest.class,\
    **/ListeningDICookieTest.class,\
    **/MirrorValuesTest.class,\
    **/MirrorAndDeadlockTest.class,\
    **/MonitorAndDeadlockTest.class,\
    **/StepTest.class,\
    **/ThreadBreakpointTest.class

