Esempio n. 1
0
    def test_parser_toolchain_regex(self):
        """Test the ToolchainVersionOperator parser"""
        top = ToolchainVersionOperator()
        _, tcs = search_toolchain('')
        tc_names = [x.NAME for x in tcs]
        for tc in tc_names:  # test all known toolchain names
            # test version expressions with optional version operator
            ok_tests = [
                ("%s >= 1.2.3" % tc, None),  # only dict repr for == operator
                ("%s == 1.2.3" % tc, {'name': tc, 'version': '1.2.3'}),
                (tc, None),  # only toolchain name, no dict repr (default operator is >=, version is 0.0.0)
            ]
            for txt, as_dict in ok_tests:
                self.assertTrue(top.regex.search(txt), "%s matches toolchain section marker regex" % txt)
                tcversop = ToolchainVersionOperator(txt)
                self.assertTrue(tcversop)
                self.assertEqual(tcversop.as_dict(), as_dict)

            # only accept known toolchain names
            fail_tests = [
                "x%s >= 1.2.3" % tc,
                "%sx >= 1.2.3" % tc,
                "foo",
                ">= 1.2.3",
            ]
            for txt in fail_tests:
                self.assertFalse(top.regex.search(txt), "%s doesn't match toolchain section marker regex" % txt)
                tcv = ToolchainVersionOperator(txt)
                self.assertEqual(tcv.tc_name, None)
                self.assertEqual(tcv.tcversop_str, None)
Esempio n. 2
0
    def test_parser_toolchain_regex(self):
        """Test the ToolchainVersionOperator parser"""
        top = ToolchainVersionOperator()
        _, tcs = search_toolchain('')
        tc_names = [x.NAME for x in tcs]
        for tc in tc_names:  # test all known toolchain names
            # test version expressions with optional version operator
            ok_tests = [
                "%s >= 1.2.3" % tc,
                "%s 1.2.3" % tc,
                tc,
            ]
            for txt in ok_tests:
                self.assertTrue(top.regex.search(txt), "%s matches toolchain section marker regex" % txt)
                self.assertTrue(ToolchainVersionOperator(txt))

            # only accept known toolchain names
            fail_tests = [
                "x%s >= 1.2.3" % tc,
                "%sx >= 1.2.3" % tc,
                "foo",
                ">= 1.2.3",
            ]
            for txt in fail_tests:
                self.assertFalse(top.regex.search(txt), "%s doesn't match toolchain section marker regex" % txt)
                self.assertFalse(ToolchainVersionOperator(txt))
Esempio n. 3
0
    def test_hashing(self):
        """Test hashing of VersionOperator and ToolchainVersionOperator instances."""

        test_cases = [
            VersionOperator('1.2.3'),
            VersionOperator('> 1.2.3'),
            ToolchainVersionOperator('foo'),
            ToolchainVersionOperator('foo > 1.2.3'),
        ]

        for test_case in test_cases:
            self.assertTrue(hash(test_case))
 def test_toolchain_versop_test(self):
     """Test the ToolchainVersionOperator test"""
     _, tcs = search_toolchain('')
     tc_names = [x.NAME for x in tcs]
     for tc in tc_names:  # test all known toolchain names
         # test version expressions with optional version operator
         tests = [
             ("%s >= 1.2.3" % tc, (
                 (tc, '1.2.3', True),  # version ok, name ok
                 (tc, '1.2.4', True),  # version ok, name ok
                 (tc, '1.2.2', False),  # version not ok, name ok
                 ('x' + tc, '1.2.3', False),  # version ok, name not ok
                 ('x' + tc, '1.2.2', False),  # version not ok, name not ok
                 )),
         ]
         for txt, subtests in tests:
             tcversop = ToolchainVersionOperator(txt)
             for name, version, res in subtests:
                 self.assertEqual(tcversop.test(name, version), res)
Esempio n. 5
0
 def test_toolchain_versop_test(self):
     """Test the ToolchainVersionOperator test"""
     _, tcs = search_toolchain('')
     tc_names = [x.NAME for x in tcs]
     for tc in tc_names:  # test all known toolchain names
         # test version expressions with optional version operator
         tests = [
             ("%s >= 1.2.3" % tc, (
                 (tc, '1.2.3', True),  # version ok, name ok
                 (tc, '1.2.4', True),  # version ok, name ok
                 (tc, '1.2.2', False),  # version not ok, name ok
                 ('x' + tc, '1.2.3', False),  # version ok, name not ok
                 ('x' + tc, '1.2.2', False),  # version not ok, name not ok
             )),
         ]
         for txt, subtests in tests:
             tcversop = ToolchainVersionOperator(txt)
             for name, version, res in subtests:
                 self.assertEqual(tcversop.test(name, version), res)
Esempio n. 6
0
    def test_dependency(self):
        """Test Dependency class"""
        versop_str = '>= 1.5'
        tc_versop_str = 'GCC >= 3.0'

        versop = VersionOperator(versop_str)
        tc_versop = ToolchainVersionOperator(tc_versop_str)

        txt = Dependency.SEPARATOR_DEP.join([versop_str])
        dest = {'versop':versop}
        res = Dependency(txt)
        self.assertEqual(dest, res)
        self.assertEqual(str(res), txt)

        txt = Dependency.SEPARATOR_DEP.join([versop_str, tc_versop_str])
        dest = {'versop':versop, 'tc_versop':tc_versop}
        res = Dependency(txt)
        self.assertEqual(dest, res)
        self.assertEqual(str(res), txt)
Esempio n. 7
0
    def _from_string(self, txt):
        """Convert from string
            versop_str;tc_versop_str -> {'versop': versop, 'tc_versop': tc_versop}
        """
        res = {}

        items = self._split_string(txt, sep=self.SEPARATOR_DEP)
        if len(items) < 1 or len(items) > 2:
            msg = 'Dependency has at least one element (a version operator string), '
            msg += 'and at most 2 (2nd element the toolchain version operator string). '
            msg += 'Separator %s.' % self.SEPARATOR_DEP
            raise ValueError(msg)

        res['versop'] = VersionOperator(items[0])

        if len(items) > 1:
            res['tc_versop'] = ToolchainVersionOperator(items[1])

        return res