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