def test_simple_04(self): "Module test with cyclic dependency " try: mods = InputModules(os.path.join(mod_base_dir, "modules04"), {}, [], mods_list("modules04", mod_base_dir)) mods.debug_output() assert(False) except RMTException, rmte: assert(rmte.id() == 26)
def test_simple_04(self): "Module test with cyclic dependency " try: mods = InputModules(os.path.join(mod_base_dir, "modules04"), {}, [], mods_list("modules04", mod_base_dir)) mods.debug_output() assert (False) except RMTException, rmte: assert (rmte.id() == 26)
def rmttest_positive_02(self): "Three node one edge digraph B -> A, C -> A and C -> B" config = TestConfig() imod = InputModules(config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_requirement(req1) req2 = Requirement('''Name: B Type: requirement Depends on: A''', 'B', None, imod, config) reqset.add_requirement(req2) config.set_depends_on() req3 = Requirement('''Name: C Type: requirement Depends on: A B''', 'C', None, imod, config) reqset.add_requirement(req3) config.set_depends_on() rdep = RDepDependsOn(config) rdep.rewrite(reqset) assert [] == reqset.get_requirement("A").incoming_as_named_list() # There are two possible valid results assert reqset.get_requirement("A").outgoing_as_named_list() \ in [["C", "B"], ["B", "C"]] assert ["A"] == reqset.get_requirement("B").incoming_as_named_list() assert ["C"] == reqset.get_requirement("B").outgoing_as_named_list() assert ["A", "B"] == reqset.get_requirement("C").incoming_as_named_list() assert [] == reqset.get_requirement("C").outgoing_as_named_list()
def rmttest_positive_01(self): "Two node one edge digraph B -> A" config = TestConfig() imod = InputModules(config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_requirement(req1) req2 = Requirement('''Name: B Type: requirement Depends on: A''', 'B', None, imod, config) reqset.add_requirement(req2) config.set_depends_on() rdep = RDepDependsOn(config) rdep.rewrite(reqset) self.assertEqual([], reqset.get_requirement("A").incoming_as_named_list()) self.assertEqual(["B"], reqset.get_requirement("A").outgoing_as_named_list()) self.assertEqual(["A"], reqset.get_requirement("B").incoming_as_named_list()) self.assertEqual([], reqset.get_requirement("B").outgoing_as_named_list())
def test_positive_01(self): "Two node one edge digraph B -> A" config = TestConfig() imod = InputModules("..", config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_node(RequirementDNode(req1)) req2 = Requirement('''Name: B Type: requirement Depends on: A''', 'B', None, imod, config) reqset.add_node(RequirementDNode(req2)) config.set_depends_on() rdep = RDepDependsOn(config) rdep.rewrite(reqset) assert (reqset.get_requirement("A").get_incoming_as_named_list() == []) assert (reqset.get_requirement("A").get_outgoing_as_named_list() == [ "B" ]) assert (reqset.get_requirement("B").get_incoming_as_named_list() == [ "A" ]) assert (reqset.get_requirement("B").get_outgoing_as_named_list() == [])
def rmttest_positive_01(self): """Requirement contains a tag where no handler exists""" mstderr = StringIO() init_logger(mstderr) test_config = TestConfig() test_config.set_solved_by() mods = InputModules(test_config) reqs = RequirementSet(None) req = Requirement("Hubbel: bubbel", "hubbel", reqs, mods, test_config) reqs.add_requirement(req) reqs._handle_modules(mods) lstderr = hide_volatile(mstderr.getvalue()) tear_down_log_handler() result_expected \ = ["===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" "__all_tags_handled;===LINENO===; 57:hubbel:No tag handler " "found for " "tag(s) '[\"Hubbel\"]' - Hint: typo in tag(s)?", "===DATETIMESTAMP===;rmtoo;ERROR;" "RequirementSet;_handle_modules;" "===LINENO===; 56:There were errors encountered during parsing " "and checking - can't continue."] lstderr_last_two_lines = lstderr.split("\n")[-3:-1] assert result_expected == lstderr_last_two_lines
def test_positive_02(self): "Requirement contains a tag where no handler exists - multiple tags" mstderr = StringIO.StringIO() init_logger(mstderr) mods = InputModules(os.path.join(mod_base_dir, "modules08"), {}, [], mods_list("modules08", mod_base_dir)) reqs = RequirementSet(None) req = Requirement("Hubbel: bubbel\nSiebel: do", "InvalidTagReq", reqs, mods, TestConfig()) reqs.add_node(RequirementDNode(req)) reqs._handle_modules(mods) lstderr = hide_timestamp(mstderr.getvalue()) lstderr = hide_lineno(lstderr) tear_down_log_handler() result_expected = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \ "__all_tags_handled;===SOURCELINENO===; 57:InvalidTagReq:No tag " \ "handler found " \ "for tag(s) '['Siebel', 'Hubbel']' - Hint: typo in tag(s)?\n" \ "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;_handle_modules;" \ "===SOURCELINENO===; 56:There were errors encountered during parsing " \ "and checking " \ "- can't continue.\n" self.assertEquals(result_expected, lstderr)
def test_simple_03(self): "Module test with invalid dependency " try: mods = InputModules(os.path.join(mod_base_dir, "modules03"), {}, [], mods_list("modules03", mod_base_dir)) assert (False) except RMTException, rmte: assert (rmte.id() == 27)
def main_setup(args, mstdout, mstderr): config = MainHelper.main_setup_config(args) moddirs = config.get_value("global.modules.directories") if len(moddirs) != 1: # TODO Handle multiple module directories. assert (False) mods = InputModules(moddirs[0], config) return config, mods
def test_simple_05(self): "Module test with dependent modules" mstderr = StringIO.StringIO() init_logger(mstderr) mods = InputModules(os.path.join(mod_base_dir, "modules05"), {}, [], mods_list("modules05", mod_base_dir)) req = Requirement("Name: t\n", 77, None, mods, TestConfig()) lstderr = hide_lineno(hide_timestamp(mstderr.getvalue())) tear_down_log_handler() self.assertEqual(req.is_usable(), False) expected_result = "===DATETIMESTAMP===;rmtoo;ERROR;BaseRMObject;" \ "handle_modules_tag;===SOURCELINENO===; 54:77:" \ "tag [SameTag] already defined\n" self.assertEqual(lstderr, expected_result)
def test_simple_06(self): "Requirement: Module test with exception thrown" mstderr = StringIO.StringIO() init_logger(mstderr) mods = InputModules(os.path.join(mod_base_dir, "modules06"), {}, [], mods_list("modules06", mod_base_dir)) req = Requirement("Name: t\n", 77, None, mods, TestConfig()) lstderr = hide_lineno(hide_timestamp(mstderr.getvalue())) tear_down_log_handler() self.assertEqual(req.is_usable(), False) expected_result = "===DATETIMESTAMP===;rmtoo;ERROR;BaseRMObject;" \ "handle_modules_tag;===SOURCELINENO===; 55:TCExcept\n" \ "===DATETIMESTAMP===;rmtoo;ERROR;BaseRMObject;handle_modules_tag;" \ "===SOURCELINENO===; 41:77:" \ "semantic error occurred in module [Module01]\n" self.assertEqual(lstderr, expected_result)
def test_negative_01(self): "Master requirement with Depends on field" config = TestConfig() imod = InputModules("..", config) reqset = RequirementSet(config) req1 = Requirement( '''Name: A Type: master requirement Depends on: A''', 'A', None, imod, config) reqset.add_node(RequirementDNode(req1)) config.set_depends_on() rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert (status == False)
def test_simple_07(self): "RequirementSet: Module which renders set as errornous" mstderr = StringIO.StringIO() init_logger(mstderr) mods = InputModules(os.path.join(mod_base_dir, "modules07"), {}, [], mods_list("modules07", mod_base_dir)) reqs = RequirementSet(None) reqs._handle_modules(mods) self.assertEqual(reqs.is_usable(), False) lstderr = hide_lineno(hide_timestamp(mstderr.getvalue())) tear_down_log_handler() expected_result = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \ "_handle_modules;===SOURCELINENO===; 43:there was a problem handling the " \ "requirement set modules\n" self.assertEqual(lstderr, expected_result)
def test_negative_03(self): "Normal requirement has no 'Depends on'" config = TestConfig() imod = InputModules("..", config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_node(RequirementDNode(req1)) req2 = Requirement('''Name: B Type: requirement''', 'B', None, imod, config) reqset.add_node(RequirementDNode(req2)) config.set_depends_on() rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert (status == False)
def rmttest_negative_07(self): "'Depends on' points to same requirement" config = TestConfig() imod = InputModules(config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_requirement(req1) req2 = Requirement('''Name: B Type: requirement Depends on: B''', 'B', None, imod, config) reqset.add_requirement(req2) config.set_depends_on() rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert not status
def rmttest_negative_04(self): "Normal requirement has empty 'Depends on'" config = TestConfig() imod = InputModules(config) reqset = RequirementSet(config) req1 = Requirement('''Name: A Type: master requirement''', 'A', None, imod, config) reqset.add_requirement(req1) req2 = Requirement('''Name: B Type: requirement Depends on:''', 'B', None, imod, config) reqset.add_requirement(req2) config.set_depends_on() rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) self.assertFalse(status)
def rmttest_positive_02(self): "Requirement contains a tag where no handler exists - multiple tags" mstderr = StringIO() init_logger(mstderr) tc = TestConfig() tc.set_solved_by() mods = InputModules(tc) reqs = RequirementSet(None) req = Requirement("Hubbel: bubbel\nSiebel: do", "InvalidTagReq", reqs, mods, tc) reqs.add_requirement(req) reqs._handle_modules(mods) lstderr = hide_volatile(mstderr.getvalue()) tear_down_log_handler() lstderr_last_two_lines = lstderr.split("\n")[-3:-1] result0 \ = re.match( "^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" "__all_tags_handled;===LINENO===; 57:InvalidTagReq:" "No tag handler found " "for tag\(s\) '\[.*\]' - Hint: typo in tag\(s\)\?$", lstderr_last_two_lines[0]) result1 \ = re.match( "^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" "_handle_modules;" "===LINENO===; 56:There were errors encountered " "during parsing " "and checking - can't continue.$", lstderr_last_two_lines[1]) assert result0 assert result1
def test_positive_01(self): "InputModules._split_directory with '.'" d = InputModules._split_directory(".") assert(d == [])
def test_simple_01(self): "Simple module test" mods = InputModules(os.path.join(mod_base_dir, "modules01"), {}, [], mods_list("modules01", mod_base_dir))
def test_positive_02(self): "InputModules._split_directory with absolute path" d = InputModules._split_directory("/tmp/this/is/a/path") assert (d == ['/', 'tmp', 'this', 'is', 'a', 'path'])
def test_simple_02(self): "Module test with dependent modules" mods = InputModules(os.path.join(mod_base_dir, "modules02"), {}, [], mods_list("modules02", mod_base_dir)) mods_name = node_list_to_node_name_list(mods.get_reqdeps_sorted()) assert (mods_name == ['Module01', 'Module02'])
def main_setup(args, _mstdout, _mstderr): """Create the config and input modules for the main()""" config = MainHelper.main_setup_config(args) mods = InputModules(config) return config, mods
def test_positive_01(self): "InputModules._split_directory with '.'" d = InputModules._split_directory(".") assert (d == [])
def test_positive_02(self): "InputModules._split_directory with absolute path" d = InputModules._split_directory("/tmp/this/is/a/path") assert(d == ['/', 'tmp', 'this', 'is', 'a', 'path'])
def test_simple_02(self): "Module test with dependent modules" mods = InputModules(os.path.join(mod_base_dir, "modules02"), {}, [], mods_list("modules02", mod_base_dir)) mods_name = node_list_to_node_name_list(mods.get_reqdeps_sorted()) assert(mods_name == ['Module01', 'Module02'])