Skip to content

Commit dccaa66

Browse files
committed
Rewrite fix_ogvjs_dist and its tests to remove tests redundancies + ensure proper coverage
1 parent 4e5c216 commit dccaa66

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

src/zimscraperlib/fix_ogvjs_dist.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import logging
88
import pathlib
99
import sys
10-
from typing import Union
10+
from typing import List, Union
1111

1212
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.DEBUG)
1313
logger = logging.getLogger(__name__)
@@ -33,16 +33,17 @@ def fix_source_dir(source_vendors_path: Union[pathlib.Path, str]):
3333
logger.info("all done.")
3434

3535

36-
def run():
37-
if len(sys.argv) < 2: # noqa: PLR2004 # pragma: no cover
38-
print(f"Usage: {sys.argv[0]} <source_vendors_path>") # noqa: T201
36+
def run(args: List[str] = sys.argv):
37+
if len(args) < 2: # noqa: PLR2004
38+
print(f"Usage: {args[0]} <source_vendors_path>") # noqa: T201
3939
print( # noqa: T201
4040
"\t<source_vendors_path>\tpath to your folder containing "
4141
"ogvjs/videojs/videojs-ogvjs."
4242
)
43-
sys.exit(1)
44-
return sys.exit(fix_source_dir(sys.argv[1]))
43+
return 1
44+
fix_source_dir(args[1])
45+
return 0
4546

4647

4748
if __name__ == "__main__":
48-
run()
49+
sys.exit(run())

tests/ogvjs/test_ogvjs.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44
import shutil
55
import subprocess
6-
import sys
76
import zipfile
87

98
import pytest
109

1110
from zimscraperlib.download import save_large_file
11+
from zimscraperlib.fix_ogvjs_dist import run
1212

1313

1414
def prepare_ogvjs_folder(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url):
@@ -44,43 +44,49 @@ def prepare_ogvjs_folder(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url):
4444
tmp_path.joinpath(member).rename(tmp_path.joinpath("videojs-ogvjs.js"))
4545

4646

47-
def test_installed_script():
48-
kwargs = {"universal_newlines": True, "stdout": subprocess.PIPE}
49-
script = subprocess.run(["/usr/bin/env", "fix_ogvjs_dist"], **kwargs, check=False)
50-
assert script.returncode == 1
51-
assert script.stdout.strip().startswith("Usage: ")
52-
53-
54-
def test_missing_param():
47+
def test_ogvjs_installed_script_missing_param():
48+
# run from installed script to check real conditions
5549
script = subprocess.run(
56-
[
57-
sys.executable,
58-
"-m",
59-
"zimscraperlib.fix_ogvjs_dist",
60-
],
50+
["/usr/bin/env", "fix_ogvjs_dist"],
51+
text=True,
52+
capture_output=True,
6153
check=False,
6254
)
6355
assert script.returncode == 1
56+
assert script.stdout.strip().startswith("Usage: ")
57+
58+
59+
def test_ogvjs_from_code_missing_params():
60+
# run from code to mesure coverage easily
61+
62+
assert run(["fix_ogvjs_dist"]) == 1
6463

6564

6665
@pytest.mark.slow
67-
def test_fix_ogvjs_dist(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url):
66+
def test_ogvjs_installed_script_ok(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url):
67+
# run from installed script to check real conditions
68+
6869
prepare_ogvjs_folder(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url)
6970

70-
# run to fix it from source (using installed script name)
7171
script = subprocess.run(
72-
[
73-
sys.executable,
74-
"-m",
75-
"zimscraperlib.fix_ogvjs_dist",
76-
str(tmp_path),
77-
],
72+
["/usr/bin/env", "fix_ogvjs_dist", str(tmp_path)],
7873
text=True,
79-
stdout=subprocess.PIPE,
80-
stderr=subprocess.STDOUT,
74+
capture_output=True,
8175
check=False,
8276
)
8377
assert script.returncode == 0
8478

8579
with open(tmp_path / "videojs-ogvjs.js") as fh:
8680
assert "webm" in fh.read()
81+
82+
83+
@pytest.mark.slow
84+
def test_ogvjs_from_code_ok(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url):
85+
# run from code to mesure coverage easily
86+
87+
prepare_ogvjs_folder(tmp_path, videojs_url, ogvjs_url, videojs_ogvjs_url)
88+
89+
assert run(["fix_ogvjs_dist", str(tmp_path)]) == 0
90+
91+
with open(tmp_path / "videojs-ogvjs.js") as fh:
92+
assert "webm" in fh.read()

0 commit comments

Comments
 (0)