예제 #1
0
 def test_relationship_parsing(self):
     relationship_set = deps.parse_depends('foo, bar (>= 1) | baz')
     expected = deps.AndRelationships(
         relationships=(deps.Relationship(name='foo'),
                        deps.OrRelationships(
                            relationships=(deps.VersionedRelationship(
                                name='bar', operator='>=', version='1'),
                                           deps.Relationship(name='baz')))))
     assert relationship_set == expected
예제 #2
0
 def test_parse_depends(self):
     depends = deps.parse_depends('python (>= 2.6), python (<< 3)')
     expected = deps.AndRelationships(
         relationships=(deps.VersionedRelationship(
             name='python', operator='>=', version='2.6'),
                        deps.VersionedRelationship(
                            name='python', operator='<<', version='3')))
     assert depends == expected
     assert not depends.matches('python', '2.5')
     assert depends.matches('python', '2.6')
     assert depends.matches('python', '2.7')
예제 #3
0
    def test_relationships_objects_as_strings(self):
        def strip(text):
            return re.sub(r'\s+', '', text)

        relationship_set = deps.parse_depends('foo, bar(>=1)|baz[i386]')
        expected = 'foo, bar (>= 1) | baz [i386]'
        assert str(relationship_set) == expected

        expected = deps.AndRelationships(relationships=(
            deps.Relationship(name='foo'),
            deps.OrRelationships(relationships=(
                deps.VersionedRelationship(
                    name='bar', operator='>=', version='1'),
                deps.Relationship(name='baz', architectures=('i386', ))))))
        assert relationship_set == expected
예제 #4
0
    def test_parse_depends_misc(self):
        dependencies = deps.parse_depends(
            'python (>= 2.6), python (<< 3) | python (>= 3.4)')
        expected = deps.AndRelationships(relationships=(
            deps.VersionedRelationship(
                name='python', operator='>=', version='2.6'),
            deps.OrRelationships(relationships=(
                deps.VersionedRelationship(
                    name='python', operator='<<', version='3'),
                deps.VersionedRelationship(
                    name='python', operator='>=', version='3.4'),
            )),
        ))
        assert dependencies == expected

        expected = 'python (>= 2.6), python (<< 3) | python (>= 3.4)'
        assert str(dependencies) == expected
예제 #5
0
 def test_parse_control_fields_1(self):
     deb822_package = debcon.Debian822([
         ('Package', 'python-py2deb'),
         ('Depends', 'python-deb-pkg-tools, python-pip, python-pip-accel'),
         ('Installed-Size', '42'),
     ])
     parsed_info = debcon.parse_control_fields(deb822_package)
     expected = {
         'Package':
         'python-py2deb',
         'Depends':
         deps.AndRelationships(
             (deps.Relationship(name=u'python-deb-pkg-tools'),
              deps.Relationship(name=u'python-pip'),
              deps.Relationship(name=u'python-pip-accel'))),
         'Installed-Size':
         42
     }
     assert parsed_info == expected
예제 #6
0
    def test_parse_control_fields_2(self):
        unparsed_fields = debcon.Debian822.from_string('''
Package: python3.4-minimal
Version: 3.4.0-1+precise1
Architecture: amd64
Installed-Size: 3586
Pre-Depends: libc6 (>= 2.15)
Depends: libpython3.4-minimal (= 3.4.0-1+precise1), libexpat1 (>= 1.95.8), libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.2.0), foo | bar
Recommends: python3.4
Suggests: binfmt-support
Conflicts: binfmt-support (<< 1.1.2)
''')

        expected = {
            'Architecture':
            'amd64',
            'Conflicts':
            'binfmt-support (<< 1.1.2)',
            'Depends':
            'libpython3.4-minimal (= 3.4.0-1+precise1), libexpat1 (>= 1.95.8), '
            'libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.2.0), foo | bar',
            'Installed-Size':
            '3586',
            'Package':
            'python3.4-minimal',
            'Pre-Depends':
            'libc6 (>= 2.15)',
            'Recommends':
            'python3.4',
            'Suggests':
            'binfmt-support',
            'Version':
            '3.4.0-1+precise1',
        }

        assert unparsed_fields.to_dict(normalize_names=True) == expected

        parsed_fields = debcon.parse_control_fields(unparsed_fields)

        expected = {
            'Architecture':
            'amd64',
            'Conflicts':
            deps.AndRelationships(relationships=(deps.VersionedRelationship(
                name=u'binfmt-support', operator=u'<<', version=u'1.1.2'), )),
            'Depends':
            deps.AndRelationships(
                relationships=(deps.VersionedRelationship(
                    name=u'libpython3.4-minimal',
                    operator=u'=',
                    version=u'3.4.0-1+precise1'),
                               deps.VersionedRelationship(name=u'libexpat1',
                                                          operator=u'>=',
                                                          version=u'1.95.8'),
                               deps.VersionedRelationship(name=u'libgcc1',
                                                          operator=u'>=',
                                                          version=u'1:4.1.1'),
                               deps.VersionedRelationship(name=u'zlib1g',
                                                          operator=u'>=',
                                                          version=u'1:1.2.0'),
                               deps.OrRelationships(relationships=(
                                   deps.Relationship(name=u'foo'),
                                   deps.Relationship(name=u'bar'),
                               ))), ),
            'Installed-Size':
            3586,
            'Package':
            'python3.4-minimal',
            'Pre-Depends':
            deps.AndRelationships(relationships=(deps.VersionedRelationship(
                name=u'libc6', operator=u'>=', version=u'2.15'), )),
            'Recommends':
            deps.AndRelationships(relationships=(deps.Relationship(
                name=u'python3.4'), )),
            'Suggests':
            deps.AndRelationships(relationships=(deps.Relationship(
                name=u'binfmt-support'), )),
            'Version':
            '3.4.0-1+precise1'
        }

        assert parsed_fields == expected
예제 #7
0
 def test_relationship_parsing_single_relationship(self):
     expected = deps.AndRelationships(
         relationships=(deps.VersionedRelationship(
             name='foo', operator='=', version='1.0'), ))
     assert deps.parse_depends('foo (=1.0)') == expected