2 new revisions:

Revision: d9bae5efbd78
Branch:   default
Author:   Robot Framework Developers (robotframew...@gmail.com)
Date:     Tue Oct  9 04:07:44 2012
Log: libdoc: handle invalid spec files and other errors in building librari...
http://code.google.com/p/robotframework/source/detail?r=d9bae5efbd78

Revision: 4a68b835297c
Branch:   default
Author:   Robot Framework Developers (robotframew...@gmail.com)
Date:     Tue Oct  9 04:16:44 2012
Log:      libdoc: Read previously used doc format from specs....
http://code.google.com/p/robotframework/source/detail?r=4a68b835297c

==============================================================================
Revision: d9bae5efbd78
Branch:   default
Author:   Robot Framework Developers (robotframew...@gmail.com)
Date:     Tue Oct  9 04:07:44 2012
Log: libdoc: handle invalid spec files and other errors in building libraries
http://code.google.com/p/robotframework/source/detail?r=d9bae5efbd78

Modified:
 /atest/robot/libdoc/invalid_usage.txt
 /src/robot/libdocpkg/__init__.py
 /src/robot/libdocpkg/specbuilder.py

=======================================
--- /atest/robot/libdoc/invalid_usage.txt       Tue Oct  9 03:05:07 2012
+++ /atest/robot/libdoc/invalid_usage.txt       Tue Oct  9 04:07:44 2012
@@ -30,6 +30,19 @@

 Non-existing library
NonExistingLib out.html Importing test library 'NonExistingLib' failed: *
+
+Non-existing spec
+    nonex.xml out.html    Spec file 'nonex.xml' does not exist.
+
+Invalid spec
+    [Setup]    Create File    ${OUTXML}    <wrong/>
+    ${OUTXML} out.html    Invalid spec file '${OUTXML}'.
+    [Teardown]    Remove File    ${OUTXML}
+
+Non-XML spec
+    [Setup]    Create File    ${OUTXML}    very wrong
+    ${OUTXML} out.html    Building library '${OUTXML}' failed: *
+    [Teardown]    Remove File    ${OUTXML}

 Invalid resource
     ${CURDIR}/invalid_usage.txt out.html
