Esempio n. 1
0
def test_get_package_tree_package_path(mocker, package_omit, exclude):
    path = Path('foobar')
    cfg = Configuration(package_paths=[path], package_omit=package_omit)
    tree = Directory(
        path=None,
        entries={
            "foobar":
            Directory(
                path="foobar/",
                entries={
                    "__init__.py": File(
                        ('foobar', '__init__.py'),
                        None,
                        None,
                    ),
                    "foo.py": File(
                        ('foobar', 'foo.py'),
                        None,
                        None,
                    ),
                    "bar.py": File(
                        ('foobar', 'bar.py'),
                        None,
                        None,
                    ),
                },
            ),
        },
    )
    fltmock = mocker.patch.object(Directory,
                                  'from_local_tree',
                                  return_value=tree)
    assert cfg.get_package_tree() == tree
    fltmock.assert_called_once_with(path, exclude=exclude)
Esempio n. 2
0
def test_from_local_tree_exclude_multilevel_name(local_tree_fs):
    assert Directory.from_local_tree(
        Path('/var/data'), exclude=['bar/__pycache__']) == Directory(
            path=None,
            entries={
                "data":
                Directory(
                    path='data/',
                    entries={
                        "foo.py":
                        File(('data', 'foo.py'), None, None),
                        "foo.pyc":
                        File(('data', 'foo.pyc'), None, None),
                        "bar":
                        Directory(
                            path='data/bar/',
                            entries={
                                "__init__.py":
                                File(
                                    ('data', 'bar', '__init__.py'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                    },
                ),
            },
        )
Esempio n. 3
0
def test_from_local_tree_directory_excluded(local_tree_fs):
    assert Directory.from_local_tree(
        Path('/var/data/bar'), exclude=['bar']) == Directory(
            path=None,
            entries={
                "bar":
                Directory(
                    path='bar/',
                    entries={
                        "__init__.py":
                        File(
                            ('bar', '__init__.py'),
                            None,
                            None,
                        ),
                        "__pycache__":
                        Directory(
                            path='bar/__pycache__/',
                            entries={
                                "__init__.cpython-36.pyc":
                                File(
                                    ('bar', '__pycache__',
                                     '__init__.cpython-36.pyc'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                    },
                ),
            },
        )
Esempio n. 4
0
def test_all_files():
    d = Directory()
    foo = File.from_record_row(['foo.py', '', ''])
    d.add_entry(foo)
    bar_glarch = File.from_record_row(['bar/glarch.py', '', ''])
    d.add_entry(bar_glarch)
    quux = File.from_record_row(['quux.py', '', ''])
    d.add_entry(quux)
    bar_cleesh = File.from_record_row(['bar/cleesh.py', '', ''])
    d.add_entry(bar_cleesh)
    assert d.entries == {
        "foo.py":
        foo,
        "bar":
        Directory(path='bar/',
                  entries={
                      "glarch.py": bar_glarch,
                      "cleesh.py": bar_cleesh
                  }),
        "quux.py":
        quux,
    }
    assert list(d.entries.keys()) == ["foo.py", "bar", "quux.py"]
    assert list(d["bar"].entries.keys()) == ["glarch.py", "cleesh.py"]
    assert list(d.all_files()) == [foo, bar_glarch, bar_cleesh, quux]
Esempio n. 5
0
def test_trees_data_purelib():
    """
    Test the ``purelib_tree`` and ``platlib_tree`` attributes of a platlib
    wheel containing a nonempty purelib and an empty platlib
    """
    whlcon = WheelContents.from_wheel(
        WHEEL_DIR /
        'mxnet_coreml_converter-0.1.0a7-cp27-cp27m-macosx_10_7_x86_64.whl')
    assert whlcon.dist_info_dir == 'mxnet_coreml_converter-0.1.0a7.dist-info'
    assert whlcon.data_dir == 'mxnet_coreml_converter-0.1.0a7.data'
    assert whlcon.root_is_purelib is False
    assert whlcon.purelib_tree == Directory(
        path='mxnet_coreml_converter-0.1.0a7.data/purelib/',
        entries={
            "converter":
            Directory(
                path='mxnet_coreml_converter-0.1.0a7.data/purelib/converter/',
                entries={
                    "__init__.py":
                    File(
                        ('mxnet_coreml_converter-0.1.0a7.data', 'purelib',
                         'converter', '__init__.py'),
                        786,
                        'sha256=EWsEJdqMbVZOBLYEvcci5VgvFEul-nubLnmcMn5MJlI',
                    ),
                    "_add_pooling.py":
                    File(
                        ('mxnet_coreml_converter-0.1.0a7.data', 'purelib',
                         'converter', '_add_pooling.py'),
                        5499,
                        'sha256=2wyhzbR60jm1uoMqgb50o7QHb7k5S3qJx3Xh17musnE',
                    ),
                    "_layers.py":
                    File(
                        ('mxnet_coreml_converter-0.1.0a7.data', 'purelib',
                         'converter', '_layers.py'),
                        16133,
                        'sha256=5w5ddYvF9mJv0YFKKcg4AqQPae4dZDYwn2iNyihukhU',
                    ),
                    "_mxnet_converter.py":
                    File(
                        ('mxnet_coreml_converter-0.1.0a7.data', 'purelib',
                         'converter', '_mxnet_converter.py'),
                        8850,
                        'sha256=kPLQxZv_KpuwRO1_gaa8vxhSMoDgNDEVJ-ZVLK02L2E',
                    ),
                    "utils.py":
                    File(
                        ('mxnet_coreml_converter-0.1.0a7.data', 'purelib',
                         'converter', 'utils.py'),
                        2447,
                        'sha256=oa9WWamfXwfNVMcjD0MERh_GeiwFDP9n4gEockPDr7Y',
                    ),
                },
            ),
        },
    )
    assert whlcon.platlib_tree == Directory()
Esempio n. 6
0
def test_by_signature_dup_files():
    whlcon = WheelContents(
        dist_info_dir='foo-1.0.dist-info',
        data_dir='foo-1.0.data',
        root_is_purelib=True,
    )
    whlcon.add_record_rows([
        [
            'foo-1.0.dist-info/METADATA',
            'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk',
            '950',
        ],
        [
            'foo.py',
            'sha256=feFUDF3H45ZfOetuMteWVwEzHex4AH9o_1vuVTvl9g4',
            '995',
        ],
        [
            'foo/__init__.py',
            'sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU',
            '0',
        ],
        [
            'foo/duplicate.py',
            'sha256=feFUDF3H45ZfOetuMteWVwEzHex4AH9o_1vuVTvl9g4',
            '995',
        ],
    ])
    whlcon.validate_tree()
    assert whlcon.by_signature == {
        (950, 'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk'): [
            File(
                ('foo-1.0.dist-info', 'METADATA'),
                950,
                'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk',
            )
        ],
        (995, 'sha256=feFUDF3H45ZfOetuMteWVwEzHex4AH9o_1vuVTvl9g4'): [
            File(
                ('foo.py', ),
                995,
                'sha256=feFUDF3H45ZfOetuMteWVwEzHex4AH9o_1vuVTvl9g4',
            ),
            File(
                ('foo', 'duplicate.py'),
                995,
                'sha256=feFUDF3H45ZfOetuMteWVwEzHex4AH9o_1vuVTvl9g4',
            )
        ],
        (0, 'sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU'): [
            File(
                ('foo', '__init__.py'),
                0,
                'sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU',
            )
        ],
    }
def test_from_local_tree():
    assert Directory.from_local_tree(PROJECT_TREE) == Directory(
        path=None,
        entries={
            "project-tree":
            Directory(
                path='project-tree/',
                entries={
                    "foo.py":
                    File(('project-tree', 'foo.py'), None, None),
                    "foo.pyc":
                    File(('project-tree', 'foo.pyc'), None, None),
                    "bar":
                    Directory(
                        path='project-tree/bar/',
                        entries={
                            "__init__.py":
                            File(
                                ('project-tree', 'bar', '__init__.py'),
                                None,
                                None,
                            ),
                            "__pycache__":
                            Directory(
                                path='project-tree/bar/__pycache__/',
                                entries={
                                    "__init__.cpython-36.pyc":
                                    File(
                                        ('project-tree', 'bar', '__pycache__',
                                         '__init__.cpython-36.pyc'),
                                        None,
                                        None,
                                    ),
                                },
                            ),
                        },
                    ),
                    "src":
                    Directory(
                        path='project-tree/src/',
                        entries={
                            ".placeholder":
                            File(
                                ('project-tree', 'src', '.placeholder'),
                                None,
                                None,
                            ),
                        },
                    ),
                },
            ),
        },
    )
def test_trees_data_platlib():
    """
    Test the ``purelib_tree`` and ``platlib_tree`` attributes of a purelib
    wheel containing an empty purelib and a nonempty platlib
    """
    whlcon = WheelContents.from_wheel(WHEEL_DIR/'MPC2860-0.3-py3-none-any.whl')
    assert whlcon.dist_info_dir == 'MPC2860-0.3.dist-info'
    assert whlcon.data_dir == 'MPC2860-0.3.data'
    assert whlcon.root_is_purelib is True
    assert whlcon.purelib_tree == Directory()
    assert whlcon.platlib_tree == Directory(
        path='MPC2860-0.3.data/platlib/',
        entries={
            "_motion_2860.pyd": File(
                ('MPC2860-0.3.data', 'platlib', '_motion_2860.pyd'),
                23040,
                'sha256=kCCzhKz-ZujN2OI0gaeB1W1WHUaC_PdifaIwy4AG6uA',
            ),
            "MPC2860": Directory(
                path='MPC2860-0.3.data/platlib/MPC2860/',
                entries={
                    "MPC2860.dll": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', 'MPC2860.dll'),
                        548974,
                        'sha256=kOatNp1OqMU-bSzDgNtl9fg-cbQROp2pfnC_dAkD7zw',
                    ),
                    "MPC2860.lib": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', 'MPC2860.lib'),
                        29200,
                        'sha256=mW1wenQt2kDLZLZFNShxzTxI-lsFUvroi7nlOC-WnbA',
                    ),
                    "MPC2860CFG.txt": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', 'MPC2860CFG.txt'),
                        56,
                        'sha256=HVDtq-6twa1_nOtCBmuyrGB24EsnJ8PmoRYdqqBqFDI',
                    ),
                    "__init__.py": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', '__init__.py'),
                        27,
                        'sha256=PYXKN_qL7Q0aak8GkOsleT-8hAezfzcbRR3gxCSB7n8',
                    ),
                    "_motion_2860.pyd": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', '_motion_2860.pyd'),
                        23040,
                        'sha256=kCCzhKz-ZujN2OI0gaeB1W1WHUaC_PdifaIwy4AG6uA',
                    ),
                    "motion_2860.i": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', 'motion_2860.i'),
                        98,
                        'sha256=cwWUHTvpo_ZmeSg7pDcD0qUM4LJnuOH2gZS6Zz4f0p8',
                    ),
                    "motion_2860.py": File(
                        ('MPC2860-0.3.data', 'platlib', 'MPC2860', 'motion_2860.py'),
                        4283,
                        'sha256=gn_45lgJZ1MQqvaBkjSnBJSbZUKmWGMy-1G8cln5-78',
                    ),
                },
            ),
        },
    )
Esempio n. 9
0
def test_add_entry_in_known_dir():
    d = Directory()
    f = File.from_record_row(['foo/bar.py', '', ''])
    d.add_entry(f)
    f2 = File.from_record_row(['foo/glarch.py', '', ''])
    d.add_entry(f2)
    assert d.entries == {
        "foo": Directory(path='foo/', entries={
            "bar.py": f,
            "glarch.py": f2
        }),
    }
    assert d.entries["foo"].entries["glarch.py"] is f2
    assert d["foo"]["glarch.py"] is f2
    assert list(d["foo"].entries.keys()) == ["bar.py", "glarch.py"]
def test_validate_tree_dir_rows(purelib):
    whlcon = WheelContents(
        dist_info_dir='foo-1.0.dist-info',
        data_dir='foo-1.0.data',
        root_is_purelib=purelib,
    )
    whlcon.add_record_rows([
        [
            'foo-1.0.dist-info/METADATA',
            'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk',
            '950',
        ],
        ['empty/', '', ''],
    ])
    whlcon.validate_tree()
    assert whlcon.filetree == Directory(
        path=None,
        entries={
            "empty": Directory('empty/'),
            "foo-1.0.dist-info": Directory(
                path="foo-1.0.dist-info/",
                entries={
                    "METADATA": File(
                        ('foo-1.0.dist-info', 'METADATA'),
                        950,
                        'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk',
                    ),
                },
            ),
        },
    )
    assert whlcon.by_signature == {
        (950, 'sha256=NVefY26xjCmYCQCnZaKUTNc5WaqZHDKxVde8l72cVOk'):
            [whlcon.filetree["foo-1.0.dist-info"]["METADATA"]],
    }
def test_apply_config_toplevel_pkgtree_mismatch_warning(capsys, mocker):
    pkgtree = Directory(
        path=None,
        entries={
            "foo.py": File(('foo.py'), None, None),
            "bar": Directory(path='bar/'),
        },
    )
    cfg = mocker.Mock(
        **{
            "get_selected_checks.return_value": mocker.sentinel.SELECTED,
            "get_package_tree.return_value": pkgtree,
        }, )
    cfg.toplevel = ["bar.py", "foo"]
    checker = WheelChecker()
    checker.apply_config(cfg)
    assert attr.asdict(checker, recurse=False) == {
        "selected": mocker.sentinel.SELECTED,
        "toplevel": ["bar.py", "foo"],
        "pkgtree": pkgtree,
    }
    captured = capsys.readouterr()
    assert captured.out == ''
    assert captured.err == (
        'Warning: --toplevel value does not match top level of --package/'
        '--src-dir file tree\n')
Esempio n. 12
0
def test_add_entry_nonempty_dir():
    d = Directory()
    foo = Directory('foo/')
    foo.add_entry(File.from_record_row(['foo/bar.py', '', '']))
    with pytest.raises(ValueError) as excinfo:
        d.add_entry(foo)
    assert str(excinfo.value) \
        == 'Cannot add nonempty directory to directory tree'
Esempio n. 13
0
def test_add_entry_two_1level_files():
    d = Directory()
    assert not bool(d)
    assert d.entries == {}
    assert d.files == {}
    assert "bar.py" not in d
    f = File.from_record_row(['foo.py', '', ''])
    d.add_entry(f)
    f2 = File.from_record_row(['bar.py', '', ''])
    d.add_entry(f2)
    assert bool(d)
    assert d.entries == {"foo.py": f, "bar.py": f2}
    assert d.files == {"foo.py": f, "bar.py": f2}
    assert d.entries["bar.py"] is f2
    assert d.files["bar.py"] is f2
    assert d["bar.py"] is f2
    assert "bar.py" in d
    assert list(d.entries.keys()) == ["foo.py", "bar.py"]
def test_from_local_tree_no_include_root():
    assert Directory.from_local_tree(
        PROJECT_TREE, include_root=False) == Directory(
            path=None,
            entries={
                "foo.py":
                File(('foo.py', ), None, None),
                "foo.pyc":
                File(('foo.pyc', ), None, None),
                "bar":
                Directory(
                    path='bar/',
                    entries={
                        "__init__.py":
                        File(
                            ('bar', '__init__.py'),
                            None,
                            None,
                        ),
                        "__pycache__":
                        Directory(
                            path='bar/__pycache__/',
                            entries={
                                "__init__.cpython-36.pyc":
                                File(
                                    ('bar', '__pycache__',
                                     '__init__.cpython-36.pyc'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                    },
                ),
                "src":
                Directory(
                    path='src/',
                    entries={
                        ".placeholder": File(('src', '.placeholder'), None,
                                             None),
                    },
                ),
            },
        )
Esempio n. 15
0
def test_trees_platlib():
    """
    Test the ``purelib_tree`` and ``platlib_tree`` attributes of a platlib
    wheel containing an empty purelib and a nonempty platlib
    """
    whlcon = WheelContents.from_wheel(WHEEL_DIR /
                                      'bcrypt-3.1.7-cp38-cp38-win_amd64.whl')
    assert whlcon.dist_info_dir == 'bcrypt-3.1.7.dist-info'
    assert whlcon.data_dir == 'bcrypt-3.1.7.data'
    assert whlcon.root_is_purelib is False
    assert whlcon.purelib_tree == Directory(
        path='bcrypt-3.1.7.data/purelib/',
        entries={},
    )
    assert whlcon.platlib_tree == Directory(
        path=None,
        entries={
            "bcrypt":
            Directory(
                path="bcrypt/",
                entries={
                    "__about__.py":
                    File(
                        ('bcrypt', '__about__.py'),
                        1296,
                        'sha256=jDmr9vNGIReR9gvahrcAIvOGOFq6Zmo_afmjN1Beb5g',
                    ),
                    "__init__.py":
                    File(
                        ('bcrypt', '__init__.py'),
                        5497,
                        'sha256=sIAkb9VLIbn4fHq_8xO79ndQ1bZ5O8rDO8OSHa5-RYs',
                    ),
                    "_bcrypt.cp38-win_amd64.pyd":
                    File(
                        ('bcrypt', '_bcrypt.cp38-win_amd64.pyd'),
                        30208,
                        'sha256=ALdvcGdNK8O_Ux3njNosbQc_9_5W3zzvb1ShFQCPdDU',
                    ),
                },
            ),
        },
    )
Esempio n. 16
0
def test_add_entry_known_dir():
    d = Directory()
    f = File.from_record_row(['foo/bar.py', '', ''])
    d.add_entry(f)
    sd = Directory("foo/")
    d.add_entry(sd)
    assert d.entries == {
        "foo": Directory(path='foo/', entries={"bar.py": f}),
    }
    assert d.entries["foo"].entries["bar.py"] is f
    assert d["foo"]["bar.py"] is f
def test_from_local_tree_exclude_multilevel_name():
    assert Directory.from_local_tree(
        PROJECT_TREE, exclude=['bar/__pycache__']) == Directory(
            path=None,
            entries={
                "project-tree":
                Directory(
                    path='project-tree/',
                    entries={
                        "foo.py":
                        File(('project-tree', 'foo.py'), None, None),
                        "foo.pyc":
                        File(('project-tree', 'foo.pyc'), None, None),
                        "bar":
                        Directory(
                            path='project-tree/bar/',
                            entries={
                                "__init__.py":
                                File(
                                    ('project-tree', 'bar', '__init__.py'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                        "src":
                        Directory(
                            path='project-tree/src/',
                            entries={
                                ".placeholder":
                                File(
                                    ('project-tree', 'src', '.placeholder'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                    },
                ),
            },
        )
Esempio n. 18
0
def test_from_local_tree(local_tree_fs):
    assert Directory.from_local_tree(Path('/var/data')) == Directory(
        path=None,
        entries={
            "data":
            Directory(
                path='data/',
                entries={
                    "foo.py":
                    File(('data', 'foo.py'), None, None),
                    "foo.pyc":
                    File(('data', 'foo.pyc'), None, None),
                    "bar":
                    Directory(
                        path='data/bar/',
                        entries={
                            "__init__.py":
                            File(
                                ('data', 'bar', '__init__.py'),
                                None,
                                None,
                            ),
                            "__pycache__":
                            Directory(
                                path='data/bar/__pycache__/',
                                entries={
                                    "__init__.cpython-36.pyc":
                                    File(
                                        ('data', 'bar', '__pycache__',
                                         '__init__.cpython-36.pyc'),
                                        None,
                                        None,
                                    ),
                                },
                            ),
                        },
                    ),
                },
            ),
        },
    )
Esempio n. 19
0
def test_get_package_tree_package_path_and_src_dir(fs):
    fs.create_file('/usr/src/project/src/foo.py')
    fs.create_file('/usr/src/project/bar/__init__.py')
    fs.create_file('/usr/src/project/bar/quux.py')
    fs.create_file('/usr/src/project/bar/glarch.py')
    fs.cwd = '/usr/src/project'
    cfg = Configuration(package_paths=[Path('bar')], src_dirs=[Path('src')])
    assert cfg.get_package_tree() == Directory(
        path=None,
        entries={
            "foo.py":
            File(('foo.py', ), None, None),
            "bar":
            Directory(
                path='bar/',
                entries={
                    "__init__.py": File(('bar', '__init__.py'), None, None),
                    "quux.py": File(('bar', 'quux.py'), None, None),
                    "glarch.py": File(('bar', 'glarch.py'), None, None),
                },
            ),
        },
    )
def test_get_package_tree_package_path_and_src_dir(monkeypatch, tmp_path):
    create_file(tmp_path / 'src/foo.py')
    create_file(tmp_path / 'bar/__init__.py')
    create_file(tmp_path / 'bar/quux.py')
    create_file(tmp_path / 'bar/glarch.py')
    monkeypatch.chdir(tmp_path)
    cfg = Configuration(package_paths=[Path('bar')], src_dirs=[Path('src')])
    assert cfg.get_package_tree() == Directory(
        path=None,
        entries={
            "foo.py":
            File(('foo.py', ), None, None),
            "bar":
            Directory(
                path='bar/',
                entries={
                    "__init__.py": File(('bar', '__init__.py'), None, None),
                    "quux.py": File(('bar', 'quux.py'), None, None),
                    "glarch.py": File(('bar', 'glarch.py'), None, None),
                },
            ),
        },
    )
def test_from_local_tree_exclude_glob():
    assert Directory.from_local_tree(
        PROJECT_TREE, exclude=['*.pyc', '.*']) == Directory(
            path=None,
            entries={
                "project-tree":
                Directory(
                    path='project-tree/',
                    entries={
                        "foo.py":
                        File(('project-tree', 'foo.py'), None, None),
                        "bar":
                        Directory(
                            path='project-tree/bar/',
                            entries={
                                "__init__.py":
                                File(
                                    ('project-tree', 'bar', '__init__.py'),
                                    None,
                                    None,
                                ),
                                "__pycache__":
                                Directory(
                                    path='project-tree/bar/__pycache__/',
                                    entries={},
                                ),
                            },
                        ),
                        "src":
                        Directory(
                            path='project-tree/src/',
                            entries={},
                        ),
                    },
                ),
            },
        )
Esempio n. 22
0
def test_add_entry_2level_file():
    d = Directory()
    assert not bool(d)
    assert d.entries == {}
    assert "foo" not in d
    f = File.from_record_row(['foo/bar.py', '', ''])
    d.add_entry(f)
    assert bool(d)
    assert d.entries == {
        "foo": Directory(path='foo/', entries={"bar.py": f}),
    }
    assert d.entries["foo"].entries["bar.py"] is f
    assert d["foo"]["bar.py"] is f
    assert "foo" in d
    assert "bar.py" in d["foo"]
Esempio n. 23
0
def test_from_local_tree_no_include_root(local_tree_fs):
    assert Directory.from_local_tree(
        Path('/var/data'), include_root=False) == Directory(
            path=None,
            entries={
                "foo.py":
                File(('foo.py', ), None, None),
                "foo.pyc":
                File(('foo.pyc', ), None, None),
                "bar":
                Directory(
                    path='bar/',
                    entries={
                        "__init__.py":
                        File(
                            ('bar', '__init__.py'),
                            None,
                            None,
                        ),
                        "__pycache__":
                        Directory(
                            path='bar/__pycache__/',
                            entries={
                                "__init__.cpython-36.pyc":
                                File(
                                    ('bar', '__pycache__',
                                     '__init__.cpython-36.pyc'),
                                    None,
                                    None,
                                ),
                            },
                        ),
                    },
                ),
            },
        )
Esempio n. 24
0
def test_add_entry_1level_file():
    d = Directory()
    assert not bool(d)
    assert d.entries == {}
    assert d.files == {}
    assert "foo.py" not in d
    f = File.from_record_row(['foo.py', '', ''])
    d.add_entry(f)
    assert bool(d)
    assert d.entries == {"foo.py": f}
    assert d.files == {"foo.py": f}
    assert d.entries["foo.py"] is f
    assert d.files["foo.py"] is f
    assert d["foo.py"] is f
    assert "foo.py" in d
Esempio n. 25
0
def test_add_entry_descendant():
    foo = Directory("foo/")
    assert not bool(foo)
    assert foo.entries == {}
    assert foo.files == {}
    assert "bar.py" not in foo
    f = File.from_record_row(['foo/bar.py', '', ''])
    foo.add_entry(f)
    assert bool(foo)
    assert foo.entries == {"bar.py": f}
    assert foo.files == {"bar.py": f}
    assert foo.entries["bar.py"] is f
    assert foo.files["bar.py"] is f
    assert foo["bar.py"] is f
    assert "bar.py" in foo
Esempio n. 26
0
def test_from_local_tree_file_excluded(local_tree_fs):
    assert Directory.from_local_tree(
        Path('/var/data/foo.pyc'), exclude=['*.pyc']) == Directory(
            path=None,
            entries={"foo.pyc": File(('foo.pyc', ), None, None)},
        )
Esempio n. 27
0
def test_from_local_tree_file(local_tree_fs):
    assert Directory.from_local_tree(Path('/var/data/foo.py')) == Directory(
        path=None,
        entries={"foo.py": File(('foo.py', ), None, None)},
    )
Esempio n. 28
0
def test_from_wheel_purelib():
    whlcon = WheelContents.from_wheel(
        WHEEL_DIR / 'ttyrec2video-0.1.0.dev1-py3-none-any.whl')
    assert whlcon.dist_info_dir == 'ttyrec2video-0.1.0.dev1.dist-info'
    assert whlcon.data_dir == 'ttyrec2video-0.1.0.dev1.data'
    assert whlcon.root_is_purelib is True
    assert whlcon.filetree == Directory(
        path=None,
        entries={
            "ttyrec2video":
            Directory(
                path='ttyrec2video/',
                entries={
                    "__init__.py":
                    File(
                        ('ttyrec2video', '__init__.py'),
                        322,
                        'sha256=Hsh34fgmI71Le1sOCameXxLmc01bHIwLd1EczCvLPfk',
                    ),
                    "__main__.py":
                    File(
                        ('ttyrec2video', '__main__.py'),
                        5740,
                        'sha256=Twv8iXPtwJrGSlSnM4iF31heGfNtU0Wc9reUlSVebzE',
                    ),
                    "reader.py":
                    File(
                        ('ttyrec2video', 'reader.py'),
                        1440,
                        'sha256=F29z_79pvjQv3_EXDGqsm47SIsRvRzwr6YlISUSqQrI',
                    ),
                    "renderer.py":
                    File(
                        ('ttyrec2video', 'renderer.py'),
                        3873,
                        'sha256=OWBPDb5D2QXrOW77sCf3RU9BQoJAutMvEcbPuWfE96Q',
                    ),
                    "data":
                    Directory(
                        path="ttyrec2video/data/",
                        entries={
                            "ubuntu-font":
                            Directory(
                                path="ttyrec2video/data/ubuntu-font/",
                                entries={
                                    "LICENCE.txt":
                                    File(
                                        ('ttyrec2video', 'data', 'ubuntu-font',
                                         'LICENCE.txt'),
                                        4673,
                                        'sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI',
                                    ),
                                    "UbuntuMono-B.ttf":
                                    File(
                                        ('ttyrec2video', 'data', 'ubuntu-font',
                                         'UbuntuMono-B.ttf'),
                                        191400,
                                        'sha256=EfFcOmu9mYqGlf3vs0dZMcN4mqA111RvLv546Ds1L2s',
                                    ),
                                    "UbuntuMono-R.ttf":
                                    File(
                                        ('ttyrec2video', 'data', 'ubuntu-font',
                                         'UbuntuMono-R.ttf'),
                                        205748,
                                        'sha256=s13Z0hMdXYOpuH_prSLGKI-j0XaI1DMCwU2imBJBfWM',
                                    ),
                                    "copyright.txt":
                                    File(
                                        ('ttyrec2video', 'data', 'ubuntu-font',
                                         'copyright.txt'),
                                        155,
                                        'sha256=cVepFSJyTOB53fpTOhsQJeMdOyJ-GUz42AFZO6aSkUc',
                                    ),
                                },
                            ),
                        },
                    ),
                },
            ),
            "ttyrec2video-0.1.0.dev1.dist-info":
            Directory(
                path="ttyrec2video-0.1.0.dev1.dist-info/",
                entries={
                    "LICENSE":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info", 'LICENSE'),
                        1090,
                        'sha256=SDaeT4Cm3ZeLgPOOL_f9BliMMHH_GVwqJa6czCztoS0',
                    ),
                    "METADATA":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info", "METADATA"),
                        6269,
                        'sha256=ygypUvb3Lxe6WESfxHSy4-io4OKIeX4vNFo9i-SHnCs',
                    ),
                    "WHEEL":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info", "WHEEL"),
                        92,
                        'sha256=p46_5Uhzqz6AzeSosiOnxK-zmFja1i22CrQCjmYe8ec',
                    ),
                    "entry_points.txt":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info",
                         "entry_points.txt"),
                        61,
                        'sha256=471F-9Jb_a39olsyfq1Dy9lLnXHzPrlbYFiJM6Z3UJU',
                    ),
                    "top_level.txt":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info", "top_level.txt"),
                        13,
                        'sha256=FPSSfqt5fY1q0yYG27bAcWDPnkWB528v1lZg9meePUw',
                    ),
                    "RECORD":
                    File(
                        ("ttyrec2video-0.1.0.dev1.dist-info", "RECORD"),
                        None,
                        None,
                    ),
                },
            ),
        })
    assert whlcon.by_signature == {
        (322, 'sha256=Hsh34fgmI71Le1sOCameXxLmc01bHIwLd1EczCvLPfk'):
        [whlcon.filetree["ttyrec2video"]["__init__.py"]],
        (5740, 'sha256=Twv8iXPtwJrGSlSnM4iF31heGfNtU0Wc9reUlSVebzE'):
        [whlcon.filetree["ttyrec2video"]["__main__.py"]],
        (1440, 'sha256=F29z_79pvjQv3_EXDGqsm47SIsRvRzwr6YlISUSqQrI'):
        [whlcon.filetree["ttyrec2video"]["reader.py"]],
        (3873, 'sha256=OWBPDb5D2QXrOW77sCf3RU9BQoJAutMvEcbPuWfE96Q'):
        [whlcon.filetree["ttyrec2video"]["renderer.py"]],
        (4673, 'sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI'): [
            whlcon.filetree["ttyrec2video"]["data"]["ubuntu-font"]
            ["LICENCE.txt"]
        ],
        (191400, 'sha256=EfFcOmu9mYqGlf3vs0dZMcN4mqA111RvLv546Ds1L2s'): [
            whlcon.filetree["ttyrec2video"]["data"]["ubuntu-font"]
            ["UbuntuMono-B.ttf"]
        ],
        (205748, 'sha256=s13Z0hMdXYOpuH_prSLGKI-j0XaI1DMCwU2imBJBfWM'): [
            whlcon.filetree["ttyrec2video"]["data"]["ubuntu-font"]
            ["UbuntuMono-R.ttf"]
        ],
        (155, 'sha256=cVepFSJyTOB53fpTOhsQJeMdOyJ-GUz42AFZO6aSkUc'): [
            whlcon.filetree["ttyrec2video"]["data"]["ubuntu-font"]
            ["copyright.txt"]
        ],
        (1090, 'sha256=SDaeT4Cm3ZeLgPOOL_f9BliMMHH_GVwqJa6czCztoS0'):
        [whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]["LICENSE"]],
        (6269, 'sha256=ygypUvb3Lxe6WESfxHSy4-io4OKIeX4vNFo9i-SHnCs'):
        [whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]["METADATA"]],
        (92, 'sha256=p46_5Uhzqz6AzeSosiOnxK-zmFja1i22CrQCjmYe8ec'):
        [whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]["WHEEL"]],
        (61, 'sha256=471F-9Jb_a39olsyfq1Dy9lLnXHzPrlbYFiJM6Z3UJU'): [
            whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]
            ["entry_points.txt"]
        ],
        (13, 'sha256=FPSSfqt5fY1q0yYG27bAcWDPnkWB528v1lZg9meePUw'): [
            whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]
            ["top_level.txt"]
        ],
        (None, None):
        [whlcon.filetree["ttyrec2video-0.1.0.dev1.dist-info"]["RECORD"]],
    }
    assert whlcon.purelib_tree == Directory(
        path=None,
        entries={"ttyrec2video": whlcon.filetree["ttyrec2video"]},
    )
    assert whlcon.platlib_tree == Directory(
        path='ttyrec2video-0.1.0.dev1.data/platlib/',
        entries={},
    )
Esempio n. 29
0
    assert str(excinfo.value) == f"Path {path!r} is not a descendant of 'foo/'"


def test_add_entry_nonempty_dir():
    d = Directory()
    foo = Directory('foo/')
    foo.add_entry(File.from_record_row(['foo/bar.py', '', '']))
    with pytest.raises(ValueError) as excinfo:
        d.add_entry(foo)
    assert str(excinfo.value) \
        == 'Cannot add nonempty directory to directory tree'


@pytest.mark.parametrize('entry1,entry2,errpath', [
    (
        File.from_record_row(['foo', '', '']),
        Directory('foo/'),
        'foo/',
    ),
    (
        Directory('foo/'),
        File.from_record_row(['foo', '', '']),
        'foo',
    ),
    (
        File.from_record_row(['foo/bar', '', '']),
        Directory('foo/bar/'),
        'foo/bar/',
    ),
    (
        Directory('foo/bar/'),
Esempio n. 30
0
def test_add_entry_not_descendant(path):
    foo = Directory("foo/")
    f = File.from_record_row([path, '', ''])
    with pytest.raises(ValueError) as excinfo:
        foo.add_entry(f)
    assert str(excinfo.value) == f"Path {path!r} is not a descendant of 'foo/'"