Repository navigation
Expand file tree
/
Copy pathtest_execute_dispatch.py
More file actions
51 lines (40 loc) · 1.73 KB
/
Copy pathtest_execute_dispatch.py
File metadata and controls
51 lines (40 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import unittest
from unittest.mock import MagicMock, mock_open, patch
import execute
class JavaScriptDispatcherTests(unittest.TestCase):
def test_javascript_extension_round_trip(self):
self.assertEqual(execute.get_extension("javascript"), "js")
self.assertEqual(execute.get_language_from_extension("js"), "javascript")
def test_tool_result_uses_canonical_key_order(self):
self.assertEqual(
execute.get_series_name("javascript", 200, tool_mode=True),
"javascript-200-tool",
)
def test_javascript_file_uses_javascript_runner(self):
with patch(
"builtins.open", mock_open(read_data="console.log(6 * 7);")
), patch("execute.execute_javascript_code", return_value="42") as run_js:
output = execute.execute_solution(
"solutions/model/javascript/0001.js", {"solution": "42"}
)
self.assertEqual(output, "42")
run_js.assert_called_once_with("console.log(6 * 7);")
@patch("execute.multiprocessing.cpu_count", return_value=64)
@patch("execute.os.path.exists", return_value=True)
@patch(
"execute.os.listdir",
return_value=[f"{number:04d}.js" for number in range(1, 11)],
)
@patch("execute.ThreadPoolExecutor")
def test_javascript_workers_are_capped(
self, executor_class, _listdir, _exists, _cpu_count
):
executor = MagicMock()
executor.map.return_value = []
executor_class.return_value.__enter__.return_value = executor
execute.process_solutions("model", "javascript", 10, {})
executor_class.assert_called_once_with(
max_workers=execute.JAVASCRIPT_MAX_WORKERS
)
if __name__ == "__main__":
unittest.main()