Пример #1
0
    def test_rule_load_with_replatform_advice(self):
        rule = """
- category: "JEE Config"
  app_type: java
  file_type: config
  refactor_rating: 1
  replatform_advice: "Convert to Spring based application configuration"
  description: "JEE specific config file"
  files:
    - "application.xml"
"""

        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(1, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("JEE Config", rule.file_category,
                         "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type,
                         "File Type should be mapped")
        self.assertEqual("1", rule.refactor_rating,
                         "Refactor Rating should be mapped")
        self.assertEqual("Convert to Spring based application configuration",
                         rule.replatform_advice,
                         "Replatform Advice should be mapped")
        self.assertEqual("JEE specific config file", rule.description,
                         "Description should be mapped")
        self.assertEqual("application.xml", rule.file_name,
                         "File Name should be mapped")
Пример #2
0
    def test_rule_load_with_multiple_text_patterns(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  text_patterns: [ "pattern1", "pattern2" ]
  files: [ "file1" ]
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category,
                             "Category should be mapped")
            self.assertEqual("app1", rule.app_type,
                             "App Type should be mapped")
            self.assertEqual("type1", rule.file_type,
                             "File Type should be mapped")
            self.assertEqual("file1", rule.file_name,
                             "File name should be mapped")
            self.assertTrue(rule.text_pattern == "pattern1"
                            or rule.text_pattern == "pattern2")
            if rule.text_pattern == "pattern1":
                found1 = True
            elif rule.text_pattern == "pattern2":
                found2 = True
        self.assertTrue(found1 and found2,
                        "Should have found pattern1 and pattern2")
Пример #3
0
    def test_rule_load_with_file_pattern(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  file_pattern: "*.file1"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(1, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("cat1", rule.file_category,
                         "Category should be mapped")
        self.assertEqual("app1", rule.app_type, "App Type should be mapped")
        self.assertEqual("type1", rule.file_type, "File Type should be mapped")
        self.assertEqual("*.file1", rule.file_name,
                         "File name should be mapped")
        self.assertEqual("1", rule.refactor_rating,
                         "Refactor Rating should be mapped")
        self.assertEqual("foo", rule.replatform_advice,
                         "Replatform Advice should be mapped")
        self.assertEqual("desc1", rule.description,
                         "Description should be mapped")
    def test_rule_load_with_overriden_description_replatform_advice_refactor_rating(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 0
  replatform_advice: "foo"
  description: "desc1"
  files:
    - "file1": { description: "desc2", replatform_advice: "bar", refactor_rating: 2 }
    - "file2"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category, "Category should be mapped")
            self.assertEqual("app1", rule.app_type, "App Type should be mapped")
            self.assertEqual("type1", rule.file_type, "File Type should be mapped")
            self.assertTrue(rule.file_name == "file1" or rule.file_name == "file2")
            if rule.file_name == "file1":
                found1 = True
                self.assertEqual("2", rule.refactor_rating, "Refactor Rating should be mapped")
                self.assertEqual("bar", rule.replatform_advice, "Replatform Advice should be mapped")
                self.assertEqual("desc2", rule.description, "Description should be mapped")
            elif rule.file_name == "file2":
                found2 = True
                self.assertEqual("0", rule.refactor_rating, "Refactor Rating should be mapped")
                self.assertEqual("foo", rule.replatform_advice, "Replatform Advice should be mapped")
                self.assertEqual("desc1", rule.description, "Description should be mapped")
                self.assertEqual("file2", rule.file_name, "File Name should be mapped")
        self.assertTrue(found1 and found2, "Should have found both file1 and file2")
    def test_multiple_file_rule_load(self):
        rule = """
- category: "Web Profile"
  app_type: java
  file_type: config
  refactor_rating: 0
  description: "Web application config file"
  files:
    - "web.xml"
    - "foo.barml"
"""

        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("Web Profile", rule.file_category, "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type, "File Type should be mapped")
        self.assertEqual("0", rule.refactor_rating, "Refactor Rating should be mapped")
        self.assertEqual("Web application config file", rule.description, "Description should be mapped")
        self.assertEqual("web.xml", rule.file_name, "File Name should be mapped")
        rule = Scanner.rulebase[1]
        self.assertEqual("Web Profile", rule.file_category, "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type, "File Type should be mapped")
        self.assertEqual("0", rule.refactor_rating, "Refactor Rating should be mapped")
        self.assertEqual("Web application config file", rule.description, "Description should be mapped")
        self.assertEqual("foo.barml", rule.file_name, "File Name should be mapped")
    def test_rule_load_with_multiple_text_patterns_overrides_and_file_pattern(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  text_patterns:
    - "pattern1"
    - "pattern2": { description: "desc2", replatform_advice: "bar", refactor_rating: 2 }
  file_pattern: "*.file1"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category, "Category should be mapped")
            self.assertEqual("app1", rule.app_type, "App Type should be mapped")
            self.assertEqual("type1", rule.file_type, "File Type should be mapped")
            self.assertEqual("*.file1", rule.file_name, "File name should be mapped")
            self.assertTrue(rule.text_pattern == "pattern1" or rule.text_pattern == "pattern2")
            if rule.text_pattern == "pattern1":
                found1 = True
                self.assertEqual("desc1", rule.description, "Description should be mapped")
                self.assertEqual("foo", rule.replatform_advice, "Replatform advice should be mapped")
                self.assertEqual("1", rule.refactor_rating, "Refactor rating should be mapped")
            elif rule.text_pattern == "pattern2":
                found2 = True
                self.assertEqual("desc2", rule.description, "Description should be mapped")
                self.assertEqual("bar", rule.replatform_advice, "Replatform advice should be mapped")
                self.assertEqual("2", rule.refactor_rating, "Refactor rating should be mapped")
        self.assertTrue(found1 and found2, "Should have found pattern1 and pattern2")
    def test_rule_load_with_multiple_text_patterns(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  text_patterns: [ "pattern1", "pattern2" ]
  files: [ "file1" ]
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category, "Category should be mapped")
            self.assertEqual("app1", rule.app_type, "App Type should be mapped")
            self.assertEqual("type1", rule.file_type, "File Type should be mapped")
            self.assertEqual("file1", rule.file_name, "File name should be mapped")
            self.assertTrue(rule.text_pattern == "pattern1" or rule.text_pattern == "pattern2")
            if rule.text_pattern == "pattern1":
                found1 = True
            elif rule.text_pattern == "pattern2":
                found2 = True
        self.assertTrue(found1 and found2, "Should have found pattern1 and pattern2")
Пример #8
0
    def test_rule_load_with_multiple_text_patterns_overrides_and_file_pattern(
            self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  text_patterns:
    - "pattern1"
    - "pattern2": { description: "desc2", replatform_advice: "bar", refactor_rating: 2 }
  file_pattern: "*.file1"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category,
                             "Category should be mapped")
            self.assertEqual("app1", rule.app_type,
                             "App Type should be mapped")
            self.assertEqual("type1", rule.file_type,
                             "File Type should be mapped")
            self.assertEqual("*.file1", rule.file_name,
                             "File name should be mapped")
            self.assertTrue(rule.text_pattern == "pattern1"
                            or rule.text_pattern == "pattern2")
            if rule.text_pattern == "pattern1":
                found1 = True
                self.assertEqual("desc1", rule.description,
                                 "Description should be mapped")
                self.assertEqual("foo", rule.replatform_advice,
                                 "Replatform advice should be mapped")
                self.assertEqual("1", rule.refactor_rating,
                                 "Refactor rating should be mapped")
            elif rule.text_pattern == "pattern2":
                found2 = True
                self.assertEqual("desc2", rule.description,
                                 "Description should be mapped")
                self.assertEqual("bar", rule.replatform_advice,
                                 "Replatform advice should be mapped")
                self.assertEqual("2", rule.refactor_rating,
                                 "Refactor rating should be mapped")
        self.assertTrue(found1 and found2,
                        "Should have found pattern1 and pattern2")
Пример #9
0
    def test_rule_load_with_overriden_description_replatform_advice_refactor_rating(
            self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 0
  replatform_advice: "foo"
  description: "desc1"
  files:
    - "file1": { description: "desc2", replatform_advice: "bar", refactor_rating: 2 }
    - "file2"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        found1 = False
        found2 = False
        for rule in Scanner.rulebase:
            self.assertEqual("cat1", rule.file_category,
                             "Category should be mapped")
            self.assertEqual("app1", rule.app_type,
                             "App Type should be mapped")
            self.assertEqual("type1", rule.file_type,
                             "File Type should be mapped")
            self.assertTrue(rule.file_name == "file1"
                            or rule.file_name == "file2")
            if rule.file_name == "file1":
                found1 = True
                self.assertEqual("2", rule.refactor_rating,
                                 "Refactor Rating should be mapped")
                self.assertEqual("bar", rule.replatform_advice,
                                 "Replatform Advice should be mapped")
                self.assertEqual("desc2", rule.description,
                                 "Description should be mapped")
            elif rule.file_name == "file2":
                found2 = True
                self.assertEqual("0", rule.refactor_rating,
                                 "Refactor Rating should be mapped")
                self.assertEqual("foo", rule.replatform_advice,
                                 "Replatform Advice should be mapped")
                self.assertEqual("desc1", rule.description,
                                 "Description should be mapped")
                self.assertEqual("file2", rule.file_name,
                                 "File Name should be mapped")
        self.assertTrue(found1 and found2,
                        "Should have found both file1 and file2")
    def test_rule_load_with_file_pattern(self):
        rule = """
- category: "cat1"
  app_type: app1
  file_type: type1
  refactor_rating: 1
  replatform_advice: "foo"
  description: "desc1"
  file_pattern: "*.file1"
"""
        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(1, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("cat1", rule.file_category, "Category should be mapped")
        self.assertEqual("app1", rule.app_type, "App Type should be mapped")
        self.assertEqual("type1", rule.file_type, "File Type should be mapped")
        self.assertEqual("*.file1", rule.file_name, "File name should be mapped")
        self.assertEqual("1", rule.refactor_rating, "Refactor Rating should be mapped")
        self.assertEqual("foo", rule.replatform_advice, "Replatform Advice should be mapped")
        self.assertEqual("desc1", rule.description, "Description should be mapped")
Пример #11
0
    def test_multiple_file_rule_load(self):
        rule = """
- category: "Web Profile"
  app_type: java
  file_type: config
  refactor_rating: 0
  description: "Web application config file"
  files:
    - "web.xml"
    - "foo.barml"
"""

        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(2, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("Web Profile", rule.file_category,
                         "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type,
                         "File Type should be mapped")
        self.assertEqual("0", rule.refactor_rating,
                         "Refactor Rating should be mapped")
        self.assertEqual("Web application config file", rule.description,
                         "Description should be mapped")
        self.assertEqual("web.xml", rule.file_name,
                         "File Name should be mapped")
        rule = Scanner.rulebase[1]
        self.assertEqual("Web Profile", rule.file_category,
                         "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type,
                         "File Type should be mapped")
        self.assertEqual("0", rule.refactor_rating,
                         "Refactor Rating should be mapped")
        self.assertEqual("Web application config file", rule.description,
                         "Description should be mapped")
        self.assertEqual("foo.barml", rule.file_name,
                         "File Name should be mapped")
    def test_rule_load_with_replatform_advice(self):
        rule = """
- category: "JEE Config"
  app_type: java
  file_type: config
  refactor_rating: 1
  replatform_advice: "Convert to Spring based application configuration"
  description: "JEE specific config file"
  files:
    - "application.xml"
"""

        Scanner.load_yaml_rules_stream(rule)
        self.assertEqual(1, len(Scanner.rulebase))
        rule = Scanner.rulebase[0]
        self.assertEqual("JEE Config", rule.file_category, "Category should be mapped")
        self.assertEqual("java", rule.app_type, "App Type should be mapped")
        self.assertEqual("config", rule.file_type, "File Type should be mapped")
        self.assertEqual("1", rule.refactor_rating, "Refactor Rating should be mapped")
        self.assertEqual("Convert to Spring based application configuration", rule.replatform_advice,
                         "Replatform Advice should be mapped")
        self.assertEqual("JEE specific config file", rule.description, "Description should be mapped")
        self.assertEqual("application.xml", rule.file_name, "File Name should be mapped")