dev #10
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -15,7 +15,7 @@ dist/ | |||
| downloads/ | ||||
| eggs/ | ||||
| .eggs/ | ||||
| # lib/ | ||||
| lib/ | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 | ||||
| lib64/ | ||||
| parts/ | ||||
| sdist/ | ||||
|  |  | |||
|  | @ -29,13 +29,13 @@ def convert( | |||
|     result_conf = result.Config( | ||||
|         name=task_conf.task.name, | ||||
|         # exact folder difference specified by type | ||||
|         log_path=f"{Path.home()}/.cache/joj3/{task_conf.task.type_}.log", | ||||
|         log_path=f"/home/tt/.cache/joj3/{task_conf.task.type_}.log", | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  Make this  Make this `Path.home()` default to `/home/tt`. For now, create a const for this dir. 
				
					
						李衍志523370910113
						commented  fixed fixed | ||||
|         expire_unix_timestamp=( | ||||
|             int(task_conf.release.deadline.timestamp()) | ||||
|             if task_conf.release.deadline | ||||
|             else -1 | ||||
|         ), | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  where is it used? where is it used? 
				
					
						李衍志523370910113
						commented  this should be storing all the files that are about to be copy in or out this should be storing all the files that are about to be copy in or out 
				
					
						李衍志523370910113
						commented  It is as the input and output for the following functions about parsers It is as the input and output for the following functions about parsers 
				
					
						张泊明518370910136
						commented  so this feature is not implemented? so this feature is not implemented? 
				
					
						李衍志523370910113
						commented  it is this is a loop, so this  ```python
    if not repo_conf.force_skip_health_check_on_test or not current_test:
        result_conf.stage.stages.append(get_health_check_config(repo_conf))
    cached: List[str] = []
    # Convert each stage in the task configuration
    for task_stage in task_conf.stages:
        executor_with_config, cached = get_executor_with_config(task_stage, cached)
        conf_stage = get_conf_stage(task_stage, executor_with_config)
        conf_stage = fix_result_detail(task_stage, conf_stage)
        conf_stage = fix_dummy(task_stage, conf_stage)
        conf_stage = fix_keyword(task_stage, conf_stage)
        conf_stage = fix_file(task_stage, conf_stage)
        conf_stage = fix_diff(task_stage, conf_stage, task_conf)
        result_conf.stage.stages.append(conf_stage)
```
it is
```python
    for task_stage in task_conf.stages:
        executor_with_config, cached = get_executor_with_config(task_stage, cached)
```
this is a loop, so this `cached` will be updated in every round of stage 
				
					
						张泊明518370910136
						commented  The return value is unnecessary. The return value is unnecessary. 
				
					
						李衍志523370910113
						commented  I have a lazing coding style here, everything has get imported would get exported, so should maintain this until the end of the loop. Everything is exported in previous stage would be imported in the next stage. I have a lazing coding style here, everything has get imported would get exported, so should maintain this until the end of the loop. Everything is exported in previous stage would be imported in the next stage. 
				
					
						张泊明518370910136
						commented  
 1. The return value is unnecessary
2. It should be a `set` 
				
					
						张泊明518370910136
						commented  try it yourself try it yourself 
				
					
						李衍志523370910113
						commented  I see why I see why 
				
					
						李衍志523370910113
						commented  resolved. resolved. | ||||
|         actor_csv_path=f"{Path.home()}/.config/joj/students.csv",  # students.csv position | ||||
|         actor_csv_path="/home/tt/.config/joj/students.csv",  # students.csv position | ||||
|         max_total_score=repo_conf.max_total_score, | ||||
|         stage=result.Stage( | ||||
|             stages=[], | ||||
|  | @ -75,7 +75,7 @@ def convert_joj1(joj1_conf: joj1.Config) -> task.Config: | |||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def distribute_json(folder_path: Path, repo_obj: Any, conf_root: Path) -> None: | ||||
| def distribute_json(folder_path: str, repo_obj: Any, conf_root: Path) -> None: | ||||
|     for root, _, files in os.walk(folder_path): | ||||
|         for file in files: | ||||
|             if file.endswith(".toml"): | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ import yaml | |||
| 
 | ||||
| from joj3_config_generator.convert import convert as convert_conf | ||||
| from joj3_config_generator.convert import convert_joj1 as convert_joj1_conf | ||||
| from joj3_config_generator.convert import distribute_json | ||||
| from joj3_config_generator.models import joj1, repo, task | ||||
| from joj3_config_generator.utils.logger import logger | ||||
| 
 | ||||
|  | @ -42,14 +43,14 @@ def convert( | |||
|         "-r", | ||||
|         help="This would be where you put your repo.toml file", | ||||
|     ), | ||||
|     debug: bool = typer.Option( | ||||
|         False, "--debug", "-d", help="Enable debug mode for more verbose output" | ||||
|     distribute: bool = typer.Option( | ||||
|         False, "--distribute", "-d", help="This flag determine whether to distribute" | ||||
|     ), | ||||
| ) -> Dict[str, Any]: | ||||
|     logger.info(f"Converting files in {repo_path.absolute()}") | ||||
|     logger.info(f"Converting files in {root.absolute()}") | ||||
|     repo_toml_path = os.path.join(repo_path.absolute(), "basic", "repo.toml") | ||||
|     task_toml_path = os.path.join(repo_path.absolute(), "basic", "task.toml") | ||||
|     result_json_path = os.path.join(repo_path.absolute(), "basic", "task.json") | ||||
|     task_toml_path = os.path.join(root.absolute(), "basic", "task.toml") | ||||
|     result_json_path = os.path.join(root.absolute(), "basic", "task.json") | ||||
|     with open(repo_toml_path, encoding=None) as repo_file: | ||||
|         repo_toml = repo_file.read() | ||||
|     with open(task_toml_path, encoding=None) as task_file: | ||||
|  | @ -65,5 +66,8 @@ def convert( | |||
| 
 | ||||
|     # distribution on json | ||||
|     # need a get folder path function | ||||
|     # distribute_json(root.absolute(), repo_obj, root) | ||||
|     if distribute: | ||||
|         folder_path = "/home/tt/.config/joj" | ||||
|         folder_path = f"{Path.home()}/Desktop/engr151-joj/home/tt/.config/joj/homework" | ||||
|         distribute_json(folder_path, repo_obj, conf_root=root) | ||||
|     return result_dict | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| from datetime import datetime | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  every field in this file should not be optional. we give an default value here if any field does not exist every field in this file should not be optional. we give an default value here if any field does not exist 
				
					
						张泊明518370910136
						commented  and use underscore naming in this file and use underscore naming in this file 
				
					
						李衍志523370910113
						commented  
 fixed > every field in this file should not be optional. we give an default value here if any field does not exist
fixed 
				
					
						李衍志523370910113
						commented  
 fixed. > and use underscore naming in this file
fixed. | ||||
| from typing import Any, Dict, List, Optional, Type | ||||
| 
 | ||||
| from pydantic import BaseModel, Field, model_validator | ||||
| from pydantic import BaseModel, Field, model_serializer, model_validator | ||||
| 
 | ||||
| 
 | ||||
| class ParserResultDetail(BaseModel): | ||||
|  | @ -79,7 +79,7 @@ class Stage(BaseModel): | |||
|     skip: Optional[list[str]] = [] | ||||
| 
 | ||||
|     # cases related | ||||
|     cases: Optional[Dict[str, "Stage"]] = {} | ||||
|     cases: Optional[Dict[str, "Stage"]] = None | ||||
|     diff: Optional[ParserDiff] = ParserDiff() | ||||
| 
 | ||||
|     class Config: | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  deprecated deprecated 
				
					
						李衍志523370910113
						commented  @bomingzh any suggestions on the structure? @bomingzh any suggestions on the structure? 
				
					
						张泊明518370910136
						commented  ```
PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.9/migration/
``` 
				
					
						李衍志523370910113
						commented  fixed with  fixed with `model_config` 
				
					
						张泊明518370910136
						commented  str here need to be a  str here need to be a `StrEnum` now. 
				
					
						李衍志523370910113
						commented  But I guess we don't know the set of case in advance, making it dynamic  But I guess we don't know the set of case in advance, making it dynamic `StrEnum` is meaningless 
				
					
						张泊明518370910136
						commented  line changed, the comment is for  line changed, the comment is for `parsers` | ||||
|  | @ -91,13 +91,13 @@ class Stage(BaseModel): | |||
|         cases = {k: v for k, v in values.items() if k.startswith("case")} | ||||
|         for key in cases: | ||||
|             values.pop(key) | ||||
|         values["cases"] = {k: Stage(**v) for k, v in cases.items()} | ||||
|         values["cases"] = {k: v for k, v in cases.items()} | ||||
|         return values | ||||
| 
 | ||||
| 
 | ||||
| class Release(BaseModel): | ||||
|     deadline: Optional[datetime]  # RFC 3339 formatted date-time with offset | ||||
|     begin_time: Optional[datetime] | ||||
|     deadline: Optional[datetime] = None  # RFC 3339 formatted date-time with offset | ||||
|     begin_time: Optional[datetime] = None | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  
 `begin_time` and `end_time` to make them match 
				
					
						李衍志523370910113
						commented  resolved resolved | ||||
| 
 | ||||
| 
 | ||||
| class Task(BaseModel): | ||||
|  |  | |||
|  | @ -42,8 +42,8 @@ def get_joj1_run_stage(joj1_config: joj1.Config) -> task.Stage: | |||
|                 else default_mem | ||||
|             ), | ||||
|         ), | ||||
|         cases={f"case{i}": cases_conf[i] for i, _ in enumerate(joj1_config.cases)}, | ||||
|     ) | ||||
|         cases={f"case{i}": cases_conf[i] for i, _ in enumerate(cases_conf)}, | ||||
|     )  # TODO: no strong pattern match here, use dict instead | ||||
|     return run_config | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,9 +27,7 @@ def get_teapot_stage(repo_conf: repo.Config) -> result.StageDetail: | |||
|             with_=result.ExecutorWith( | ||||
|                 default=result.Cmd( | ||||
|                     args=shlex.split(args_), | ||||
|                     env=[ | ||||
|                         f"LOG_FILE_PATH={Path.home()}/.cache/joint-teapot-debug.log" | ||||
|                     ],  # TODO: fix it according to the task name | ||||
|                     env=["LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"], | ||||
|                 ), | ||||
|                 cases=[], | ||||
|             ), | ||||
|  | @ -72,7 +70,7 @@ def get_debug_args(repo_conf: repo.Config) -> str: | |||
|     args = "" | ||||
|     args = ( | ||||
|         args | ||||
|         + f"/usr/local/bin/joint-teapot joj3-check-env {Path.home()}/.config/teapot/teapot.env --grading-repo-name {get_grading_repo_name()} --group-config " | ||||
|         + f"/usr/local/bin/joint-teapot joj3-check-env /home/tt/.config/teapot/teapot.env --grading-repo-name {get_grading_repo_name()} --group-config " | ||||
|     ) | ||||
|     group_config = "" | ||||
|     for i, name in enumerate(repo_conf.groups.name): | ||||
|  |  | |||
|  | @ -61,7 +61,7 @@ def get_executorWithConfig( | |||
|                 else [] | ||||
|             ), | ||||
|             copy_in={ | ||||
| 
					
					jon-lee marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
					
						张泊明518370910136
						commented  not necessary not necessary 
				
					
						李衍志523370910113
						commented  resolved. resolved. | ||||
|                 file: result.CmdFile(src=f"{Path.home()}/{conf_root}/tools/{file}") | ||||
|                 file: result.CmdFile(src=f"/home/tt/{conf_root}/tools/{file}") | ||||
|                 # all copyin files store in this tools folder | ||||
|                 # are there any corner cases | ||||
|                 for file in copy_in_files | ||||
|  | @ -277,7 +277,7 @@ def fix_diff( | |||
|             stage_cases.append( | ||||
|                 result.OptionalCmd( | ||||
|                     stdin=result.CmdFile( | ||||
|                         src=f"{Path.home()}/{conf_root}/{task_conf.task.type_}/{stdin}" | ||||
|                         src=f"/home/tt/{conf_root}/{task_conf.task.type_}/{stdin}" | ||||
|                     ), | ||||
|                     args=(shlex.split(command) if command is not None else None), | ||||
|                     cpu_limit=cpu_limit, | ||||
|  | @ -300,7 +300,7 @@ def fix_diff( | |||
|                             { | ||||
|                                 "score": diff_output.score, | ||||
|                                 "fileName": "stdout", | ||||
|                                 "answerPath": f"{Path.home()}/{conf_root}/{task_conf.task.type_}/{stdout}", | ||||
|                                 "answerPath": f"/home/tt/{conf_root}/{task_conf.task.type_}/{stdout}", | ||||
|                                 "forceQuitOnDiff": diff_output.forcequit, | ||||
|                                 "alwaysHide": diff_output.hide, | ||||
|                                 "compareSpace": not diff_output.ignorespaces, | ||||
|  |  | |||
|  | @ -12,6 +12,8 @@ dependencies = [ | |||
|     "pydantic>=2.9.2", | ||||
|     "inquirer>=3.4.0", | ||||
|     "rtoml>=0.11.0", | ||||
|     "humanfriendly>=10.0", | ||||
|     "pytimeparse>=1.1.8", | ||||
| ] | ||||
| requires-python = ">=3.9" | ||||
| authors = [{ name = "JOJ3-dev", email = "joj3@focs.ji.sjtu.edu.cn" }] | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| { | ||||
|     "name": "hw7 ex2", | ||||
|     "logPath": "/home/nuvole0217/.cache/joj3/homework/h7/e2.log", | ||||
|     "logPath": "/home/tt/.cache/joj3/homework/h7/e2.log", | ||||
|     "expireUnixTimestamp": 1735574399, | ||||
|     "effectiveUnixTimestamp": -1, | ||||
|     "actorCsvPath": "/home/nuvole0217/.config/joj/students.csv", | ||||
|     "actorCsvPath": "/home/tt/.config/joj/students.csv", | ||||
|     "maxTotalScore": 100, | ||||
|     "stage": { | ||||
|         "sandboxExecServer": "172.17.0.1:5051", | ||||
|  | @ -82,7 +82,7 @@ | |||
|                                 "args": [ | ||||
|                                     "/usr/local/bin/joint-teapot", | ||||
|                                     "joj3-check-env", | ||||
|                                     "/home/nuvole0217/.config/teapot/teapot.env", | ||||
|                                     "/home/tt/.config/teapot/teapot.env", | ||||
|                                     "--grading-repo-name", | ||||
|                                     "Nuvole-joj", | ||||
|                                     "--group-config", | ||||
|  | @ -153,7 +153,7 @@ | |||
|                             "cpuSetLimit": "", | ||||
|                             "copyIn": { | ||||
|                                 "tools/compile": { | ||||
|                                     "src": "/home/nuvole0217/./tools/tools/compile", | ||||
|                                     "src": "/home/tt/.config/joj/tools/tools/compile", | ||||
|                                     "max": 419430400 | ||||
|                                 } | ||||
|                             }, | ||||
|  | @ -243,7 +243,7 @@ | |||
|                             "cpuSetLimit": "", | ||||
|                             "copyIn": { | ||||
|                                 "tools/filelength": { | ||||
|                                     "src": "/home/nuvole0217/./tools/tools/filelength", | ||||
|                                     "src": "/home/tt/.config/joj/tools/tools/filelength", | ||||
|                                     "max": 419430400 | ||||
|                                 } | ||||
|                             }, | ||||
|  | @ -352,7 +352,7 @@ | |||
|                             "cpuSetLimit": "", | ||||
|                             "copyIn": { | ||||
|                                 "tests/homework/h7/.clang-tidy": { | ||||
|                                     "src": "/home/nuvole0217/./tools/tests/homework/h7/.clang-tidy", | ||||
|                                     "src": "/home/tt/.config/joj/tools/tests/homework/h7/.clang-tidy", | ||||
|                                     "max": 419430400 | ||||
|                                 } | ||||
|                             }, | ||||
|  | @ -719,7 +719,7 @@ | |||
|                                     "PATH=/usr/bin:/bin:/usr/local/bin" | ||||
|                                 ], | ||||
|                                 "stdin": { | ||||
|                                     "src": "/home/nuvole0217/./homework/h7/e2/case0.in", | ||||
|                                     "src": "/home/tt/.config/joj/homework/h7/e2/case0.in", | ||||
|                                     "max": 419430400 | ||||
|                                 }, | ||||
|                                 "cpuLimit": 1000000000, | ||||
|  | @ -736,7 +736,7 @@ | |||
|                                     "PATH=/usr/bin:/bin:/usr/local/bin" | ||||
|                                 ], | ||||
|                                 "stdin": { | ||||
|                                     "src": "/home/nuvole0217/./homework/h7/e2/case1.in", | ||||
|                                     "src": "/home/tt/.config/joj/homework/h7/e2/case1.in", | ||||
|                                     "max": 419430400 | ||||
|                                 }, | ||||
|                                 "cpuLimit": 1000000000, | ||||
|  | @ -762,7 +762,7 @@ | |||
|                                         { | ||||
|                                             "score": 5, | ||||
|                                             "fileName": "stdout", | ||||
|                                             "answerPath": "/home/nuvole0217/./homework/h7/e2/case0.out", | ||||
|                                             "answerPath": "/home/tt/.config/joj/homework/h7/e2/case0.out", | ||||
|                                             "forceQuitOnDiff": false, | ||||
|                                             "alwaysHide": false, | ||||
|                                             "compareSpace": false | ||||
|  | @ -774,7 +774,7 @@ | |||
|                                         { | ||||
|                                             "score": 5, | ||||
|                                             "fileName": "stdout", | ||||
|                                             "answerPath": "/home/nuvole0217/./homework/h7/e2/case1.out", | ||||
|                                             "answerPath": "/home/tt/.config/joj/homework/h7/e2/case1.out", | ||||
|                                             "forceQuitOnDiff": false, | ||||
|                                             "alwaysHide": false, | ||||
|                                             "compareSpace": false | ||||
|  | @ -818,7 +818,7 @@ | |||
|                                 "100" | ||||
|                             ], | ||||
|                             "env": [ | ||||
|                                 "LOG_FILE_PATH=/home/nuvole0217/.cache/joint-teapot-debug.log" | ||||
|                                 "LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log" | ||||
|                             ], | ||||
|                             "stdin": { | ||||
|                                 "content": "", | ||||
|  |  | |||
|  | @ -0,0 +1,657 @@ | |||
| [[stages]] | ||||
| name = "This is the converted joj1 run stage" | ||||
| score = 100 | ||||
| parsers = ["diff", "result-status"] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.file] | ||||
| [stages.cases.cases] | ||||
| score = 0 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.limit] | ||||
| mem = 800 | ||||
| cpu = 1000 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.file] | ||||
| [stages.cases.cases.cases.case0] | ||||
| command = "-abcd --aaaa bbbb" | ||||
| in = "case0.in" | ||||
| out = "case0.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case0.cases] | ||||
| [stages.cases.cases.cases.case0.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1] | ||||
| in = "case1.in" | ||||
| out = "case1.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case1.cases] | ||||
| [stages.cases.cases.cases.case1.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2] | ||||
| in = "case2.in" | ||||
| out = "case2.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case2.cases] | ||||
| [stages.cases.cases.cases.case2.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3] | ||||
| in = "case3.in" | ||||
| out = "case3.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case3.cases] | ||||
| [stages.cases.cases.cases.case3.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4] | ||||
| in = "case4.in" | ||||
| out = "case4.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case4.cases] | ||||
| [stages.cases.cases.cases.case4.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5] | ||||
| in = "case5.in" | ||||
| out = "case5.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case5.cases] | ||||
| [stages.cases.cases.cases.case5.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6] | ||||
| in = "case6.in" | ||||
| out = "case6.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case6.cases] | ||||
| [stages.cases.cases.cases.case6.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7] | ||||
| in = "case7.in" | ||||
| out = "case7.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case7.cases] | ||||
| [stages.cases.cases.cases.case7.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8] | ||||
| in = "case8.in" | ||||
| out = "case8.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case8.cases] | ||||
| [stages.cases.cases.cases.case8.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9] | ||||
| in = "case9.in" | ||||
| out = "case9.out" | ||||
| score = 10 | ||||
| parsers = [] | ||||
| skip = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.limit] | ||||
| mem = 32000000 | ||||
| cpu = 1 | ||||
| stderr = 800 | ||||
| stdout = 800 | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.dummy] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.result-status] | ||||
| comment = "" | ||||
| score = 0 | ||||
| forcequit = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.keyword] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.clangtidy] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.cppcheck] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.cpplint] | ||||
| keyword = [] | ||||
| weight = [] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.result-detail] | ||||
| time = true | ||||
| mem = true | ||||
| stdout = false | ||||
| stderr = false | ||||
| exitstatus = false | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.file] | ||||
| 
 | ||||
