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

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
