| import tempfile |
| from pathlib import Path |
|
|
| import pytest |
|
|
| from lm_eval.tasks import TaskManager |
|
|
|
|
| @pytest.fixture(scope="module") |
| def custom_task_name(): |
| return "zzz_my_python_task" |
|
|
|
|
| @pytest.fixture(scope="module") |
| def custom_task_tag(): |
| return "zzz-tag" |
|
|
|
|
| @pytest.fixture(scope="module") |
| def task_yaml(pytestconfig, custom_task_name, custom_task_tag): |
| yield f"""include: {pytestconfig.rootpath}/lm_eval/tasks/arc/arc_easy.yaml |
| task: {custom_task_name} |
| class: !function {custom_task_name}.MockPythonTask |
| tag: |
| - {custom_task_tag} |
| """ |
|
|
|
|
| @pytest.fixture(scope="module") |
| def task_code(): |
| return """ |
| from lm_eval.tasks import ConfigurableTask |
| |
| class MockPythonTask(ConfigurableTask): |
| |
| def __init__( |
| self, |
| data_dir=None, |
| cache_dir=None, |
| download_mode=None, |
| config=None, |
| ) -> None: |
| config.pop("class") |
| super().__init__(data_dir, cache_dir, download_mode, config) |
| """ |
|
|
|
|
| @pytest.fixture(scope="module") |
| def custom_task_files_dir(task_yaml, task_code, custom_task_name): |
| with tempfile.TemporaryDirectory() as temp_dir: |
| yaml_path = Path(temp_dir) / f"{custom_task_name}.yaml" |
| with open(yaml_path, "w") as f: |
| f.write(task_yaml) |
| pysource_path = Path(temp_dir) / f"{custom_task_name}.py" |
| with open(pysource_path, "w") as f: |
| f.write(task_code) |
| yield temp_dir |
|
|
|
|
| def test_python_task_inclusion( |
| custom_task_files_dir: Path, custom_task_name: str, custom_task_tag: str |
| ): |
| task_manager = TaskManager( |
| verbosity="INFO", include_path=str(custom_task_files_dir) |
| ) |
| |
| assert custom_task_name in task_manager.task_index |
| |
| assert custom_task_name in task_manager.all_subtasks |
| |
| assert custom_task_tag in task_manager.all_tags |
| |
| assert custom_task_name in task_manager.load_task_or_group(custom_task_tag) |
|
|