# 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.source=1.8
javadoc.arch=${basedir}/arch.xml
javadoc.apichanges=${basedir}/apichanges.xml

spec.version.base=1.85.0
#test configs
test.config.find.includes=\
    **/FindUsagesSuite.class

test.config.rename.includes=\
    **/RenameTest.class

test.config.move.includes=\
    **/MoveTest.class

test.config.performance.includes=\
    **/MoveClassPerfTest.class, \
    **/FindUsagesPerfTest.class

test.config.all.includes=\
    **/FindUsagesClassTest.class,\
    **/FindUsagesMethodTest.class,\
    **/MoveTest.class,\
    **/RenameTest.class,\
    **/IntroduceSuite.class

test.config.jet-main.includes=\
    org/netbeans/modules/refactoring/java/test/InnerToOutterTest.class,\
    org/netbeans/modules/refactoring/java/test/IntroduceParameterTest.class,\
    org/netbeans/modules/refactoring/java/test/InlineTest.class,\
    org/netbeans/modules/refactoring/java/test/RenameTest.class,\
    org/netbeans/modules/refactoring/java/test/CopyClassTest.class,\
    org/netbeans/modules/refactoring/java/test/ExtractSuperclassTest.class,\
    org/netbeans/modules/refactoring/java/test/ExtractInterfaceTest.class,\
    org/netbeans/modules/refactoring/java/test/ChangeParametersTest.class,\
    org/netbeans/modules/refactoring/java/test/MoveJavaFileTest.class,\
    org/netbeans/modules/refactoring/java/test/MoveMethodTest.class,\
    org/netbeans/modules/refactoring/java/test/MoveClassTest.class,\
    org/netbeans/modules/refactoring/java/test/MoveFieldTest.class,\
    org/netbeans/modules/refactoring/java/test/UseSuperTypeTest.class,\
    org/netbeans/modules/refactoring/java/test/PullUpTest.class,\
    org/netbeans/modules/refactoring/java/test/PushDownTest.class,\
    org/netbeans/modules/refactoring/java/test/FindUsagesTest.class,\
    org/netbeans/modules/refactoring/java/test/EncapsulateFieldsTest.class,\
    org/netbeans/modules/refactoring/java/ui/JavaRefactoringActionsProviderTest.class,\
    org/netbeans/modules/refactoring/java/ui/MoveRefactoringActionTest.class,\
    org/netbeans/modules/refactoring/java/test/IntroduceLocalExtensionTest.class

test.config.stableBTD.includes=org/netbeans/modules/refactoring/java/ui/*Test.class
test.config.stableBTD.excludes=org/netbeans/modules/test/*

requires.nb.javac=true
test.unit.cp.extra=../java.source.nbjavac/build/test-nb-javac/cluster/modules/org-netbeans-modules-java-source-nbjavac-test.jar

# remove default compiler JMS flags so that we don't get "Unknown module" warnings due to --limit-modules
jms-compiler.flags.jvm=
test.jms.flags=--limit-modules=java.base,java.logging,java.xml,java.prefs,java.desktop,java.management,java.instrument,jdk.zipfs,java.scripting,java.naming
test.bootclasspath.prepend.args=-Dno.netbeans.bootclasspath.prepend.needed=true
