Repository navigation
Expand file tree
/
Copy pathpython.json
More file actions
41 lines (41 loc) · 5.81 KB
/
Copy pathpython.json
File metadata and controls
41 lines (41 loc) · 5.81 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
{
"includeRoot": "fixtures/include/python",
"cases": [
{ "name": "expression", "code": "1 + 2", "expect": { "success": true, "value": "3" } },
{ "name": "statements-then-expression", "code": "x = 21\nx * 2", "expect": { "success": true, "value": "42" } },
{ "name": "no-result", "code": "x = 1", "expect": { "success": true, "value": null } },
{ "name": "none-result", "code": "None", "expect": { "success": true, "value": null } },
{ "name": "bool-result", "code": "1 < 2", "expect": { "success": true, "value": "True" } },
{ "name": "dict-result-json", "code": "{'a': 1, 'b': [1, 2]}", "expect": { "success": true, "value": "{\"a\": 1, \"b\": [1, 2]}" } },
{ "name": "local-function", "code": "def twice(n):\n return n * 2\ntwice(4)", "expect": { "success": true, "value": "8" } },
{ "name": "local-class", "code": "class P:\n x = 5\nP().x", "expect": { "success": true, "value": "5" } },
{ "name": "imports", "code": "import math\nmath.floor(2.7)", "expect": { "success": true, "value": "2" } },
{ "name": "logs", "code": "print('hello')\n1", "expect": { "success": true, "value": "1", "logsContain": ["hello"] } },
{ "name": "syntax-error-line", "code": "a = 1\nb = (", "expect": { "success": false, "errorKind": "Compile", "diagnostic": { "file": "snippet.py", "line": 2 } } },
{ "name": "runtime-exception", "code": "a = 1\nraise ValueError('boom')", "expect": { "success": false, "errorKind": "Runtime", "errorContains": "boom" } },
{ "name": "runtime-name-error-line", "code": "a = 1\nb = undefined_thing", "expect": { "success": false, "errorKind": "Runtime", "errorContains": "snippet.py\", line 2" } },
{ "name": "include-folder", "code": "from geo_helpers import sq\nfrom inner.cube_helpers import cube\ncube(3) + sq(2)", "include": ["geo"], "expect": { "success": true, "value": "31" } },
{ "name": "include-file", "code": "GREETING + '!'", "include": ["prelude.py"], "expect": { "success": true, "value": "hi!" } },
{ "name": "include-traceback", "code": "explode()", "include": ["broken.py"], "expect": { "success": false, "errorKind": "Runtime", "errorContains": "broken.py" } },
{ "name": "include-missing", "code": "1", "include": ["missing.py"], "expect": { "success": false, "errorKind": "InvalidRequest" } },
{ "name": "empty-code", "code": " ", "expect": { "success": false, "errorKind": "InvalidRequest" } },
{"name": "value-clipped", "code": "'x' * 30", "maxValueChars": 10, "expect": {"success": true, "value": "xxxxxxxxxx... [truncated: 10 of 30 characters shown; return a slice or a summary]", "truncated": ["value"]}},
{"name": "value-default-limit", "code": "'x' * 30000", "expect": {"success": true, "valueEndsWith": "xx... [truncated: 20000 of 30000 characters shown; return a slice or a summary]", "truncated": ["value"]}},
{"name": "value-no-limit", "code": "'x' * 30000", "maxValueChars": 0, "expect": {"success": true, "valueLength": 30000, "truncated": []}},
{"name": "logs-first-and-last", "code": "for i in range(10):\n print('line %d' % i)", "maxLogChars": 60, "expect": {"success": true, "logs": ["line 0", "line 1", "... 7 log line(s) left out (output over 60 characters): print less, or return a summary", "line 9"], "truncated": ["logs"]}},
{"name": "log-line-clipped", "code": "print('y' * 50)", "maxLogLineChars": 5, "expect": {"success": true, "logs": ["yyyyy... [truncated: 5 of 50 characters shown; print less]"], "truncated": ["logs"]}},
{"name": "logs-within-budget", "code": "print('a')\nprint('b')", "maxLogChars": 26, "expect": {"success": true, "logs": ["a", "b"], "truncated": []}},
{"name": "error-clipped", "code": "raise ValueError('z' * 100)", "maxErrorChars": 20, "expect": {"success": false, "errorKind": "Runtime", "errorContains": "... [truncated: 20 of ", "truncated": ["error"]}},
{"name": "limit-negative", "code": "1", "maxValueChars": -1, "expect": {"success": false, "errorKind": "InvalidRequest"}},
{"name": "deep-traceback", "code": "def r(n):\n if n == 0:\n raise ValueError('deep')\n return r(n - 1)\nr(50)", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "32 frame(s) left out"}},
{"name": "exception-message-unprintable", "code": "class E(Exception):\n def __str__(self):\n raise RuntimeError('no')\nraise E()", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "<unprintable message>"}},
{"name": "include-outside-root", "code": "1", "include": ["../outside/helper"], "expect": {"success": false, "errorKind": "InvalidRequest", "errorContains": "outside the include root"}},
{"name": "include-wrong-extension", "code": "1", "include": ["notes.txt"], "expect": {"success": false, "errorKind": "InvalidRequest", "errorContains": "include is not a ."}},
{"name": "keyboard-interrupt", "code": "def stop():\n raise KeyboardInterrupt('stop')\nstop()", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "KeyboardInterrupt: stop"}},
{"name": "base-exception-subclass", "code": "class Halt(BaseException):\n pass\nraise Halt('x')", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "Halt: x"}},
{"name": "generator-exit", "code": "raise GeneratorExit()", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "GeneratorExit"}},
{"name": "chained-cause", "code": "try:\n {}['k']\nexcept KeyError as e:\n raise ValueError('outer') from e", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "Caused by: KeyError: 'k'"}},
{"name": "endless-loop-timeout", "code": "while True:\n pass", "timeoutMs": 300, "expect": {"success": false, "errorKind": "Timeout", "errorContains": "time budget of 300 ms"}},
{"name": "deep-recursion", "code": "def f(n):\n return f(n + 1)\nf(0)", "expect": {"success": false, "errorKind": "Runtime", "errorContains": "RecursionError"}}
]
}