Personal tex compilation fixes
This commit is contained in:
1 parent
ec6ac9580b
commit
705db1068f
8 files changed
+217
-21
No files matched your search
@@ -151,6 +151,33 @@ class FullStatementResumeTests(unittest.TestCase):
|
||||
response(contexts=[]),
|
||||
response(rubrics=[{'label': 'Ex 1', 'rubric_content': '4 points : correct'}])]
|
||||
|
||||
def test_compile_only_never_enters_analysis_and_preserves_sources(self):
|
||||
directory = self.root / 'Sol2'
|
||||
directory.mkdir()
|
||||
tex = directory / '1.tex'
|
||||
tex.write_text('manually edited solution')
|
||||
with patch.object(gemini, 'process_exam') as analysis, patch.object(
|
||||
gemini, 'compile_to_pdf', self.compiler):
|
||||
self.assertEqual(gemini.main([str(self.root), '--compile-only']), 0)
|
||||
analysis.assert_not_called()
|
||||
self.assertEqual(tex.read_text(), 'manually edited solution')
|
||||
self.assertEqual((directory / '1.pdf').read_bytes(), b'PDF')
|
||||
self.assertEqual(self.compiler.call_args.kwargs['source_path'], self.root / 'correction.tex')
|
||||
|
||||
def test_preamble_change_recompiles_previously_successful_pdfs(self):
|
||||
self.client.models.generate_content.side_effect = self.responses()
|
||||
self.assertEqual(self.run_exam(), ExitCode.SUCCESS)
|
||||
self.compiler.reset_mock()
|
||||
self.assertEqual(self.run_exam(), ExitCode.SUCCESS)
|
||||
self.compiler.assert_not_called()
|
||||
(self.root / 'correction.tex').write_text(
|
||||
r'\documentclass{article}\newcommand{\custom}{new}\begin{document}')
|
||||
self.client.models.generate_content.reset_mock()
|
||||
self.assertEqual(self.run_exam(), ExitCode.SUCCESS)
|
||||
self.client.models.generate_content.assert_not_called()
|
||||
self.assertEqual(self.compiler.call_count, 1)
|
||||
self.assertEqual(self.compiler.call_args.args[1], self.root / 'Sol2/Ex 1.pdf')
|
||||
|
||||
def test_rubric_failure_retry_keeps_grouping_edits_and_sources(self):
|
||||
self.client.models.generate_content.side_effect = [*self.responses()[:3], RuntimeError('offline')]
|
||||
self.assertEqual(self.run_exam(), ExitCode.PARTIAL)
|
||||
|
||||
Reference in new issue
Block a user