Detector: perist executed actions
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
parent
12c59f9b23
commit
f75702439c
|
@ -75,6 +75,7 @@ class Detector:
|
||||||
_executed: DiskStoredList = None
|
_executed: DiskStoredList = None
|
||||||
_branches: DiskStoredRefs = None
|
_branches: DiskStoredRefs = None
|
||||||
_tags: DiskStoredRefs = None
|
_tags: DiskStoredRefs = None
|
||||||
|
_project: str = None
|
||||||
|
|
||||||
def __init__(self, repo_path: Path, cache_dir: Path, project: str):
|
def __init__(self, repo_path: Path, cache_dir: Path, project: str):
|
||||||
log.debug(f"Initializing detector...")
|
log.debug(f"Initializing detector...")
|
||||||
|
@ -87,6 +88,8 @@ class Detector:
|
||||||
log.debug(f"Creating detector dir")
|
log.debug(f"Creating detector dir")
|
||||||
self._detector_dir.mkdir()
|
self._detector_dir.mkdir()
|
||||||
|
|
||||||
|
self._project = project
|
||||||
|
|
||||||
log.debug(f"Detector cache: {self._detector_dir}")
|
log.debug(f"Detector cache: {self._detector_dir}")
|
||||||
self._executed = DiskStoredList(self._detector_dir.joinpath("detectorExecuted").as_posix())
|
self._executed = DiskStoredList(self._detector_dir.joinpath("detectorExecuted").as_posix())
|
||||||
log.debug(f"Detector executed: {len(self._executed)} commits")
|
log.debug(f"Detector executed: {len(self._executed)} commits")
|
||||||
|
@ -225,7 +228,17 @@ class Detector:
|
||||||
'log': commit.message,
|
'log': commit.message,
|
||||||
}
|
}
|
||||||
env = DetectedCommit(env)
|
env = DetectedCommit(env)
|
||||||
|
log.info(f"Executing CI: commit {self._project}: {env.commit} @ {env.date} by {env.author}")
|
||||||
|
if env.is_tag or env.is_branch:
|
||||||
|
log.info(f"Additional info: branch: {env.branches}; tag(s) {env.tags}")
|
||||||
executed_count += 1
|
executed_count += 1
|
||||||
callback(env)
|
callback(env)
|
||||||
|
# mark commit done
|
||||||
|
self._executed.append(commit.hexsha)
|
||||||
|
for item in special_branch:
|
||||||
|
self._branches.update(item, commit.hexsha)
|
||||||
|
for item in special_tag:
|
||||||
|
self._tags.update(item, commit.hexsha)
|
||||||
|
|
||||||
self.persist_fingerprint()
|
self.persist_fingerprint()
|
||||||
return executed_count
|
return executed_count
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from repo_cloner.lib import Detector, DetectedCommit
|
from repo_cloner.lib import Detector, DetectedCommit, DiskStoredList, DiskStoredRefs
|
||||||
import pytest
|
import pytest
|
||||||
from unittest.mock import patch, MagicMock, PropertyMock
|
from unittest.mock import patch, MagicMock, PropertyMock
|
||||||
from git import Actor
|
from git import Actor
|
||||||
|
@ -368,3 +368,13 @@ def test_run(tmp_path, caplog):
|
||||||
assert any(ex.tags == 'v1001' for ex in executed)
|
assert any(ex.tags == 'v1001' for ex in executed)
|
||||||
assert any(ex.branches == 'master' for ex in executed)
|
assert any(ex.branches == 'master' for ex in executed)
|
||||||
assert all(ex.commit not in commits_old or ex.is_tag for ex in executed)
|
assert all(ex.commit not in commits_old or ex.is_tag for ex in executed)
|
||||||
|
|
||||||
|
# new commits persisted?
|
||||||
|
commits = DiskStoredList(cache_dir.joinpath("detector", "detectorExecuted").as_posix())
|
||||||
|
for commit in commits_new:
|
||||||
|
assert commit in commits
|
||||||
|
|
||||||
|
refs = DiskStoredRefs(cache_dir.joinpath("detector", "tags"))
|
||||||
|
for tag, commit in tags_new.items():
|
||||||
|
assert commit == refs.get(tag)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user