* Bug 14532 fixed: test_run failed on non-autoloaded atoms 34/19234/5
Samuel GOUGEON [Tue, 28 Mar 2017 00:59:15 +0000 (02:59 +0200)]
  http://bugzilla.scilab.org/14532

  Replaces https://codereview.scilab.org/#/c/18176/

  Tested on "apifun":
  atomsInstall apifun
  atomsAutoloadDel apifun
  test_run("apifun",[],"show_error")

Change-Id: I2da90184507e94fe6dce21240a045bd4cff9221b

scilab/CHANGES.md
scilab/modules/development_tools/macros/test_run.sci

index d5c27bf..f57b1a6 100644 (file)
@@ -362,6 +362,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#14376](http://bugzilla.scilab.org/show_bug.cgi?id=14376): input() is broken: \n introduced before prompting, multiple prompts, missing assignment, "%" "\n" "\t" no longer supported in messages...
 * [#14399](http://bugzilla.scilab.org/show_bug.cgi?id=14399): Whereami : wrong information (line numbers).
 * [#14424](http://bugzilla.scilab.org/show_bug.cgi?id=14424): New problem with the input function.
+* [#14532](http://bugzilla.scilab.org/show_bug.cgi?id=14532): `test_run` failed for toolboxes that are not autoloaded.
 * [#14573](http://bugzilla.scilab.org/show_bug.cgi?id=14573): Management of varargout when is not alone.
 * [#14598](http://bugzilla.scilab.org/show_bug.cgi?id=14598): `fort` wasn't properly removed.
 * [#14623](http://bugzilla.scilab.org/show_bug.cgi?id=14623): Bad lhs in MList extraction overload.
index be5179f..431f3e5 100644 (file)
@@ -331,9 +331,12 @@ function status = test_module(_params)
     if with_module(name(1)) then
         // It's a scilab internal module
         module.path = pathconvert(SCI + "/modules/" + name(1), %F);
-    elseif or(librarieslist() == "atomslib") & atomsIsLoaded(name(1)) then
+    elseif or(librarieslist() == "atomslib") & atomsIsInstalled(name(1)) then
         // It's an ATOMS module
-        module.path = pathconvert(atomsGetLoadedPath(name(1)) , %F, %T);
+        tmp = atomsGetInstalled();
+        tmp = tmp(tmp(:,1)==name(1),:)($,4)
+        module.path = pathconvert(tmp, %F, %T);
+        Autoloaded = or(name(1)==atomsAutoloadList())
     elseif isdir(name(1)) then
         // It's an external module
         module.path = pathconvert(name(1), %F);
@@ -343,7 +346,7 @@ function status = test_module(_params)
     end
 
     //get tests from path
-    my_types = ["unit_tests","nonreg_tests"];
+    my_types = ["unit_tests", "nonreg_tests"];
 
     directories = [];
     for i=1:size(my_types,"*")
@@ -378,6 +381,7 @@ function status = test_module(_params)
             for j = 1:size(directories, "*")
                 currentDir = directories(j);
                 testFile = currentDir + filesep() + _params.tests_mat(i) + ".tst";
+
                 if isfile(testFile) then
                     tests($+1, [1,2]) = [currentDir, _params.tests_mat(i)];
                     bFind = %t;
@@ -431,6 +435,9 @@ function status = test_module(_params)
         return;
     end
 
+    if isdef("Autoloaded", "l") & ~Autoloaded
+        atomsAutoloadAdd(name(1))
+    end
     tic();
     for i = 1:test_count
         printf("   %03d/%03d - ",i, test_count);
@@ -501,6 +508,10 @@ function status = test_module(_params)
 
     testsuite.time=status.totalTime;
 
+    if isdef("Autoloaded", "l") & ~Autoloaded
+        atomsAutoloadDel(name(1))
+    end
+
     clearglobal TICTOC;
     status.test_passed_count  = test_passed_count;
     status.test_failed_count  = test_failed_count;