Skip to content

Commit 67182e5

Browse files
authored
Merge pull request #113 from hugovk/add-tests-size
2 parents 28583c1 + 62e3cea commit 67182e5

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

size.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
('tgz', 'tar.bz2', 'tar.xz', 'pdb.zip', 'amd64.msi', 'msi', 'chm', 'dmg'))}
1515

1616

17-
def ignore(filename):
17+
def ignore(filename: str) -> bool:
1818
return not any(filename.endswith(DOT + ext) for ext in sort_order)
1919

2020

21-
def key(filename):
21+
def key(filename: str) -> int:
2222
parts = filename.split(DOT)
2323
# Try 2 parts first.
2424
ext = DOT.join(parts[-2:])
@@ -28,11 +28,16 @@ def key(filename):
2828
return sort_order.get(ext, 9999)
2929

3030

31-
for filename in sorted(sys.argv[1:], key=key):
32-
if ignore(filename):
33-
continue
34-
md5 = hashlib.md5()
35-
with open(filename, 'rb') as fp:
36-
md5.update(fp.read())
37-
size = os.stat(filename).st_size
38-
print(f' {md5.hexdigest()} {size:8} {filename}')
31+
def main() -> None:
32+
for filename in sorted(sys.argv[1:], key=key):
33+
if ignore(filename):
34+
continue
35+
md5 = hashlib.md5()
36+
with open(filename, 'rb') as fp:
37+
md5.update(fp.read())
38+
size = os.stat(filename).st_size
39+
print(f' {md5.hexdigest()} {size:8} {filename}')
40+
41+
42+
if __name__ == '__main__':
43+
main()

tests/test_size.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import pytest
2+
3+
import size
4+
5+
6+
@pytest.mark.parametrize(
7+
["filename", "expected"],
8+
[
9+
("file.tgz", False),
10+
("file.tar.bz2", False),
11+
("file.tar.xz", False),
12+
("file.pdb.zip", False),
13+
("file.amd64.msi", False),
14+
("file.msi", False),
15+
("file.chm", False),
16+
("file.dmg", False),
17+
("file.ext", True),
18+
],
19+
)
20+
def test_ignore(filename: str, expected: bool) -> None:
21+
assert size.ignore(filename) is expected
22+
23+
24+
@pytest.mark.parametrize(
25+
["filename", "expected"],
26+
[
27+
("file.tgz", 0),
28+
("file.tar.bz2", 1),
29+
("file.tar.xz", 2),
30+
("file.pdb.zip", 3),
31+
("file.amd64.msi", 4),
32+
("file.msi", 5),
33+
("file.chm", 6),
34+
("file.dmg", 7),
35+
("file.ext", 9999),
36+
],
37+
)
38+
def test_key(filename: str, expected: int) -> None:
39+
assert size.key(filename) == expected

0 commit comments

Comments
 (0)