Author: cbegin
Date: Wed Jun 10 03:34:14 2009
New Revision: 783195

URL: http://svn.apache.org/viewvc?rev=783195&view=rev
Log:
Added missing EOL terminator to script runner.

Added:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java?rev=783195&r1=783194&r2=783195&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
 Wed Jun 10 03:34:14 2009
@@ -145,6 +145,9 @@
       if (!autoCommit && !conn.getAutoCommit()) {
         conn.commit();
       }
+      if (command != null && command.toString().trim().length() > 0) {
+        throw new IOException("Line missing end-of-line terminator 
("+delimiter+") => " + command);
+      }
     } catch (SQLException e) {
       e.fillInStackTrace();
       printlnError("Error executing: " + command);

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql?rev=783195&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
 Wed Jun 10 03:34:14 2009
@@ -0,0 +1,12 @@
+drop table product;
+
+create table product (
+    productid varchar(10) not null,
+    category varchar(10) not null,
+    name varchar(80) null,
+    descn varchar(255) null,
+    constraint pk_product primary key (productid),
+        constraint fk_product_1 foreign key (category)
+        references category (catid)
+)
+

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java?rev=783195&r1=783194&r2=783195&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
 Wed Jun 10 03:34:14 2009
@@ -4,11 +4,11 @@
 import org.apache.ibatis.datasource.pooled.PooledDataSource;
 import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
 import org.apache.ibatis.io.Resources;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
 import org.junit.Test;
 
 import javax.sql.DataSource;
-import java.io.IOException;
+import java.io.*;
 import java.sql.*;
 import java.util.*;
 
@@ -44,6 +44,28 @@
     assertProductsTableExistsAndLoaded();
   }
 
+  @Test
+  public void shouldReturnWarningIfEndOfLineTerminatorNotFound() throws 
Exception {
+    DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
+    Connection conn = ds.getConnection();
+    ScriptRunner runner = new ScriptRunner(conn);
+    runner.setAutoCommit(true);
+    runner.setStopOnError(false);
+    runner.setErrorLogWriter(null);
+    runner.setLogWriter(null);
+
+    String resource = "org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql";
+    Reader reader = Resources.getResourceAsReader(resource);
+
+    try {
+      runner.runScript(reader);
+      fail("Expected script runner to fail due to missing end of line 
terminator.");
+    } catch (Exception e) {
+      assertTrue(e.getMessage().contains("end-of-line terminator"));
+    }
+    assertProductsTableNotExists();
+  }
+
   private void runJPetStoreScripts(ScriptRunner runner) throws IOException, 
SQLException {
     runScript(runner, JPETSTORE_DDL);
     runScript(runner, JPETSTORE_DATA);
@@ -61,4 +83,19 @@
     }
   }
 
+  private void assertProductsTableNotExists() throws IOException, SQLException 
{
+    PooledDataSource ds = createPooledDataSource(JPETSTORE_PROPERTIES);
+    try {
+      Connection conn = ds.getConnection();
+      SqlRunner executor = new SqlRunner(conn);
+      List<Map<String, Object>> products = executor.selectAll("SELECT * FROM 
PRODUCT");
+      assertEquals(16, products.size());
+    } catch (Exception e) {
+      return; // ignore, exception expected
+    } finally {
+      ds.forceCloseAll();
+    }
+    fail("Expected products table to NOT exist.");
+  }
+
 }


Reply via email to