mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-12 20:15:25 +00:00
chore: update version in CITATION upon release
This commit is contained in:
1 parent
e7672d41b9
commit
0ef515fbae
3 files changed
+175
-2
No files matched your search
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SCRIPTS_DIR = ROOT / "scripts"
|
||||
if str(SCRIPTS_DIR) not in sys.path:
|
||||
sys.path.insert(0, str(SCRIPTS_DIR))
|
||||
|
||||
try:
|
||||
import requests # type: ignore
|
||||
except ModuleNotFoundError:
|
||||
import types
|
||||
|
||||
class _DummyResponse:
|
||||
status_code = 0
|
||||
|
||||
def json(self):
|
||||
return {}
|
||||
|
||||
requests = types.SimpleNamespace(get=lambda *args, **kwargs: _DummyResponse())
|
||||
sys.modules["requests"] = requests
|
||||
|
||||
try:
|
||||
import tomlkit # type: ignore
|
||||
except ModuleNotFoundError:
|
||||
import types
|
||||
|
||||
def _noop_parse(content: str):
|
||||
return {}
|
||||
|
||||
def _noop_dumps(data):
|
||||
return ""
|
||||
|
||||
tomlkit = types.SimpleNamespace(parse=_noop_parse, dumps=_noop_dumps)
|
||||
sys.modules["tomlkit"] = tomlkit
|
||||
|
||||
try:
|
||||
from ruamel.yaml import YAML # type: ignore
|
||||
from ruamel.yaml.scalarstring import SingleQuotedScalarString # type: ignore
|
||||
except ModuleNotFoundError:
|
||||
import types
|
||||
|
||||
class _DummyYAML:
|
||||
preserve_quotes = False
|
||||
|
||||
def load(self, stream):
|
||||
return {}
|
||||
|
||||
def dump(self, data, stream=None):
|
||||
if stream and hasattr(stream, "write"):
|
||||
stream.write("")
|
||||
return ""
|
||||
|
||||
class _DummyScalarString(str):
|
||||
pass
|
||||
|
||||
ruamel_module = types.ModuleType("ruamel")
|
||||
ruamel_yaml_module = types.ModuleType("ruamel.yaml")
|
||||
ruamel_yaml_scalar_module = types.ModuleType("ruamel.yaml.scalarstring")
|
||||
ruamel_yaml_module.YAML = _DummyYAML
|
||||
ruamel_yaml_scalar_module.SingleQuotedScalarString = _DummyScalarString
|
||||
ruamel_module.yaml = ruamel_yaml_module
|
||||
sys.modules["ruamel"] = ruamel_module
|
||||
sys.modules["ruamel.yaml"] = ruamel_yaml_module
|
||||
sys.modules["ruamel.yaml.scalarstring"] = ruamel_yaml_scalar_module
|
||||
YAML = _DummyYAML
|
||||
SingleQuotedScalarString = _DummyScalarString
|
||||
|
||||
import release_modules
|
||||
|
||||
|
||||
class UpdateCitationReleaseInfoTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.original_repo_root = release_modules.REPO_ROOT
|
||||
self.original_datetime = release_modules.datetime
|
||||
|
||||
def tearDown(self) -> None:
|
||||
release_modules.REPO_ROOT = self.original_repo_root
|
||||
release_modules.datetime = self.original_datetime
|
||||
|
||||
def _patch_repo_root_with_citation(self, content: str) -> Path:
|
||||
tmp_dir = tempfile.TemporaryDirectory()
|
||||
self.addCleanup(tmp_dir.cleanup)
|
||||
repo_root = Path(tmp_dir.name)
|
||||
(repo_root / "CITATION.cff").write_text(content, encoding="utf-8")
|
||||
release_modules.REPO_ROOT = repo_root
|
||||
return repo_root
|
||||
|
||||
def test_updates_version_and_date_for_blox_tailwind(self) -> None:
|
||||
repo_root = self._patch_repo_root_with_citation(
|
||||
'version: "0.10.0"\ndate-released: 2024-01-01\n',
|
||||
)
|
||||
|
||||
original_datetime = release_modules.datetime
|
||||
|
||||
class FixedDatetime(original_datetime):
|
||||
@classmethod
|
||||
def now(cls, tz=None):
|
||||
return cls(2024, 2, 3, tzinfo=tz)
|
||||
|
||||
release_modules.datetime = FixedDatetime
|
||||
|
||||
module = release_modules.Module(
|
||||
name="blox-tailwind",
|
||||
rel_dir=Path("modules/blox-tailwind"),
|
||||
module_path="modules/blox-tailwind",
|
||||
major=0,
|
||||
)
|
||||
|
||||
updated_paths = release_modules.update_citation_release_info(module, "1.2.3")
|
||||
self.assertEqual(updated_paths, [repo_root / "CITATION.cff"])
|
||||
|
||||
contents = (repo_root / "CITATION.cff").read_text(encoding="utf-8")
|
||||
self.assertIn('version: "1.2.3"', contents)
|
||||
self.assertIn("date-released: 2024-02-03", contents)
|
||||
|
||||
def test_noop_for_non_blox_tailwind_module(self) -> None:
|
||||
repo_root = self._patch_repo_root_with_citation('version: "0.10.0"\n')
|
||||
|
||||
module = release_modules.Module(
|
||||
name="other-module",
|
||||
rel_dir=Path("modules/other-module"),
|
||||
module_path="modules/other-module",
|
||||
major=0,
|
||||
)
|
||||
|
||||
result = release_modules.update_citation_release_info(module, "9.9.9")
|
||||
self.assertEqual(result, [])
|
||||
|
||||
contents = (repo_root / "CITATION.cff").read_text(encoding="utf-8")
|
||||
self.assertEqual(contents, 'version: "0.10.0"\n')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user