Attached is a patch that fixes 2 test cases of the JDBC test

suite. This reduces the number of failures from 9 to 7.

Both ConnectionTest and JBuilderTest did not create their own
tables, which caused these test cases to fail with "relation ...
does not exist". It appears these test cases relied on tables
created by the example code elsewhere in the source tree. I've
added the necessary "create table" and "drop table" statements
to the test cases, using the column definitions from the example
code.

While working on that I modified the helper method createTable
in JDBC2Tests.java to take a table parameter, rather than using
table names passed via the properties in build.xml. I'm not sure
what that was good for, and in fact, except for the default
table name "jdbctest", this functionality wasn't used at all.

Ren? Pijlman
This commit is contained in:
Bruce Momjian 2001-09-07 22:17:48 +00:00
parent 7066253ab5
commit b6385efb79
3 changed files with 77 additions and 44 deletions

View File

@ -59,49 +59,38 @@ public class JDBC2Tests extends TestSuite {
}
}
/**
* Helper - creates a test table for use by a test
*/
public static void createTable(Connection conn,String columns) {
try {
Statement st = conn.createStatement();
/**
* Helper - creates a test table for use by a test
*/
public static void createTable(
Connection conn, String table, String columns) {
try {
Statement st = conn.createStatement();
try {
try {
st.executeUpdate("drop table " + table);
} catch(SQLException se) {
// Intentionally ignore exception
}
// Ignore the drop
try {
st.executeUpdate("drop table "+getTableName());
} catch(SQLException se) {
}
// Now create the table
st.executeUpdate( "create table " + table + " (" + columns +
")" );
} finally {
st.close();
}
} catch(SQLException ex) {
TestCase.assert(ex.getMessage(),false);
}
}
// Now create the table
st.executeUpdate("create table "+getTableName()+" ("+columns+")");
st.close();
} catch(SQLException ex) {
TestCase.assert(ex.getMessage(),false);
}
}
/**
* Variant used when more than one table is required
*/
public static void createTable(Connection conn,String id,String columns) {
try {
Statement st = conn.createStatement();
// Ignore the drop
try {
st.executeUpdate("drop table "+getTableName(id));
} catch(SQLException se) {
}
// Now create the table
st.executeUpdate("create table "+getTableName(id)+" ("+columns+")");
st.close();
} catch(SQLException ex) {
TestCase.assert(ex.getMessage(),false);
}
}
// Create the test table whose name is passed via the properties
// (see ../../../build.xml). It appears that the original author of
// this test suite intended to specify all test table names via the
// properties, but this was never fully implemented.
public static void createTable(Connection conn, String columns) {
createTable(conn, getTableName(), columns);
}
/**
* Helper - generates INSERT SQL - very simple

View File

@ -10,7 +10,7 @@ import java.sql.*;
*
* PS: Do you know how difficult it is to type on a train? ;-)
*
* $Id: ConnectionTest.java,v 1.2 2001/02/13 16:39:05 peter Exp $
* $Id: ConnectionTest.java,v 1.3 2001/09/07 22:17:48 momjian Exp $
*/
public class ConnectionTest extends TestCase {
@ -22,6 +22,30 @@ public class ConnectionTest extends TestCase {
super(name);
}
// Set up the fixture for this testcase: the tables for this test.
protected void setUp() throws Exception {
Connection con = JDBC2Tests.openDB();
JDBC2Tests.createTable( con, "test_a",
"imagename name,image oid,id int4" );
JDBC2Tests.createTable( con, "test_c",
"source text,cost money,imageid int4" );
JDBC2Tests.closeDB(con);
}
// Tear down the fixture for this test case.
protected void tearDown() throws Exception {
Connection con = JDBC2Tests.openDB();
Statement stmt = con.createStatement();
stmt.executeUpdate("DROP TABLE test_a");
stmt.executeUpdate("DROP TABLE test_c");
stmt.close();
JDBC2Tests.closeDB(con);
}
/**
* Tests the two forms of createStatement()
*/
@ -234,4 +258,4 @@ public class ConnectionTest extends TestCase {
assert(ex.getMessage(),false);
}
}
}
}

View File

@ -6,7 +6,7 @@ import java.sql.*;
import java.math.BigDecimal;
/**
* $Id: JBuilderTest.java,v 1.1 2001/02/13 16:39:05 peter Exp $
* $Id: JBuilderTest.java,v 1.2 2001/09/07 22:17:48 momjian Exp $
*
* Some simple tests to check that the required components needed for JBuilder
* stay working
@ -18,6 +18,26 @@ public class JBuilderTest extends TestCase {
super(name);
}
// Set up the fixture for this testcase: the tables for this test.
protected void setUp() throws Exception {
Connection con = JDBC2Tests.openDB();
JDBC2Tests.createTable( con, "test_c",
"source text,cost money,imageid int4" );
JDBC2Tests.closeDB(con);
}
// Tear down the fixture for this test case.
protected void tearDown() throws Exception {
Connection con = JDBC2Tests.openDB();
Statement stmt = con.createStatement();
stmt.executeUpdate("DROP TABLE test_c");
stmt.close();
JDBC2Tests.closeDB(con);
}
/**
* This tests that Money types work. JDBCExplorer barfs if this fails.
*/