Commit fa7fa949 authored by Michele Carignani's avatar Michele Carignani
Browse files

fix of basespec location, minor fixes

parent 95091e4d
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
name = "robot2doc"
name = "robot2doc"
version = "2"


from main import robot2doc
from main import gen_doc
+28 −15
Original line number Original line Diff line number Diff line
@@ -3,9 +3,12 @@
#  Usage: python main.py <FILE_OR_FOLDER> [OUTPUT_FILENAME [MAIN_TITLE]]
#  Usage: python main.py <FILE_OR_FOLDER> [OUTPUT_FILENAME [MAIN_TITLE]]
#
#


from robot.api import TestSuiteBuilder
import sys
import sys
import testspec
import os

from robot.api import TestSuiteBuilder

from testspec import TestSpec, DOC_BASE_SEC, DOC_TC_LEVEL
from testpurpose import TP
from testpurpose import TP


# Configuration
# Configuration
@@ -13,6 +16,7 @@ from testpurpose import TP
DOC_MAIN_TITLE = 'Annex B (informative): Test Cases'
DOC_MAIN_TITLE = 'Annex B (informative): Test Cases'
DOC_FILENAME = 'test_spec_from_robot.docx'
DOC_FILENAME = 'test_spec_from_robot.docx'
FILE = ""
FILE = ""
BASE_SPEC = 'basespec.docx'


def keyword_to_line(k):
def keyword_to_line(k):
    '''
    '''
@@ -21,13 +25,13 @@ def keyword_to_line(k):
    '''
    '''
    return str(k) + " " + " ".join(k.args)
    return str(k) + " " + " ".join(k.args)


def keywords_to_text(ks):
def keywords_to_text(kws):
    '''
    '''
    Takes a list of Robot Framework words and returns a multiline text
    Takes a list of Robot Framework words and returns a multiline text
    '''
    '''
    return "\n".join(map(keyword_to_line, ks))
    return "\n".join(map(keyword_to_line, kws))


def robot2doc(src, doc_fn, doc_main_tit):
def gen_doc(src, doc_fn, doc_main_tit):
    '''
    '''
    Converts a Robot test suite to a word document
    Converts a Robot test suite to a word document


@@ -40,16 +44,24 @@ def robot2doc(src, doc_fn, doc_main_tit):


    print "Starting.."
    print "Starting.."
    script_dir = os.path.dirname(os.path.realpath(__file__))
    script_dir = os.path.dirname(os.path.realpath(__file__))
    spec = testspec.TestSpec(script_dir('ETSI_GS_Skeleton.docx'))
    wd = os.getcwd()
    
    # Using the absolute path has caused issues. The quick fix is to
    # move temporarily to the source directory
    os.chdir(script_dir)
    try:
        spec = TestSpec(BASE_SPEC)
    #finally:
    #    os.chdir(cwd)


    try:
    try:
        workspace = TestSuiteBuilder().build(file)
        workspace = TestSuiteBuilder().build(src)
    except:
    except:
        print "Please check that first argument is a folder of Robot files or a single file."
        print "Please check that first argument is a folder of Robot files or a single file."
        exit(-1)
        exit(-1)


    print "Loaded "+ str(len(workspace.suites)) + " test suites."
    print "Loaded "+ str(len(workspace.suites)) + " test suites."
    sec = testspec.DOC_BASE_SEC - 1
    sec = DOC_BASE_SEC - 1


    spec.add_main_heading(doc_main_tit)
    spec.add_main_heading(doc_main_tit)
    for suite in workspace.suites:
    for suite in workspace.suites:
@@ -58,8 +70,9 @@ def robot2doc(src, doc_fn, doc_main_tit):
        print "  Generating test suite: " + str(suite)
        print "  Generating test suite: " + str(suite)
        spec.add_sub_heading(str(suite), sec)
        spec.add_sub_heading(str(suite), sec)
        for i in suite.tests:
        for i in suite.tests:
            print "      Generating test: " + str(i)
            subsec = subsec + 1
            subsec = subsec + 1
            spec.add_heading(str(i), testspec.DOC_TC_LEVEL, sec, subsec)
            spec.add_heading(str(i), DOC_TC_LEVEL, sec, subsec)
            TP(i.doc).add_to_spec(spec, keywords_to_text(i.keywords))
            TP(i.doc).add_to_spec(spec, keywords_to_text(i.keywords))


    spec.save(doc_fn)
    spec.save(doc_fn)
@@ -74,4 +87,4 @@ if __name__ == "__main__":
    DOC_FILENAME = sys.argv[2] if len(sys.argv) > 2 else DOC_FILENAME
    DOC_FILENAME = sys.argv[2] if len(sys.argv) > 2 else DOC_FILENAME
    DOC_MAIN_TITLE = sys.argv[3] if len(sys.argv) > 3 else DOC_MAIN_TITLE
    DOC_MAIN_TITLE = sys.argv[3] if len(sys.argv) > 3 else DOC_MAIN_TITLE


    robot2doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE)
    gen_doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE)
+6 −2
Original line number Original line Diff line number Diff line
#!/env/python
#!/env/python


import os
from docx import Document
from docx import Document
from docx.shared import Pt
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_BREAK_TYPE
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_BREAK_TYPE
@@ -22,6 +23,9 @@ TABLE_STYLE = 'TestTable'
class TestSpec():
class TestSpec():


    def __init__(self, path=None):
    def __init__(self, path=None):
        if path:
	    print "opening doc: "+path
	print "current dir: "+os.getcwd()
	self.doc = Document(path)
	self.doc = Document(path)


    @staticmethod
    @staticmethod