blob: 408fbd60153625b9f35f2e18ff8f736f52765c9f [file] [log] [blame]
/*
*
* Derby - Class org.apache.derbyTesting.functionTests.tests.lang.LangScripts
*
* 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.
*/
package org.apache.derbyTesting.functionTests.tests.lang;
import junit.framework.Test;
import org.apache.derbyTesting.functionTests.util.ScriptTestCase;
import org.apache.derbyTesting.junit.BaseTestSuite;
import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
import org.apache.derbyTesting.junit.JDBC;
import org.apache.derbyTesting.junit.TestConfiguration;
/**
* LangScripts runs SQL scripts (.sql files) in the lang package
* and compares the output to a canon file in the
* standard master package.
* <BR>
* Its suite() method returns a set of tests where each test is an instance of
* this class for an individual script wrapped in a clean database decorator.
* <BR>
* It can also be used as a command line program to run one or more
* language based SQL scripts as tests.
*
*/
public final class LangScripts extends ScriptTestCase {
/**
* Language SQL scripts (.sql files) that run under Derby's client
* and emebedded configurations. SQL tests are put in this category
* if they are likely to have some testing of the protocol,
* typically tests related to data types.
*
*/
private static final String[] CLIENT_AND_EMBEDDED_TESTS = {
"LOB",
"bit",
"bit2",
"stringtypes",
"holdCursorIJ"
};
/**
* Language SQL scripts (.sql files) that only run in embedded.
* Most tests that are testing SQL functionality can just
* run in emebdded.
*/
private static final String[] EMBEDDED_TESTS = {
"aggregate",
"cast",
"comparisons",
"delete",
"derived",
"depend",
"ejbql",
"floattypes",
"functions",
"identifier",
"implicitConversions",
"innerjoin",
"insert",
"intersect",
"joins",
"logop",
"modifyColumn",
"nonreserved",
"orderby",
"positionedDelUpd",
"refActions1",
"reopenScan",
"schemas",
"select",
"synonym",
"tempRestrictions",
"union",
"update",
"valuesclause",
"xplain",
};
/**
* Tests that run in embedded and require JDBC3_TESTS
* (ie. can not run on JSR169).
*/
private static final String[] JDBC3_TESTS = {
};
/**
* Run a set of language SQL scripts (.sql files) passed in on the
* command line. Note the .sql suffix must not be provided as
* part of the script name.
* <code>
* example
* java org.apache.derbyTesting.functionTests.tests.lang.LangScripts case union
* </code>
*/
public static void main(String[] args)
{
junit.textui.TestRunner.run(getSuite(args));
}
/**
* Return the suite that runs all the langauge SQL scripts.
*/
public static Test suite() {
BaseTestSuite suite = new BaseTestSuite("LangScripts");
suite.addTest(getSuite(CLIENT_AND_EMBEDDED_TESTS));
suite.addTest(getSuite(EMBEDDED_TESTS));
if (JDBC.vmSupportsJDBC3())
suite.addTest(getSuite(JDBC3_TESTS));
// Set up the scripts run with the network client
BaseTestSuite clientTests = new BaseTestSuite("LangScripts:client");
clientTests.addTest(getSuite(CLIENT_AND_EMBEDDED_TESTS));
Test client = TestConfiguration.clientServerDecorator(clientTests);
// add those client tests into the top-level suite.
suite.addTest(client);
return suite;
}
/*
* A single JUnit test that runs a single language SQL script.
*/
private LangScripts(String langTest){
super(langTest);
}
/**
* Return a suite of language SQL tests from the list of
* script names. Each test is surrounded in a decorator
* that cleans the database.
*/
private static Test getSuite(String[] list)
{
BaseTestSuite suite = new BaseTestSuite("SQL scripts");
for (int i = 0; i < list.length; i++)
suite.addTest(
new CleanDatabaseTestSetup(
new LangScripts(list[i])));
return getIJConfig(suite);
}
}