* Bug 15282 fixed: help_from_sci() could set % in xml:id & master_help.xml 43/19443/2
Samuel GOUGEON [Mon, 2 Oct 2017 23:49:49 +0000 (01:49 +0200)]
  http://bugzilla.scilab.org/15282

Change-Id: I20b0ef05ff659cce1567c4a0a374445d3bdcaccd

scilab/CHANGES.md
scilab/modules/helptools/macros/help_from_sci.sci
scilab/modules/helptools/tests/nonreg_tests/%bug_15282.sci [new file with mode: 0644]
scilab/modules/helptools/tests/nonreg_tests/bug_15282.tst [new file with mode: 0644]

index 0979d64..d5c27bf 100644 (file)
@@ -412,6 +412,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#15260](http://bugzilla.scilab.org/show_bug.cgi?id=15260): `sci2exp` was broken for cells, structures, and all types of hypermatrix.
 * [#15266](http://bugzilla.scilab.org/show_bug.cgi?id=15266): Wrong default out_mode in `linear_interpn`.
 * [#15273](http://bugzilla.scilab.org/show_bug.cgi?id=15273): The documented order of `eval_cshep2d` second derivatives was wrong.
+* [#15282](http://bugzilla.scilab.org/show_bug.cgi?id=15282): `help_from_sci` could set an xml:id starting with the forbidden `%` character.
 
 ### Bugs fixed in 6.0.0:
 * [#592](http://bugzilla.scilab.org/show_bug.cgi?id=592): `linspace(a, b, n<=0)` returned `b` instead of `[]`
index 2e0cd8f..60cb920 100644 (file)
@@ -2,6 +2,7 @@
 // Copyright (C) 2008-2009 - T. Pettersen
 // Copyright (C) 2010 - DIGITEO - Allan CORNET
 // Copyright (C) 2011 - DIGITEO - Michael Baudin
+// Copyright (C) 2017 - Samuel GOUGEON
 //
 // Copyright (C) 2012 - 2016 - Scilab Enterprises
 //
@@ -193,6 +194,7 @@ function [helptxt,demotxt]=help_from_sci(funname,helpdir,demodir)
     out = out($);
     out = tokens(out,".");
     out = out(1);      // remove .sci (...wont work for fil.name.sci)
+    outxml = strsubst(out, "/^%/","percent", "r");
 
     demotxt = ["mode(1)"
     "//"
@@ -211,7 +213,7 @@ function [helptxt,demotxt]=help_from_sci(funname,helpdir,demodir)
     " *"
     " -->"
     ""
-    "<refentry version=""5.0-subset Scilab"" xml:id="""+out+""" xml:lang=""en"""
+    "<refentry version=""5.0-subset Scilab"" xml:id="""+outxml+""" xml:lang=""en"""
     "          xmlns=""http://docbook.org/ns/docbook"""
     "          xmlns:xlink=""http://www.w3.org/1999/xlink"""
     "          xmlns:svg=""http://www.w3.org/2000/svg"""
@@ -345,7 +347,7 @@ function [helptxt,demotxt]=help_from_sci(funname,helpdir,demodir)
     mclose(f);
 
     if ~isempty(helpdir) then
-        fnme = pathconvert(helpdir, %t, %f) + out + ".xml";
+        fnme = pathconvert(helpdir, %t, %f) + outxml + ".xml";
         answ = 1;
         if isfile(fnme) then  // file exists...
             answ = messagebox(fnme + " exists!", "Warning - help_from_sci", "warning", ["Create anyway" "Skip file"], "modal");
@@ -354,7 +356,7 @@ function [helptxt,demotxt]=help_from_sci(funname,helpdir,demodir)
             mputl(helptxt, fnme);
             helptxt = fnme;
         else
-            printf(gettext("%s: File skipped %s."), "help_from_sci", out + ".xml");
+            printf(gettext("%s: File skipped %s."), "help_from_sci", outxml + ".xml");
             helptxt = "";
         end
     end
diff --git a/scilab/modules/helptools/tests/nonreg_tests/%bug_15282.sci b/scilab/modules/helptools/tests/nonreg_tests/%bug_15282.sci
new file mode 100644 (file)
index 0000000..fe33b96
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// 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.
+// =============================================================================
+
+function r = %bug_15282_test()
+    // Tests the bug 15282
+    // Calling Sequence
+    //   None
+    //
+    // Parameters
+    //  None
+    //
+    // Description
+    // Will this test pass?
+    //
+    // Examples
+    // // Running..
+    //
+    // See also
+    //
+    // Authors
+    //  Samuel Gougeon
+    r = 1;
+endfunction
diff --git a/scilab/modules/helptools/tests/nonreg_tests/bug_15282.tst b/scilab/modules/helptools/tests/nonreg_tests/bug_15282.tst
new file mode 100644 (file)
index 0000000..136b582
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// 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.
+// =============================================================================
+//
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 15282 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/15282
+//
+// <-- Short Description -->
+// When the function's name starts with "%", help_from_sci() wrongly used "%"
+// in the xml:id and in the XML file name registered in master_help.xml
+
+path = pathconvert(TMPDIR+"/bug_15282/help",%t,%t);
+mkdir(path);
+scifile = pathconvert(SCI+"/modules/helptools/tests/nonreg_tests/%bug_15282.sci",%f,%t);
+assert_checktrue(execstr("help_from_sci(scifile, path)", "errcatch")==0);
+assert_checktrue(execstr("xmltohtml(path)", "errcatch")==0);