* Bug 11756 fixed: atomsGui categories failed listing all member modules 73/19273/3
Samuel GOUGEON [Sun, 21 May 2017 17:47:21 +0000 (19:47 +0200)]
  http://bugzilla.scilab.org/11756

Change-Id: I3c1315f60704f04ad9fd511f19f64ee0cf5f5b0d

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

index ff732de..2a086fb 100644 (file)
@@ -347,7 +347,8 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 ### Bugs fixed in 6.0.1:
 * [#4276](http://bugzilla.scilab.org/show_bug.cgi?id=4276): `strsubst` replaced the first occurence in regex mode.
 * [#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
+* [#11756](http://bugzilla.scilab.org/show_bug.cgi?id=11756): In the categories of the ATOMS GUI, actually available modules might be not listed.
+* [#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...
index 5905a62..f60da13 100644 (file)
@@ -122,6 +122,12 @@ function tree_out = atomsDESCRIPTIONcat( tree_in_1 , tree_in_2 )
     for i=1:size(category_names,"*")
         if ~ isfield(categories_flat_out,category_names(i)) then
             categories_flat_out(category_names(i)) = categories_flat_in_2(category_names(i));
+        else
+            // If the category is already registered, we concatenate the master
+            // and the new incoming lists of packages registered in it:
+            tmp_out = categories_flat_out(category_names(i))("packages");
+            tmp_in_2 = categories_flat_in_2(category_names(i))("packages");
+            categories_flat_out(category_names(i))("packages") = [tmp_out ; tmp_in_2];
         end
     end
 
diff --git a/scilab/modules/atoms/tests/nonreg_tests/bug_11756.tst b/scilab/modules/atoms/tests/nonreg_tests/bug_11756.tst
new file mode 100644 (file)
index 0000000..1dcb16d
--- /dev/null
@@ -0,0 +1,70 @@
+// ============================================================================
+// 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.
+// ============================================================================
+
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 11756 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/11756
+//
+// <-- Short Description -->
+// In the ATOMS GUI, listing modules of a selected category C : When a module
+// registered in C is installed, after using atomsSystemUpdate(), all modules
+// remaining in C but uninstalled were no longer listed.
+
+// Let's consider the "Documentation" category:
+
+// 1) Be sure that no module of this category is installed
+
+[x, ierr] = fileinfo("SCI/.atoms/packages");
+if ierr then
+    packages = struct();
+else
+    load("SCI/.atoms/packages");
+end
+
+pnames = fieldnames(packages)';
+pdoc = [];
+for p = pnames
+    v = fieldnames(packages(p));
+    categories = packages(list(p, v(1), "Category"));
+    if or(categories == "Documentation")
+        pdoc = [pdoc p];
+    end
+end
+// If there are some installed modules, uninstall them:
+if pdoc~=[] then
+    for p = pdoc
+        atomsRemove(p);
+    end
+end
+// 2) update
+atomsSystemUpdate()
+
+// 3) Then quit and restart Scilab
+exit(0)
+
+// 4) open the ATOMS manager:
+atomsGui
+
+// 5) click on the "Documentation" category
+//    CHECK: you should see the whole list. For Scilab 6.0, there is at least
+//           "uman" and "removed"
+
+// 6) Install "uman" by hand (for instance)
+
+// 7) Click on "All categories", to list the categories
+
+// 8) update:
+atomsSystemUpdate()
+
+// 9) Click on the "Documentation" category
+//    CHECK: you must still see the WHOLE list, with at least "uman" and "removed",
+//    NOT ONLY THE "uman" INSTALLED ENTRY.
+//    Without the patch, the "removed" module is no longer listed.
+