* Bug 14254 fixed: unclear error when installing unavailable atoms 31/19231/5
Samuel GOUGEON [Sun, 26 Mar 2017 18:03:02 +0000 (20:03 +0200)]
  http://bugzilla.scilab.org/14254

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

  The error message contains the Scilab version and the OS name.
  It is not constant and so can't build a constant .dia.ref.

  For the time being, assert_checkerror() crashes Scilab.

Change-Id: Iac27325414e3fcf2b415e2fe19d86c980dcfbf24

scilab/CHANGES.md
scilab/modules/atoms/macros/atoms_internals/atomsInstallList.sci
scilab/modules/atoms/tests/nonreg_tests/bug_14254.tst [new file with mode: 0644]

index fd1a49c..e71f24b 100644 (file)
@@ -348,6 +348,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#5278](http://bugzilla.scilab.org/show_bug.cgi?id=5278): obsolete `xset()` was still used in scripts, macros, tests and help pages.
 * [#12771](http://bugzilla.scilab.org/show_bug.cgi?id=12771): xcosPalGenerateAllIcons help example was broken
 * [#13592](http://bugzilla.scilab.org/show_bug.cgi?id=13592): In an axes in a uicontrol frame, setting a `legend` interactively might not follow the mouse accurately.
+* [#14254](http://bugzilla.scilab.org/show_bug.cgi?id=14254): When installing an ATOMS module that is not locally registered and available, the error message was unclear.
 * [#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.
index 49c98db..727dd4e 100644 (file)
@@ -109,10 +109,12 @@ function [insList,depTree] = atomsInstallList(packages,section)
             if isempty(this_package_version) then
                 module_full_name = this_package_name;
             else
-                module_full_name = this_package_name+" - "+this_package_version;
+                module_full_name = this_package_name + " - " + this_package_version;
             end
-            atomsError("error", ..
-            msprintf(gettext("%s: The package %s is not available.\n"),"atomsInstallList",module_full_name));
+            msg = gettext("%s: The package ""%s"" is not registered.\nPlease check on the ATOMS repository that it is available for Scilab %d.%d on %s.\nIf it is, run atomsSystemUpdate() before trying atomsInstall(..) again.\n\n");
+            Vers = getversion('scilab');
+            msg = msprintf(msg, "atomsInstallList", module_full_name, Vers(1:2), getos());
+            atomsError("error", msg);
         end
 
         // Fill the version if it doesn't contain the packaging version
diff --git a/scilab/modules/atoms/tests/nonreg_tests/bug_14254.tst b/scilab/modules/atoms/tests/nonreg_tests/bug_14254.tst
new file mode 100644 (file)
index 0000000..174d308
--- /dev/null
@@ -0,0 +1,26 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+//
+// <-- ENGLISH IMPOSED -->
+// <-- NO CHECK REF -->
+
+// <-- Non-regression test for bug 14254 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14254
+//
+// <-- Short Description -->
+// When installing an ATOMS module that is not locally registered and available,
+// the error message was unclear
+
+instruction = "atomsInstall(""xfgyzk_nothing"");";
+assert_checktrue(execstr(instruction, 'errcatch')~=0);
+
+expectedMsg = "%s: The package ""%s"" is not registered.\nPlease check on the ATOMS repository that it is available for Scilab %d.%d on %s.\nIf it is, run atomsSystemUpdate() before trying atomsInstall(..) again.\n\n";
+Vers = getversion('scilab');
+expectedMsg = msprintf(expectedMsg, "atomsInstallList", "xfgyzk_nothing", Vers(1:2), getos());
+//assert_checkerror(instruction, expectedMsg);