コード例 #1
0
    def test_matches_version_with_require_current_system_no_match(self):
        """Testing PackageRules.matches_version with
        require_current_system=True and no match
        """
        bundle = PackageBundle(manifest_url='packages/TestPackage/index.json')

        channel = PackageChannel(
            bundle=bundle,
            name='1.0.x',
            created_timestamp=datetime(2015, 10, 11, 8, 17, 29, 958569),
            last_updated_timestamp=datetime(2015, 10, 12, 8, 17, 29, 958569))
        channel._loaded = True

        rules = PackageRules(channel=channel,
                             version_range='*',
                             package_type='python',
                             package_name='TestPackage',
                             systems=['MyDistro>=2.3.4'])
        channel._package_rules = [rules]

        self.spy_on(platform.system, call_fake=lambda: 'Linux')
        self.spy_on(platform.dist, call_fake=lambda: ('MyDistro', '1.3', ''))

        self.assertFalse(rules.matches_version('1.0',
                                               require_current_system=True))
コード例 #2
0
    def test_serialize(self):
        """Testing PackageRules.serialize"""
        bundle = PackageBundle()
        channel = PackageChannel(bundle)

        rules = PackageRules(
            channel=channel,
            version_range='*',
            package_type=PackageRules.PACKAGE_TYPE_RPM,
            systems=['centos', 'macosx'],
            package_name='TestPackage',
            required_dependencies=['foo'],
            recommended_dependencies=['bar'],
            optional_dependencies=['baz'],
            replaces=['OldPackage'],
            pre_install_commands=['echo pre-install'],
            install_commands=['echo install'],
            post_install_commands=['echo post-install'],
            install_flags=['--with-pie', '--with-ice-cream'],
            uninstall_commands=['echo uninstall'])

        self.assertEqual(
            rules.serialize(),
            {
                'version_range': '*',
                'package_type': 'rpm',
                'package_name': 'TestPackage',
                'systems': ['centos', 'macosx'],
                'dependencies': {
                    'required': ['foo'],
                    'recommended': ['bar'],
                    'optional': ['baz'],
                },
                'replaces': ['OldPackage'],
                'pre_install_commands': [
                    'echo pre-install',
                ],
                'install_commands': [
                    'echo install',
                ],
                'post_install_commands': [
                    'echo post-install',
                ],
                'install_flags': [
                    '--with-pie',
                    '--with-ice-cream',
                ],
                'uninstall_commands': [
                    'echo uninstall',
                ],
            })
コード例 #3
0
ファイル: package_channel.py プロジェクト: reviewboard/rbpkg
    def load(self):
        """Load data from the manifest file.

        The data from the manifest will be loaded and stored in this
        instance, allowing the caller to access it.
        """
        # Let the exceptions bubble up.
        data = get_data_loader().load_by_path(self.absolute_manifest_url)

        self._releases = []
        self._package_rules = []

        self.created_timestamp = \
            dateutil.parser.parse(data['created_timestamp'])
        self.last_updated_timestamp = \
            dateutil.parser.parse(data['last_updated_timestamp'])

        self._releases = [
            PackageRelease.deserialize(self, releases_data)
            for releases_data in data['releases']
        ]

        self._package_rules = [
            PackageRules.deserialize(self, rules_data)
            for rules_data in data['package_rules']
        ]

        self._loaded = True
コード例 #4
0
    def test_deserialize_with_minimum_info(self):
        """Testing PackageRules.deserialize with minimum info"""
        bundle = PackageBundle()
        channel = PackageChannel(bundle)
        rules = PackageRules.deserialize(
            channel,
            {
                'version_range': '*',
                'package_type': 'rpm',
                'systems': ['centos', 'macosx'],
            })

        self.assertEqual(rules.version_range, '*')
        self.assertEqual(rules.package_type, PackageRules.PACKAGE_TYPE_RPM)
        self.assertEqual(rules.systems, ['centos', 'macosx'])
        self.assertEqual(rules.package_name, None)
        self.assertEqual(rules.required_dependencies, [])
        self.assertEqual(rules.recommended_dependencies, [])
        self.assertEqual(rules.optional_dependencies, [])
        self.assertEqual(rules.replaces, [])
        self.assertEqual(rules.pre_install_commands, [])
        self.assertEqual(rules.install_commands, [])
        self.assertEqual(rules.post_install_commands, [])
        self.assertEqual(rules.install_flags, [])
        self.assertEqual(rules.uninstall_commands, [])
コード例 #5
0
    def test_matches_version_without_match(self):
        """Testing PackageRules.matches_version without match"""
        bundle = PackageBundle(manifest_url='packages/TestPackage/index.json')

        channel = PackageChannel(
            bundle=bundle,
            name='1.0.x',
            created_timestamp=datetime(2015, 10, 11, 8, 17, 29, 958569),
            last_updated_timestamp=datetime(2015, 10, 12, 8, 17, 29, 958569))
        channel._loaded = True

        rules = PackageRules(channel=channel,
                             version_range='>=2.0',
                             package_type='python',
                             package_name='TestPackage',
                             systems=['*'])
        channel._package_rules = [rules]

        self.assertFalse(rules.matches_version('1.0',
                                               require_current_system=False))
コード例 #6
0
    def test_deserialize_with_all_info(self):
        """Testing PackageRules.deserialize with all available info"""
        bundle = PackageBundle()
        channel = PackageChannel(bundle)
        rules = PackageRules.deserialize(
            channel,
            {
                'version_range': '*',
                'package_type': 'rpm',
                'package_name': 'TestPackage',
                'systems': ['centos', 'macosx'],
                'dependencies': {
                    'required': ['foo'],
                    'recommended': ['bar'],
                    'optional': ['baz'],
                },
                'replaces': ['OldPackage'],
                'pre_install_commands': [
                    'echo pre-install',
                ],
                'install_commands': [
                    'echo install',
                ],
                'post_install_commands': [
                    'echo post-install',
                ],
                'install_flags': [
                    '--with-pie',
                    '--with-ice-cream',
                ],
                'uninstall_commands': [
                    'echo uninstall',
                ],
            })

        self.assertEqual(rules.version_range, '*')
        self.assertEqual(rules.package_type, PackageRules.PACKAGE_TYPE_RPM)
        self.assertEqual(rules.package_name, 'TestPackage')
        self.assertEqual(rules.systems, ['centos', 'macosx'])
        self.assertEqual(rules.required_dependencies, ['foo'])
        self.assertEqual(rules.recommended_dependencies, ['bar'])
        self.assertEqual(rules.optional_dependencies, ['baz'])
        self.assertEqual(rules.replaces, ['OldPackage'])
        self.assertEqual(rules.pre_install_commands, ['echo pre-install'])
        self.assertEqual(rules.install_commands, ['echo install'])
        self.assertEqual(rules.post_install_commands, ['echo post-install'])
        self.assertEqual(rules.install_flags,
                         ['--with-pie', '--with-ice-cream'])
        self.assertEqual(rules.uninstall_commands, ['echo uninstall'])