test fixed about lasterror function name. 59/17659/3
Cedric Delamarre [Mon, 11 Jan 2016 13:00:40 +0000 (14:00 +0100)]
Change-Id: Id8eacf7829d104ecb0b5dafbc409652509a36d86

scilab/modules/functions/sci_gateway/cpp/sci_exec.cpp
scilab/modules/functions/tests/nonreg_tests/bug_2509.dia.ref
scilab/modules/functions/tests/nonreg_tests/bug_2509.tst

index 344010b..fe6f057 100644 (file)
@@ -336,6 +336,11 @@ types::Function::ReturnValue sci_exec(types::typed_list &in, int _iRetCount, typ
     }
     catch (const ast::InternalError& ie)
     {
+        if (pMacro && ConfigVariable::getLastErrorFunction() == L"")
+        {
+            ConfigVariable::setLastErrorFunction(pMacro->getName());
+        }
+
         if (bErrCatch == false)
         {
             closeFile(file, iID, wstFile, pExp);
index cfc4b19..7bcb862 100644 (file)
@@ -4,6 +4,7 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
+//
 // <-- CLI SHELL MODE -->
 // <-- Non-regression test for bug 2509 -->
 //
 // execstr forgets to store the function name and line number when in the errcatch mode
 prot=funcprot();funcprot(0);
 //uncompiled macros
-deff('foo','a=aaaa','n')
-if execstr('foo()','errcatch')<>4 then bugmes();quit;end
+deff("foo","a=aaaa","n")
+if execstr("foo()","errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then bugmes();quit;end
-try, 
-  foo();
-catch 
-  [str,n,l,f]=lasterror(%t); 
-  if l<>2|f<>'foo' then bugmes();quit;end;
+if l<>2|f<>"foo" then bugmes();quit;end
+try
+    foo();
+catch
+    [str,n,l,f]=lasterror(%t);
+    if l<>2|f<>"foo" then bugmes();quit;end;
 end
-if exec(foo,'errcatch')<>4 then bugmes();quit;end
-a=aaaa
+if exec(foo,"errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then bugmes();quit;end
+if l<>2|f<>"foo" then bugmes();quit;end
 //compiled macros
-deff('foo','a=aaaa')
-if execstr('foo()','errcatch')<>4 then bugmes();quit;end
+deff("foo","a=aaaa")
+if execstr("foo()","errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then bugmes();quit;end
-try, 
-  foo();
-catch 
-  [str,n,l,f]=lasterror(%t); 
-  if l<>2|f<>'foo' then bugmes();quit;end;
+if l<>2|f<>"foo" then bugmes();quit;end
+try
+    foo();
+catch
+    [str,n,l,f]=lasterror(%t);
+    if l<>2|f<>"foo" then bugmes();quit;end;
 end
-if exec(foo,'errcatch')<>4 then bugmes();quit;end
+if exec(foo,"errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then bugmes();quit;end
+if l<>2|f<>"foo" then bugmes();quit;end
 //scripts
-foo=['a=1';'a=aaaa'];
-if execstr(foo,'errcatch')<>4 then bugmes();quit;end
+foo=["a=1";"a=aaaa"];
+if execstr(foo,"errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'' then bugmes();quit;end
+if l<>2|f<>"" then bugmes();quit;end
 //complex situations
-deff('foo','execstr(''a=aaaa'')')
-if execstr('foo()','errcatch')<>4 then bugmes();quit;end
+deff("foo","execstr(''a=aaaa'')")
+if execstr("foo()","errcatch")==0 then bugmes();quit;end
 [str,n,l,f]=lasterror(%t);
-if l<>1|f<>'' then bugmes();quit;end
+if l<>1|f<>"foo" then bugmes();quit;end
 funcprot(prot);
index a758f5d..148a7ea 100644 (file)
@@ -4,11 +4,8 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
-
-// <-- NOT FIXED -->
 //
 // <-- CLI SHELL MODE -->
-
 // <-- Non-regression test for bug 2509 -->
 //
 // <-- Bugzilla URL -->
@@ -21,50 +18,50 @@ prot=funcprot();funcprot(0);
 
 
 //uncompiled macros
-deff('foo','a=aaaa','n')
-if execstr('foo()','errcatch')<>4 then pause,end
+deff("foo","a=aaaa","n")
+if execstr("foo()","errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then pause,end
+if l<>2|f<>"foo" then pause,end
 
-try, 
-  foo();
-catch 
-  [str,n,l,f]=lasterror(%t); 
-  if l<>2|f<>'foo' then pause,end;
+try
+    foo();
+catch
+    [str,n,l,f]=lasterror(%t);
+    if l<>2|f<>"foo" then pause,end;
 end
 
-if exec(foo,'errcatch')<>4 then pause,end
+if exec(foo,"errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then pause,end
+if l<>2|f<>"foo" then pause,end
 
 //compiled macros
-deff('foo','a=aaaa')
-if execstr('foo()','errcatch')<>4 then pause,end
+deff("foo","a=aaaa")
+if execstr("foo()","errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then pause,end
+if l<>2|f<>"foo" then pause,end
 
-try, 
-  foo();
-catch 
-  [str,n,l,f]=lasterror(%t); 
-  if l<>2|f<>'foo' then pause,end;
+try
+    foo();
+catch
+    [str,n,l,f]=lasterror(%t);
+    if l<>2|f<>"foo" then pause,end;
 end
 
-if exec(foo,'errcatch')<>4 then pause,end
+if exec(foo,"errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'foo' then pause,end
+if l<>2|f<>"foo" then pause,end
 
 //scripts
-foo=['a=1';'a=aaaa'];
-if execstr(foo,'errcatch')<>4 then pause,end
+foo=["a=1";"a=aaaa"];
+if execstr(foo,"errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>2|f<>'' then pause,end
+if l<>2|f<>"" then pause,end
 
 //complex situations
-deff('foo','execstr(''a=aaaa'')')
-if execstr('foo()','errcatch')<>4 then pause,end
+deff("foo","execstr(''a=aaaa'')")
+if execstr("foo()","errcatch")==0 then pause,end
 [str,n,l,f]=lasterror(%t);
-if l<>1|f<>'' then pause,end
+if l<>1|f<>"foo" then pause,end
 
 
 funcprot(prot);