=======================================
--- /src/robot/libdocpkg/__init__.py    Tue Oct  9 03:05:07 2012
+++ /src/robot/libdocpkg/__init__.py    Tue Oct  9 04:07:44 2012
@@ -19,6 +19,9 @@
 This package is considered stable.
 """

+from robot.errors import DataError
+from robot.utils import get_error_message
+
 from .builder import DocumentationBuilder
 from .consoleviewer import ConsoleViewer

@@ -26,7 +29,13 @@
 def LibraryDocumentation(library_or_resource, name=None, version=None,
                          doc_format='ROBOT'):
     builder = DocumentationBuilder(library_or_resource)
-    libdoc = builder.build(library_or_resource)
+    try:
+        libdoc = builder.build(library_or_resource)
+    except DataError:
+        raise
+    except:
+        raise DataError("Building library '%s' failed: %s"
+                        % (library_or_resource, get_error_message()))
     if name:
         libdoc.name = name
     if version:
=======================================
--- /src/robot/libdocpkg/specbuilder.py Mon Feb 20 12:54:34 2012
+++ /src/robot/libdocpkg/specbuilder.py Tue Oct  9 04:07:44 2012
@@ -13,7 +13,9 @@
 #  limitations under the License.

 from __future__ import with_statement
+import os.path

+from robot.errors import DataError
 from robot.utils import ET, ETSource

 from .model import LibraryDoc, KeywordDoc
@@ -34,8 +36,13 @@
         return libdoc

     def _parse_spec(self, path):
+        if not os.path.isfile(path):
+            raise DataError("Spec file '%s' does not exist." % path)
         with ETSource(path) as source:
-            return ET.parse(source).getroot()
+            root = ET.parse(source).getroot()
+        if root.tag != 'keywordspec':
+            raise DataError("Invalid spec file '%s'." % path)
+        return root

     def _get_named_args(self, spec):
         elem = spec.find('namedargs')

==============================================================================
Revision: 4a68b835297c
Branch:   default
Author:   Robot Framework Developers (robotframew...@gmail.com)
Date:     Tue Oct  9 04:16:44 2012
Log:      libdoc: Read previously used doc format from specs.

Update issue 489
Now previously used doc format is read from specs.
http://code.google.com/p/robotframework/source/detail?r=4a68b835297c

Modified:
 /atest/robot/libdoc/doc_format.txt
 /src/robot/libdoc.py
 /src/robot/libdocpkg/__init__.py
 /src/robot/libdocpkg/specbuilder.py

=======================================
--- /atest/robot/libdoc/doc_format.txt  Tue Oct  9 03:05:07 2012
+++ /atest/robot/libdoc/doc_format.txt  Tue Oct  9 04:16:44 2012
@@ -1,6 +1,8 @@
 *** Settings ***
 Force Tags       regression    pybot    jybot
 Resource         libdoc_resource.txt
+Suite Setup Set Suite Variable ${LIBRARY} ${TESTDATADIR}/DocFormat.py
+Test Setup       Remove Output Files

 *** Variables ***
 ${EXAMPLE URL}     http://example.com
@@ -29,17 +31,23 @@
 HTML format in XML
     Test Format In XML    --docfor HtMl    HTML

+Read format from XML
+    Run Libdoc    -F HTML ${LIBRARY} ${OUTXML}
+    Copy File    ${OUTXML}    ${OUTPREFIX}-2.xml
+    Set Test Variable    ${LIBRARY}    ${OUTPREFIX}-2.xml
+    Test Format In XML    ${EMPTY}    HTML
+

 *** Keywords ***

 Test Format In HTML
     [Arguments]    ${options}    ${expected}
- Run Libdoc And Parse Model From HTML ${options} ${TESTDATADIR}/DocFormat.py
+    Run Libdoc And Parse Model From HTML    ${options} ${LIBRARY}
     Doc Should Contain In HTML    ${MODEL['keywords'][0]}    ${expected}

 Test Format In XML
     [Arguments]    ${options}    ${expected}
-    Run Libdoc And Parse Output     ${options} ${TESTDATADIR}/DocFormat.py
+    Run Libdoc And Parse Output     ${options} ${LIBRARY}
     Format should be    ${expected}
     Keyword Doc Should Be    0    *bold* or <b>bold</b> http://example.com

=======================================
--- /src/robot/libdoc.py        Tue Oct  9 03:05:07 2012
+++ /src/robot/libdoc.py        Tue Oct  9 04:16:44 2012
@@ -139,8 +139,9 @@
             self.console(os.path.abspath(output))

     def _get_doc_format(self, format):
-        return self._verify_format('Doc format', format or 'ROBOT',
-                                   ['ROBOT', 'TEXT', 'HTML'])
+        if not format:
+            return None
+ return self._verify_format('Doc format', format, ['ROBOT', 'TEXT', 'HTML'])

     def _get_output_format(self, format, output):
         default = os.path.splitext(output)[1][1:]
=======================================
--- /src/robot/libdocpkg/__init__.py    Tue Oct  9 04:07:44 2012
+++ /src/robot/libdocpkg/__init__.py    Tue Oct  9 04:16:44 2012
@@ -27,7 +27,7 @@


 def LibraryDocumentation(library_or_resource, name=None, version=None,
-                         doc_format='ROBOT'):
+                         doc_format=None):
     builder = DocumentationBuilder(library_or_resource)
     try:
         libdoc = builder.build(library_or_resource)
@@ -40,5 +40,6 @@
         libdoc.name = name
     if version:
         libdoc.version = version
-    libdoc.doc_format = doc_format
+    if doc_format:
+        libdoc.doc_format = doc_format
     return libdoc
=======================================
--- /src/robot/libdocpkg/specbuilder.py Tue Oct  9 04:07:44 2012
+++ /src/robot/libdocpkg/specbuilder.py Tue Oct  9 04:16:44 2012
@@ -30,7 +30,8 @@
                             version=spec.find('version').text or '',
                             doc=spec.find('doc').text or '',
                             scope=spec.find('scope').text or '',
-                            named_args=self._get_named_args(spec))
+                            named_args=self._get_named_args(spec),
+                            doc_format=spec.get('format', 'ROBOT'))
         libdoc.inits = self._create_keywords(spec, 'init')
         libdoc.keywords = self._create_keywords(spec, 'kw')
         return libdoc

Reply via email to