From 8f96115e6e0747bc1eb4415265b291535ae1d3f2 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Tue, 1 Jul 2025 00:35:42 -0400 Subject: [PATCH] refactor: files.required -> health-check.required-files --- joj3_config_generator/models/repo.py | 13 ++++++++++--- joj3_config_generator/transformers/repo.py | 2 +- tests/convert/basic/repo.toml | 7 ++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/joj3_config_generator/models/repo.py b/joj3_config_generator/models/repo.py index eeb99be..8278096 100644 --- a/joj3_config_generator/models/repo.py +++ b/joj3_config_generator/models/repo.py @@ -9,7 +9,6 @@ from joj3_config_generator.models.common import Memory class Files(BaseModel): required: List[str] = [] - # TODO: remove immutable in the future immutable: List[str] = [] @@ -45,6 +44,9 @@ class HealthCheck(BaseModel): Path("immutable"), validation_alias=AliasChoices("immutable-path", "immutable_path"), ) + required_files: List[str] = Field( + [], validation_alias=AliasChoices("required-files", "required_files") + ) @field_validator("max_size", mode="before") @classmethod @@ -76,7 +78,6 @@ class Config(BaseModel): "", validation_alias=AliasChoices("grading-repo-name", "grading_repo_name"), ) - files: Files = Files() sandbox_token: str = Field( "", validation_alias=AliasChoices("sandbox-token", "sandbox_token") ) @@ -89,7 +90,8 @@ class Config(BaseModel): health_check: HealthCheck = Field( HealthCheck(), validation_alias=AliasChoices("health-check", "health_check") ) - # TODO: remove max_size, health_check_score, and immutable_path in the future + # TODO: remove files, max_size, health_check_score, and immutable_path in the future + files: Files = Files() max_size: float = Field( 10, ge=0, validation_alias=AliasChoices("max-size", "max_size") ) @@ -126,4 +128,9 @@ class Config(BaseModel): self.health_check.max_size = Memory(f"{self.max_size}m") if "immutable_path" in self.model_fields_set: self.health_check.immutable_path = self.immutable_path + if ( + "files" in self.model_fields_set + and "required" in self.files.model_fields_set + ): + self.health_check.required_files = self.files.required return self diff --git a/joj3_config_generator/transformers/repo.py b/joj3_config_generator/transformers/repo.py index 4765a3e..d8ebd66 100644 --- a/joj3_config_generator/transformers/repo.py +++ b/joj3_config_generator/transformers/repo.py @@ -125,7 +125,7 @@ def get_health_check_args(repo_conf: repo.Config) -> List[str]: "/usr/local/bin/repo-health-checker", "-root=.", f"-repoSize={str(repo_conf.health_check.max_size / 1024 / 1024)}", # B -> MB - *[f"-meta={meta}" for meta in repo_conf.files.required], + *[f"-meta={meta}" for meta in repo_conf.health_check.required_files], f"-checkFileSumList={','.join(file_sums)}", f"-checkFileNameList={','.join(file_names)}", ] diff --git a/tests/convert/basic/repo.toml b/tests/convert/basic/repo.toml index 616456b..407a505 100644 --- a/tests/convert/basic/repo.toml +++ b/tests/convert/basic/repo.toml @@ -5,14 +5,11 @@ sandbox-token = "test" max-total-score = 1000 health-check.max-size = "50.5m" -health-check.immutable_path = "immutable" +health-check.immutable-path = "immutable" +health-check.required-files = ["README.md", "Changelog.md"] # for tests [groups] name = ["joj", "run"] max-count = [1000, 1000] time-period-hour = [24, 24] - -[files] -required = ["README.md", "Changelog.md"] -immutable = [".gitignore", ".gitattributes",".gitea/workflows/push.yaml", ".gitea/workflows/release.yaml"]