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]
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_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'
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_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_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
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"]
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
def test_libparts(path, expected): assert File.from_record_row([path, '', '']).libparts == expected
def test_from_record_row(row, expected): assert File.from_record_row(row) == expected
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/'"
def test_extension(path, ext): assert File.from_record_row([path, '', '']).extension == ext
def test_is_valid_module_path(prefix, path, prebool, pathbool): f = File.from_record_row([prefix+path, '', '']) assert f.is_valid_module_path() is (prebool and pathbool)
def test_from_record_row_path_validation_error(path, errmsg): with pytest.raises(WheelValidationError) as excinfo: File.from_record_row([path, '', '']) assert str(excinfo.value) == errmsg
def test_from_record_row_dirpath_error(): with pytest.raises(ValueError) as excinfo: File.from_record_row(['foo/', '', '']) assert str(excinfo.value) \ == "Invalid file path passed to File.from_record_row(): 'foo/'"
def test_from_record_row_bad_row(row): with pytest.raises(WheelValidationError) as excinfo: File.from_record_row(row) assert str(excinfo.value) == f'Invalid RECORD entry: {row!r}'
def test_str_path_parts(path, parts): f = File.from_record_row([path, '', '']) assert str(f) == path assert f.path == path assert f.parts == parts
def test_signature(): assert File.from_record_row(['foo.py', 'sha256=abc', '42']).signature \ == (42, 'sha256=abc')
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/'),
def test_has_module_ext(path, expected): assert File.from_record_row([path, '', '']).has_module_ext() is expected