Coverage for tests\test_hassle.py: 100%
56 statements
« prev ^ index » next coverage.py v7.2.2, created at 2024-02-15 19:47 -0600
« prev ^ index » next coverage.py v7.2.2, created at 2024-02-15 19:47 -0600
1import pytest
2from pathier import Pathier
4from hassle import utilities
5from hassle.models import HassleConfig, HassleProject, Pyproject
7root = Pathier(__file__).parent
10@pytest.fixture(scope="module")
11def userdir(tmp_path_factory) -> Pathier:
12 userdir = Pathier(tmp_path_factory.mktemp("user"))
13 userdir.mkcwd()
14 return userdir
17@pytest.fixture(scope="module")
18def dummy_projectdir(userdir: Pathier) -> Pathier:
19 dir_ = userdir / "dummy"
20 dir_.mkdir()
21 return dir_
24@pytest.fixture(scope="module")
25def config_path(userdir: Pathier) -> Pathier:
26 return userdir / "hassle_config.toml"
29def test__config_set_config(config_path: Pathier):
30 assert not HassleConfig.exists(config_path)
31 HassleConfig.configure(
32 "yeehaw", "yeehaw@yeet.com", "big_boi", None, "UwU", config_path
33 )
34 assert HassleConfig.exists(config_path)
37def test__config(config_path: Pathier):
38 config_ = HassleConfig.load(config_path)
39 assert config_.authors
40 assert config_.authors[0].name == "yeehaw"
41 assert config_.authors[0].email == "yeehaw@yeet.com"
42 assert config_.project_urls.Homepage == "https://github.com/big_boi/$name"
43 assert config_.git.tag_prefix == "UwU"
46def test__pyproject():
47 pyproject = Pyproject.from_template()
48 assert pyproject
51def test__hassleproject(dummy_projectdir: Pathier, config_path: Pathier):
52 name = dummy_projectdir.stem
53 pyproject = Pyproject.from_template()
54 config = HassleConfig.load(config_path)
55 pyproject.project.name = name
56 pyproject.project.authors = config.authors
57 for url in dir(config.project_urls):
58 if not url.startswith("_"):
59 setattr(
60 pyproject.project.urls,
61 url,
62 getattr(config.project_urls, url).replace("$name", name),
63 )
64 hassle = HassleProject(pyproject, dummy_projectdir, ["__init__.py", f"{name}.py"])
65 hassle.generate_files()
66 for f in dummy_projectdir.rglob("*"):
67 print(f)
68 for file in [
69 "pyproject.toml",
70 ".gitignore",
71 "README.md",
72 "LICENSE.txt",
73 ".vscode/settings.json",
74 f"tests/test_{name}.py",
75 ]:
76 assert (dummy_projectdir / file).exists()
77 print((dummy_projectdir / "pyproject.toml").read_text())
80def test__utilities_bump_version():
81 version = "0.0.0"
82 version = utilities.bump_version(version, "major")
83 assert version == "1.0.0"
84 version = utilities.bump_version(version, "minor")
85 assert version == "1.1.0"
86 version = utilities.bump_version(version, "patch")
87 assert version == "1.1.1"