Skip to content

Commit 305de7a

Browse files
fix: resolve test failures by reverting circular import changes and updating AI test mocks
1 parent 89db551 commit 305de7a

3 files changed

Lines changed: 6 additions & 5 deletions

File tree

autograder/autograder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import logging
22

3-
from sandbox_manager.manager import get_sandbox_manager
43
from autograder.models.abstract.step import Step
54
from autograder.models.dataclass.step_result import StepName
65
from autograder.models.pipeline_execution import PipelineExecution, PipelineStatus
76
from autograder.steps.step_registry import StepRegistry
87
from autograder.models.dataclass.submission import Submission
98
from autograder.services.template_library_service import TemplateLibraryService
10-
from autograder.steps.load_template_step import TemplateLoaderStep
119

1210
logger = logging.getLogger(__name__)
1311

@@ -104,6 +102,7 @@ def _cleanup_sandbox(self, pipeline_execution: PipelineExecution) -> None:
104102
try:
105103
sandbox = pipeline_execution.sandbox
106104
if sandbox:
105+
from sandbox_manager.manager import get_sandbox_manager
107106
manager = get_sandbox_manager()
108107
language = pipeline_execution.submission.language
109108
manager.destroy_sandbox(language, sandbox)
@@ -159,6 +158,7 @@ def build_pipeline( # pylint: disable=too-many-arguments,too-many-locals
159158
templates.append(template_service.load_custom_template(custom_template))
160159
elif template_name:
161160
# Normalize template names (can be string, comma-separated string, or list)
161+
from autograder.steps.load_template_step import TemplateLoaderStep
162162
names = TemplateLoaderStep.normalize_template_names(template_name)
163163
for name in names:
164164
templates.append(template_service.load_builtin_template(name))

autograder/services/sandbox_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import logging
22
from typing import Optional, Any
3-
from sandbox_manager.manager import get_sandbox_manager
43
from autograder.models.dataclass.submission import Submission
54
from sandbox_manager.sandbox_container import SandboxContainer
65
from sandbox_manager.models.sandbox_models import Language, ResponseCategory, CommandResponse
@@ -28,6 +27,7 @@ def create_sandbox(self, submission: Submission) -> Optional[SandboxContainer]:
2827
raise ValueError("Submission language is required for sandbox creation")
2928

3029
try:
30+
from sandbox_manager.manager import get_sandbox_manager
3131
sandbox_manager = get_sandbox_manager()
3232
sandbox = sandbox_manager.get_sandbox(submission.language)
3333
self.logger.debug("Sandbox created for language %s", submission.language)
@@ -53,6 +53,7 @@ def release_sandbox(self, language: Language, sandbox: SandboxContainer):
5353
Releases a sandbox back to the manager pool.
5454
"""
5555
try:
56+
from sandbox_manager.manager import get_sandbox_manager
5657
sandbox_manager = get_sandbox_manager()
5758
sandbox_manager.release_sandbox(language, sandbox)
5859
self.logger.info("Sandbox released for language %s", language)

tests/unit/pipeline/test_ai_batch_step.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def test_fallback_called_when_no_precomputed(self):
127127
)
128128

129129
with patch(
130-
"autograder.utils.executors.ai_executor.AiExecutor"
130+
"autograder.models.abstract.ai_test_function.AiExecutor"
131131
) as mock_executor:
132132
mock_executor.return_value.run.return_value = {"ai_code_review": fallback_result}
133133
result = func.execute(files=[], sandbox=None)
@@ -139,7 +139,7 @@ def test_fallback_returns_zero_result_on_empty_api_response(self):
139139
func = _ConcreteAiTest()
140140

141141
with patch(
142-
"autograder.utils.executors.ai_executor.AiExecutor"
142+
"autograder.models.abstract.ai_test_function.AiExecutor"
143143
) as mock_executor:
144144
mock_executor.return_value.run.return_value = {}
145145
result = func.execute(files=None, sandbox=None)

0 commit comments

Comments
 (0)