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


# 'error: exporting a package from system module java.desktop is not allowed with --release'
javac.source=17
javac.target=17

absolutelayout.javac.release=8
extra.module.files=modules/ext/AbsoluteLayout.jar

# see o.n.m.form.fakepeer package
javac.compilerargs=--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED

javadoc.arch=${basedir}/arch.xml
spec.version.base=1.90.0
test-unit-sys-prop.org.netbeans.modules.form.layoutdesign.test=0
jnlp.verify.excludes=sources/org/netbeans/lib/awtextra/AbsoluteLayout.java,sources/org/netbeans/lib/awtextra/AbsoluteConstraints.java,sources/readme.txt


test.config.templates.includes=org/netbeans/qa/form/TemplateTest.class

test.config.undoredo.includes=org/netbeans/qa/form/undoredo/BaseTest.class
test.config.actions.includes=org/netbeans/qa/form/actions/actionTest.class
test.config.beans.includes=org/netbeans/qa/form/beans/AddBeanFormsTest.class,org/netbeans/qa/form/beans/AddBeanFormsTest.class
test.config.binding.includes=org/netbeans/qa/form/binding/SimpleBeansBindingTest.class
test.config.databinding.includes=org/netbeans/qa/form/databinding/MasterDetailFormTest.class
test.config.issues.includes=org/netbeans/qa/form/issues/CutAndPasteTest.class
test.config.visual.includes=org/netbeans/qa/form/visualDevelopment/*.*
test.config.formating.includes=org/netbeans/test/editor/BasicTest.class
test.config.refactoring.includes=org/netbeans/qa/form/refactoring/MoveFormClassTest.class,org/netbeans/qa/form/refactoring/RenameComponentVariableTest.class,org/netbeans/qa/form/refactoring/RenameFormClassTest.class,org/netbeans/qa/form/refactoring/RenamePackageComponentAndCustomCodeTest.class


test.config.stable.includes=org/netbeans/qa/form/actions/actionsTest.class,org/netbeans/qa/form/beans/AddBeanFormsTest.class,org/netbeans/qa/form/beans/AddAndRemoveBeansTest.class,org/netbeans/qa/form/binding/SimpleBeansBindingTest.class,org/netbeans/qa/form/issues/CutAndPasteTest.class,org/netbeans/qa/form/gridbagcustomizer/GridBagCustomizerTest.class,org/netbeans/qa/form/refactoring/MoveFormClassTest.class,org/netbeans/qa/form/refactoring/RenameFormClassTest.class,org/netbeans/qa/form/refactoring/RenamePackageComponentAndCustomCodeTest.class,org/netbeans/qa/form/undoredo/BaseTest.class,org/netbeans/qa/form/visualDevelopment/AddComponents_AWT.class,org/netbeans/qa/form/visualDevelopment/AddComponents_SWING.class,org/netbeans/qa/form/visualDevelopment/FormGenerateCodeTest.class,org/netbeans/qa/form/visualDevelopment/MenuAndPopupMenuTest.class,org/netbeans/qa/form/databinding/MasterDetailFormTest.class,org/netbeans/qa/form/options/AutomaticInternationalizationTest.class,org/netbeans/qa/form/options/GeneratedComponentsDestionationTest.class,org/netbeans/qa/form/gaps/GapsTest.class

test.config.optop.includes=org/netbeans/qa/form/options/AutomaticInternationalizationTest.class

test.config.gaps.includes=org/netbeans/qa/form/gaps/GapsTest.class

test.config.validation.includes=org/netbeans/qa/form/visualDevelopment/AddComponents_SWING.class

test.config.personal.includes=**/actionsTest.class, **/OpenTempl_defaultPackTest.class

