def test_get_testcase_requirements_single_empty(field_name): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :component: foo :{}: '''.format(field_name))) assert get_testcase_requirements(doctree) == []
def test_get_testcase_requirements_many(): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :requirement: FOO-212 :requirement: FOO-232 :component: foo ''')) assert get_testcase_requirements(doctree) == ["FOO-212", "FOO-232"]
def test_get_testcase_requirements_list_many(field_name): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :component: foo :{}: - FOO-212 - FOO-232 '''.format(field_name))) assert get_testcase_requirements(doctree) == ["FOO-212", "FOO-232"]
def test_get_testcase_requirements_single_url_link(field_name): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :component: foo :requirement: https://example.com '''.format(field_name))) results = get_testcase_requirements(doctree) assert len(results) == 1 # check that we get actual rst node for a link (reference node) assert results[0].tagname == "reference" assert results[0].astext() == "https://example.com"
def test_get_testcase_requirements_list_many_someemptyitems(field_name): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :component: foo :{}: - - FOO-132 - :requirement: FOO-130 '''.format(field_name))) assert get_testcase_requirements(doctree) == ["FOO-132", "FOO-130"]
def test_get_testcase_requirements_many_list_url_link(): doctree = _publish( textwrap.dedent('''\ Test Foo ******** :author: [email protected] :component: foo :requirements: - https://example.com/foo - https://example.com/bar ''')) results = get_testcase_requirements(doctree) assert len(results) == 2 # check that we get actual rst node for a link (reference node) assert results[0].tagname == "reference" assert results[1].tagname == "reference" # and expected content assert results[0].astext() == "https://example.com/foo" assert results[1].astext() == "https://example.com/bar"
def apply(self): # sphinx build enviroment instance env = self.document.settings.env # check if env has the requirements already defined if not hasattr(env, 'pylatest_requirements'): env.pylatest_requirements = {} # add requirements of current doc into reverse index requirements = get_testcase_requirements(self.document) for req_node in requirements: # enforce req_node (rst node) identity based on sheer url for # references or plain text representation for other rst nodes if req_node.tagname == "reference": req_key = req_node['refuri'] else: req_key = req_node.astext() # create new empty entry for current requirement (req_node) in # env.pylatest_requirements dict if there is no such entry so far env.pylatest_requirements.setdefault(req_key, (req_node, set())) # add new docname into set of docnames of the requirement's entry env.pylatest_requirements[req_key][1].add(env.docname)
def test_get_testcase_requirements_null(empty_doctree): assert get_testcase_requirements(empty_doctree) == []