# 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
#
#     https://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.

jdo.tck.cfglist = \
                 runonce.conf \
                 instancecallbacks.conf \
                 jdohelper.conf \
                 pm.conf \
                 pmf.conf \
                 detach.conf \
                 embeddedInheritance.conf \
                 enhancement.conf \
                 extents.conf \
                 fetchplan.conf \
                 fetchgroup.conf \
                 converter.conf \
                 lifecycle.conf \
                 models.conf \
                 models1.conf \
                 query.conf \
                 jdoql.conf \
                 jdoql1.conf \
                 transactions.conf \
                 companyNoRelationships.conf \
                 companyEmbedded.conf \
                 company1-1Relationships.conf \
                 company1-MRelationships.conf \
                 companyM-MRelationships.conf \
                 companyAllRelationships.conf \
                 companyMapWithoutJoin.conf \
                 companyListWithoutJoin.conf \
                 companyPMClass.conf \
                 companyPMInterface.conf \
                 companyAnnotated1-1RelationshipsFCPM.conf \
                 companyAnnotated1-MRelationshipsFCPM.conf \
                 companyAnnotatedAllRelationshipsFCConcrete.conf \
                 companyAnnotatedAllRelationshipsFCPM.conf \
                 companyAnnotatedAllRelationshipsPCConcrete.conf \
                 companyAnnotatedAllRelationshipsJPAConcrete.conf \
                 companyAnnotatedAllRelationshipsJPAPM.conf \
                 companyAnnotatedAllRelationshipsPCPM.conf \
                 companyAnnotatedAllRelationshipsPIPM.conf \
                 companyAnnotatedEmbeddedFCPM.conf \
                 companyAnnotatedM-MRelationshipsFCConcrete.conf \
                 companyAnnotatedM-MRelationshipsFCPM.conf \
                 companyAnnotatedNoRelationshipsFCConcrete.conf \
                 companyAnnotatedNoRelationshipsFCPM.conf \
                 companyAnnotatedNoRelationshipsPCConcrete.conf \
                 companyAnnotatedEmbeddedJPAConcrete.conf \
                 companyAnnotatedEmbeddedJPAPM.conf \
                 companyAnnotatedNoRelationshipsPCPM.conf \
                 companyAnnotatedNoRelationshipsPIPM.conf \
                 companyOverrideAnnotatedAllRelationshipsFCPM.conf \
                 inheritance1.conf \
                 inheritance2.conf \
                 inheritance3.conf \
                 inheritance4.conf \
                 relationshipAllRelationships.conf \
                 relationshipNoRelationships.conf \
                 schemaAttributeClass.conf \
                 schemaAttributeOrm.conf \
                 schemaAttributePackage.conf \
                 compoundIdentity.conf \
                 throwOnUnknownStandardProperties.conf
