bug 4608
Allan CORNET [Thu, 2 Jul 2009 07:50:26 +0000 (09:50 +0200)]
scilab/CHANGES_5.2.X
scilab/modules/functions/macros/get_function_path.sci
scilab/modules/functions/tests/nonreg_tests/bug_4608.dia.ref [new file with mode: 0644]
scilab/modules/functions/tests/nonreg_tests/bug_4608.tst [new file with mode: 0644]

index 73d43e4..75615d0 100644 (file)
@@ -271,6 +271,8 @@ Bug fixes:
 
 * bug 4606 fixed - example of 'link' in help does not work
 
+* bug 4608 fixed - get_function_path returns a non-consistent path.
+
 * bug 4611 fixed - what function doesn't returns a complete list of functions.
 
 * bug 4626 fixed - when using the CLI version, completion make Scilab crash
index ef3f5d7..c1169aa 100644 (file)
@@ -1,5 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) INRIA
+// Copyright (C) DIGITEO - 2009 - Allan CORNET
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -7,21 +8,35 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function path=get_function_path(name)
-libname=whereis(name)
-if libname==[] then
-  warning(" """+name +'"" is not a library function')
-  path=[]
-else
-  execstr('t=string('+libname+')')
-  path=t(1)+name+'.sci'
-  if strindex(path,['SCI/','SCI\'])==1 then
-    path=SCI+part(path,4:length(path))
+function path = get_function_path(name)
+
+  if type(name) <> 10 then 
+    error(999,msprintf(_("%s: Wrong type for input argument #%d: A string expected.\n"),'get_function_path',1));
+  end
+
+  if size(name,'*') <> 1 then 
+    error(999,msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),'get_function_path',1));
   end
-  if fileinfo(path)==[] then
-    warning(msprintf(gettext("%s: There is no file named %s.sci in the library directory %s.\n"),"get_function_path",name,t(1)))
-    path=[]
+
+  libname = whereis(name);
+  if libname == [] then
+    warning(" """+ name +'"" is not a library function');
+    path = [];
+  else
+    execstr('t=string(' + libname + ')');
+    path = t(1) + name + '.sci';
+
+    if strindex(path,['SCI/','SCI\']) == 1 then
+      path = SCI + part(path,4:length(path));
+    end
+
+    if fileinfo(path) == [] then
+      warning(msprintf(gettext("%s: There is no file named %s.sci in the library directory %s.\n"),"get_function_path",name,t(1)));
+      path = [];
+    else
+      path = pathconvert(path, %f);
+    end
+
   end
-end
 endfunction
 
diff --git a/scilab/modules/functions/tests/nonreg_tests/bug_4608.dia.ref b/scilab/modules/functions/tests/nonreg_tests/bug_4608.dia.ref
new file mode 100644 (file)
index 0000000..93a2021
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 4608 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4608
+//
+// <-- Short Description -->
+// get_function_path returns a non-consistent path
+// ver is in "core" module
+r = get_function_path('ver');
+ref = pathconvert(SCI + '/modules/core/macros/ver.sci',%f);
+if r <> ref then bugmes();quit;end
+ierr = execstr('get_function_path(1)','errcatch');
+if ierr <> 999 then bugmes();quit;end
+ierr = execstr('get_function_path([''ver'',''typeof''])','errcatch');
+if ierr <> 999 then bugmes();quit;end
diff --git a/scilab/modules/functions/tests/nonreg_tests/bug_4608.tst b/scilab/modules/functions/tests/nonreg_tests/bug_4608.tst
new file mode 100644 (file)
index 0000000..59174d0
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 4608 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4608
+//
+// <-- Short Description -->
+// get_function_path returns a non-consistent path
+
+// ver is in "core" module
+r = get_function_path('ver');
+ref = pathconvert(SCI + '/modules/core/macros/ver.sci',%f);
+if r <> ref then pause,end
+
+ierr = execstr('get_function_path(1)','errcatch');
+if ierr <> 999 then pause,end
+
+ierr = execstr('get_function_path([''ver'',''typeof''])','errcatch');
+if ierr <> 999 then pause,end