diff --git a/joj3_config_generator/models/result.py b/joj3_config_generator/models/result.py index d16dd3b..524e63b 100644 --- a/joj3_config_generator/models/result.py +++ b/joj3_config_generator/models/result.py @@ -177,6 +177,12 @@ class Config(BaseModel): class DummyConfig(BaseModel): + score: int = 0 + comment: Optional[str] = None + force_quit: Optional[bool] = Field(False, serialization_alias="forceQuit") + + +class ResultStatusConfig(BaseModel): score: int = 0 comment: Optional[str] = None force_quit_on_not_accepted: Optional[bool] = Field( diff --git a/joj3_config_generator/models/task.py b/joj3_config_generator/models/task.py index 3111e65..f46cdf9 100644 --- a/joj3_config_generator/models/task.py +++ b/joj3_config_generator/models/task.py @@ -58,6 +58,14 @@ class ParserDummy(BaseModel): ) +class ParserResultStatus(BaseModel): + comment: str = "" + score: int = 0 + force_quit: bool = Field( + True, validation_alias=AliasChoices("force-quit", "force_quit") + ) + + class ParserKeyword(BaseModel): keyword: List[str] = [] weight: List[int] = [] @@ -151,8 +159,9 @@ class Stage(Case): parsers: List[Parser] = [] # list of parsers dummy: ParserDummy = ParserDummy() - result_status: ParserDummy = Field( - ParserDummy(), validation_alias=AliasChoices("result-status", "result_status") + result_status: ParserResultStatus = Field( + ParserResultStatus(), + validation_alias=AliasChoices("result-status", "result_status"), ) keyword: ParserKeyword = ParserKeyword() clangtidy: ParserKeyword = ParserKeyword() diff --git a/joj3_config_generator/transformers/task.py b/joj3_config_generator/transformers/task.py index 20545e1..ff8cc56 100644 --- a/joj3_config_generator/transformers/task.py +++ b/joj3_config_generator/transformers/task.py @@ -61,7 +61,7 @@ def get_parser_handler_map( task.Parser.CPPLINT: (fix_keyword, task_stage.cpplint), task.Parser.RESULT_DETAIL: (fix_result_detail, task_stage.result_detail), task.Parser.DUMMY: (fix_dummy, task_stage.dummy), - task.Parser.RESULT_STATUS: (fix_dummy, task_stage.result_status), + task.Parser.RESULT_STATUS: (fix_result_status, task_stage.result_status), task.Parser.FILE: (fix_file, task_stage.file), task.Parser.DIFF: ( partial( @@ -156,11 +156,21 @@ def fix_result_detail( def fix_dummy( dummy_parser_config: task.ParserDummy, dummy_parser: result.Parser ) -> None: - # we don't use dummy parser in real application dummy_parser.with_ = result.DummyConfig( score=dummy_parser_config.score, comment=dummy_parser_config.comment, - force_quit_on_not_accepted=dummy_parser_config.force_quit, + force_quit=dummy_parser_config.force_quit, + ) + + +def fix_result_status( + result_status_parser_config: task.ParserResultStatus, + result_status_parser: result.Parser, +) -> None: + result_status_parser.with_ = result.ResultStatusConfig( + score=result_status_parser_config.score, + comment=result_status_parser_config.comment, + force_quit_on_not_accepted=result_status_parser_config.force_quit, ) diff --git a/tests/convert/basic/task.json b/tests/convert/basic/task.json index 784d1b7..c72bd0c 100644 --- a/tests/convert/basic/task.json +++ b/tests/convert/basic/task.json @@ -559,7 +559,7 @@ "with": { "score": 0, "comment": "", - "forceQuitOnNotAccepted": false + "forceQuitOnNotAccepted": true } }, { @@ -573,7 +573,7 @@ "with": { "score": 0, "comment": "", - "forceQuitOnNotAccepted": false + "forceQuit": false } }, {