| [stages.cases.cases.cases.case9.cases] | ||||
| [stages.cases.cases.cases.case9.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| [stages.cases.cases.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| [stages.diff.output] | ||||
| score = 0 | ||||
| ignorespaces = true | ||||
| hide = false | ||||
| forcequit = false | ||||
| 
 | ||||
| [task] | ||||
| type = "" | ||||
| name = "Blank Task" | ||||
| 
 | ||||
| [release] | ||||
							
								
								
									
										33
									
								
								tests/immutable_hteam-test/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,33 +0,0 @@ | |||
| *.avi filter=lfs diff=lfs merge=lfs -text | ||||
| *.bz2 filter=lfs diff=lfs merge=lfs -text | ||||
| *.djvu filter=lfs diff=lfs merge=lfs -text | ||||
| *.doc filter=lfs diff=lfs merge=lfs -text | ||||
| *.docx filter=lfs diff=lfs merge=lfs -text | ||||
| *.epub filter=lfs diff=lfs merge=lfs -text | ||||
| *.gz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ipynb filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpeg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPEG filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPG filter=lfs diff=lfs merge=lfs -text | ||||
| *.mkv filter=lfs diff=lfs merge=lfs -text | ||||
| *.mp4 filter=lfs diff=lfs merge=lfs -text | ||||
| *.ods filter=lfs diff=lfs merge=lfs -text | ||||
| *.odt filter=lfs diff=lfs merge=lfs -text | ||||
| *.otf filter=lfs diff=lfs merge=lfs -text | ||||
| *.pdf filter=lfs diff=lfs merge=lfs -text | ||||
| *.PDF filter=lfs diff=lfs merge=lfs -text | ||||
| *.png filter=lfs diff=lfs merge=lfs -text | ||||
| *.PNG filter=lfs diff=lfs merge=lfs -text | ||||
| *.ppt filter=lfs diff=lfs merge=lfs -text | ||||
| *.pptx filter=lfs diff=lfs merge=lfs -text | ||||
| *.ps filter=lfs diff=lfs merge=lfs -text | ||||
| *.rar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tgz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ttf filter=lfs diff=lfs merge=lfs -text | ||||
| *.webm filter=lfs diff=lfs merge=lfs -text | ||||
| *.xls filter=lfs diff=lfs merge=lfs -text | ||||
| *.xlsx filter=lfs diff=lfs merge=lfs -text | ||||
| *.xz filter=lfs diff=lfs merge=lfs -text | ||||
| *.zip filter=lfs diff=lfs merge=lfs -text | ||||
							
								
								
									
										23
									
								
								tests/immutable_hteam-test/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,23 +0,0 @@ | |||
| ################################ | ||||
| ## White list based gitignore ## | ||||
| ################################ | ||||
| 
 | ||||
| # forbidden | ||||
| * | ||||
| .* | ||||
| 
 | ||||
| # allowed | ||||
| !.gitignore | ||||
| !.gitattributes | ||||
| !.gitea/ | ||||
| !.gitea/issue_template/ | ||||
| !.gitea/workflows/ | ||||
| !*.yaml | ||||
| !Makefile | ||||
| !CMakeLists.txt | ||||
| !h[0-8]/ | ||||
| !*.m | ||||
| !*.c | ||||
| !*.cpp | ||||
| !*.h | ||||
| !*.md | ||||
|  | @ -1,19 +0,0 @@ | |||
| name: Run JOJ3 on Push | ||||
| on: [push] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root /home/tt/.config/joj/tests/homework | ||||
|  | @ -1,21 +0,0 @@ | |||
| name: Run JOJ3 on Release | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root "/home/tt/.config/joj/tests/homework" -conf-name "conf-release.json" -tag "${{ github.ref_name }}" | ||||
							
								
								
									
										33
									
								
								tests/immutable_hteam/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,33 +0,0 @@ | |||
| *.avi filter=lfs diff=lfs merge=lfs -text | ||||
| *.bz2 filter=lfs diff=lfs merge=lfs -text | ||||
| *.djvu filter=lfs diff=lfs merge=lfs -text | ||||
| *.doc filter=lfs diff=lfs merge=lfs -text | ||||
| *.docx filter=lfs diff=lfs merge=lfs -text | ||||
| *.epub filter=lfs diff=lfs merge=lfs -text | ||||
| *.gz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ipynb filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpeg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPEG filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPG filter=lfs diff=lfs merge=lfs -text | ||||
| *.mkv filter=lfs diff=lfs merge=lfs -text | ||||
| *.mp4 filter=lfs diff=lfs merge=lfs -text | ||||
| *.ods filter=lfs diff=lfs merge=lfs -text | ||||
| *.odt filter=lfs diff=lfs merge=lfs -text | ||||
| *.otf filter=lfs diff=lfs merge=lfs -text | ||||
| *.pdf filter=lfs diff=lfs merge=lfs -text | ||||
| *.PDF filter=lfs diff=lfs merge=lfs -text | ||||
| *.png filter=lfs diff=lfs merge=lfs -text | ||||
| *.PNG filter=lfs diff=lfs merge=lfs -text | ||||
| *.ppt filter=lfs diff=lfs merge=lfs -text | ||||
| *.pptx filter=lfs diff=lfs merge=lfs -text | ||||
| *.ps filter=lfs diff=lfs merge=lfs -text | ||||
| *.rar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tgz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ttf filter=lfs diff=lfs merge=lfs -text | ||||
| *.webm filter=lfs diff=lfs merge=lfs -text | ||||
| *.xls filter=lfs diff=lfs merge=lfs -text | ||||
| *.xlsx filter=lfs diff=lfs merge=lfs -text | ||||
| *.xz filter=lfs diff=lfs merge=lfs -text | ||||
| *.zip filter=lfs diff=lfs merge=lfs -text | ||||
							
								
								
									
										23
									
								
								tests/immutable_hteam/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,23 +0,0 @@ | |||
| ################################ | ||||
| ## White list based gitignore ## | ||||
| ################################ | ||||
| 
 | ||||
| # forbidden | ||||
| * | ||||
| .* | ||||
| 
 | ||||
| # allowed | ||||
| !.gitignore | ||||
| !.gitattributes | ||||
| !.gitea/ | ||||
| !.gitea/issue_template/ | ||||
| !.gitea/workflows/ | ||||
| !*.yaml | ||||
| !Makefile | ||||
| !CMakeLists.txt | ||||
| !h[0-8]/ | ||||
| !*.m | ||||
| !*.c | ||||
| !*.cpp | ||||
| !*.h | ||||
| !*.md | ||||
|  | @ -1,19 +0,0 @@ | |||
| name: Run JOJ3 on Push | ||||
| on: [push] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root /home/tt/.config/joj/homework | ||||
|  | @ -1,21 +0,0 @@ | |||
| name: Run JOJ3 on Release | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root "/home/tt/.config/joj/homework" -conf-name "conf-release.json" -tag "${{ github.ref_name }}" | ||||
							
								
								
									
										33
									
								
								tests/immutable_p3-test/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,33 +0,0 @@ | |||
| *.avi filter=lfs diff=lfs merge=lfs -text | ||||
| *.bz2 filter=lfs diff=lfs merge=lfs -text | ||||
| *.djvu filter=lfs diff=lfs merge=lfs -text | ||||
| *.doc filter=lfs diff=lfs merge=lfs -text | ||||
| *.docx filter=lfs diff=lfs merge=lfs -text | ||||
| *.epub filter=lfs diff=lfs merge=lfs -text | ||||
| *.gz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ipynb filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpeg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPEG filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPG filter=lfs diff=lfs merge=lfs -text | ||||
| *.mkv filter=lfs diff=lfs merge=lfs -text | ||||
| *.mp4 filter=lfs diff=lfs merge=lfs -text | ||||
| *.ods filter=lfs diff=lfs merge=lfs -text | ||||
| *.odt filter=lfs diff=lfs merge=lfs -text | ||||
| *.otf filter=lfs diff=lfs merge=lfs -text | ||||
| *.pdf filter=lfs diff=lfs merge=lfs -text | ||||
| *.PDF filter=lfs diff=lfs merge=lfs -text | ||||
| *.png filter=lfs diff=lfs merge=lfs -text | ||||
| *.PNG filter=lfs diff=lfs merge=lfs -text | ||||
| *.ppt filter=lfs diff=lfs merge=lfs -text | ||||
| *.pptx filter=lfs diff=lfs merge=lfs -text | ||||
| *.ps filter=lfs diff=lfs merge=lfs -text | ||||
| *.rar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tgz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ttf filter=lfs diff=lfs merge=lfs -text | ||||
| *.webm filter=lfs diff=lfs merge=lfs -text | ||||
| *.xls filter=lfs diff=lfs merge=lfs -text | ||||
| *.xlsx filter=lfs diff=lfs merge=lfs -text | ||||
| *.xz filter=lfs diff=lfs merge=lfs -text | ||||
| *.zip filter=lfs diff=lfs merge=lfs -text | ||||
							
								
								
									
										29
									
								
								tests/immutable_p3-test/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,29 +0,0 @@ | |||
| ################################ | ||||
| ## White list based gitignore ## | ||||
| ################################ | ||||
| 
 | ||||
| # forbidden | ||||
| * | ||||
| .* | ||||
| 
 | ||||
| # allowed | ||||
| !.gitignore | ||||
| !.gitattributes | ||||
| !.gitea/ | ||||
| !.gitea/issue_template/ | ||||
| !.gitea/workflows/ | ||||
| !src/ | ||||
| src/* | ||||
| !src/ipa | ||||
| !src/ipa/*.h | ||||
| !src/ipa/*.cpp | ||||
| !src/ipa/Makefile | ||||
| !src/pms | ||||
| !src/pms/*.cpp | ||||
| !src/pms/*.h | ||||
| !src/pms/Makefile | ||||
| 
 | ||||
| !CMakeLists.txt | ||||
| !Makefile | ||||
| !*.md | ||||
| !*.yaml | ||||
|  | @ -1,19 +0,0 @@ | |||
| name: Run JOJ3 on Push | ||||
| on: [push] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root /home/tt/.config/joj/tests/projects/p3 | ||||
|  | @ -1,21 +0,0 @@ | |||
| name: Run JOJ3 on Release | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root "/home/tt/.config/joj/tests/projects/p3" -conf-name "conf-release.json" -tag "${{ github.ref_name }}" | ||||
							
								
								
									
										33
									
								
								tests/immutable_p3/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,33 +0,0 @@ | |||
| *.avi filter=lfs diff=lfs merge=lfs -text | ||||
| *.bz2 filter=lfs diff=lfs merge=lfs -text | ||||
| *.djvu filter=lfs diff=lfs merge=lfs -text | ||||
| *.doc filter=lfs diff=lfs merge=lfs -text | ||||
| *.docx filter=lfs diff=lfs merge=lfs -text | ||||
| *.epub filter=lfs diff=lfs merge=lfs -text | ||||
| *.gz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ipynb filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpeg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPEG filter=lfs diff=lfs merge=lfs -text | ||||
| *.jpg filter=lfs diff=lfs merge=lfs -text | ||||
| *.JPG filter=lfs diff=lfs merge=lfs -text | ||||
| *.mkv filter=lfs diff=lfs merge=lfs -text | ||||
| *.mp4 filter=lfs diff=lfs merge=lfs -text | ||||
| *.ods filter=lfs diff=lfs merge=lfs -text | ||||
| *.odt filter=lfs diff=lfs merge=lfs -text | ||||
| *.otf filter=lfs diff=lfs merge=lfs -text | ||||
| *.pdf filter=lfs diff=lfs merge=lfs -text | ||||
| *.PDF filter=lfs diff=lfs merge=lfs -text | ||||
| *.png filter=lfs diff=lfs merge=lfs -text | ||||
| *.PNG filter=lfs diff=lfs merge=lfs -text | ||||
| *.ppt filter=lfs diff=lfs merge=lfs -text | ||||
| *.pptx filter=lfs diff=lfs merge=lfs -text | ||||
| *.ps filter=lfs diff=lfs merge=lfs -text | ||||
| *.rar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tar filter=lfs diff=lfs merge=lfs -text | ||||
| *.tgz filter=lfs diff=lfs merge=lfs -text | ||||
| *.ttf filter=lfs diff=lfs merge=lfs -text | ||||
| *.webm filter=lfs diff=lfs merge=lfs -text | ||||
| *.xls filter=lfs diff=lfs merge=lfs -text | ||||
| *.xlsx filter=lfs diff=lfs merge=lfs -text | ||||
| *.xz filter=lfs diff=lfs merge=lfs -text | ||||
| *.zip filter=lfs diff=lfs merge=lfs -text | ||||
							
								
								
									
										29
									
								
								tests/immutable_p3/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						|  | @ -1,29 +0,0 @@ | |||
| ################################ | ||||
| ## White list based gitignore ## | ||||
| ################################ | ||||
| 
 | ||||
| # forbidden | ||||
| * | ||||
| .* | ||||
| 
 | ||||
| # allowed | ||||
| !.gitignore | ||||
| !.gitattributes | ||||
| !.gitea/ | ||||
| !.gitea/issue_template/ | ||||
| !.gitea/workflows/ | ||||
| !src/ | ||||
| src/* | ||||
| !src/ipa | ||||
| !src/ipa/*.h | ||||
| !src/ipa/*.cpp | ||||
| !src/ipa/Makefile | ||||
| !src/pms | ||||
| !src/pms/*.cpp | ||||
| !src/pms/*.h | ||||
| !src/pms/Makefile | ||||
| 
 | ||||
| !CMakeLists.txt | ||||
| !Makefile | ||||
| !*.md | ||||
| !*.yaml | ||||
|  | @ -1,19 +0,0 @@ | |||
| name: Run JOJ3 on Push | ||||
| on: [push] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root /home/tt/.config/joj/projects/p3 | ||||
|  | @ -1,21 +0,0 @@ | |||
| name: Run JOJ3 on Release | ||||
| on: | ||||
|   release: | ||||
|     types: [published] | ||||
| 
 | ||||
| jobs: | ||||
|   run: | ||||
|     container: | ||||
|       image: focs.ji.sjtu.edu.cn:5000/gitea/runner-images:focs-ubuntu-latest-slim | ||||
|       volumes: | ||||
|         - /home/tt/.config:/home/tt/.config | ||||
|         - /home/tt/.cache:/home/tt/.cache | ||||
|         - /home/tt/.ssh:/home/tt/.ssh | ||||
|     steps: | ||||
|       - name: Check out repository code | ||||
|         uses: https://gitea.com/BoYanZh/checkout@focs | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       - name: run joj3 | ||||
|         run: | | ||||
|           sudo -E -u tt joj3 -conf-root "/home/tt/.config/joj/projects/p3" -conf-name "conf-release.json" -tag "${{ github.ref_name }}" | ||||
should be ignored
fixed