You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by xu...@apache.org on 2011/04/23 01:31:38 UTC

svn commit: r1096088 - in /pig/branches/branch-0.9: CHANGES.txt src/org/apache/pig/scripting/ScriptEngine.java test/org/apache/pig/test/TestPigRunner.java

Author: xuefu
Date: Fri Apr 22 23:31:38 2011
New Revision: 1096088

URL: http://svn.apache.org/viewvc?rev=1096088&view=rev
Log:
PIG-2006: Regression: NPE when Pig processes an empty script file

Modified:
    pig/branches/branch-0.9/CHANGES.txt
    pig/branches/branch-0.9/src/org/apache/pig/scripting/ScriptEngine.java
    pig/branches/branch-0.9/test/org/apache/pig/test/TestPigRunner.java

Modified: pig/branches/branch-0.9/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/CHANGES.txt?rev=1096088&r1=1096087&r2=1096088&view=diff
==============================================================================
--- pig/branches/branch-0.9/CHANGES.txt (original)
+++ pig/branches/branch-0.9/CHANGES.txt Fri Apr 22 23:31:38 2011
@@ -32,6 +32,8 @@ PIG-1876: Typed map for Pig (daijy)
 
 IMPROVEMENTS
 
+PIG-2006: Regression: NPE when Pig processes an empty script file (xuefu)
+
 PIG-2000: Pig gives incorrect error message dealing with scalar projection (xuefu)
 
 PIG-2002: Regression: Pig gives error "Projection with nothing to reference!" for a valid query (xuefu)

Modified: pig/branches/branch-0.9/src/org/apache/pig/scripting/ScriptEngine.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/src/org/apache/pig/scripting/ScriptEngine.java?rev=1096088&r1=1096087&r2=1096088&view=diff
==============================================================================
--- pig/branches/branch-0.9/src/org/apache/pig/scripting/ScriptEngine.java (original)
+++ pig/branches/branch-0.9/src/org/apache/pig/scripting/ScriptEngine.java Fri Apr 22 23:31:38 2011
@@ -83,6 +83,8 @@ public abstract class ScriptEngine {
          * @param firstLine The first line of the file (possibly containing #!...)
          */
         public boolean accepts(String file, String firstLine) {
+            if( firstLine == null )
+            	return false;
             
             for (String shebang : shebangs) {
                 Pattern p = Pattern.compile("^#!.*/" + shebang + "\\s*$");
@@ -109,6 +111,8 @@ public abstract class ScriptEngine {
     private static final Pattern shebangPattern = Pattern.compile("^#!.+");
     
     private static boolean declaresShebang(String firstLine) {
+    	if( firstLine == null )
+    		return false;
         return shebangPattern.matcher(firstLine).matches();
     }
     

Modified: pig/branches/branch-0.9/test/org/apache/pig/test/TestPigRunner.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.9/test/org/apache/pig/test/TestPigRunner.java?rev=1096088&r1=1096087&r2=1096088&view=diff
==============================================================================
--- pig/branches/branch-0.9/test/org/apache/pig/test/TestPigRunner.java (original)
+++ pig/branches/branch-0.9/test/org/apache/pig/test/TestPigRunner.java Fri Apr 22 23:31:38 2011
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru
 
 import java.io.File;
 import java.io.FileWriter;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -600,6 +601,22 @@ public class TestPigRunner {
         }
     }
     
+    @Test // PIG-2006
+    public void testEmptyFile() throws IOException {
+        File f1 = new File("myscript.pig");
+        f1.deleteOnExit();
+        
+        FileWriter fw1 = new FileWriter(f1);
+        fw1.close();
+
+        String[] args = { "-x", "local", "-c", "myscript.pig" };
+        PigStats stats = PigRunner.run(args, null);
+       
+        Assert.assertTrue(stats.isSuccessful());
+        Assert.assertEquals( 0, stats.getReturnCode() );
+        Assert.assertEquals( null, stats.getErrorMessage() );
+    }
+    
     @Test
     public void returnCodeTest() throws Exception {
         PrintWriter w = new PrintWriter(new FileWriter(PIG_FILE));