Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • learn-renku/teaching-on-renku/autograde
  • fotis.georgatos/autograde
2 results
Show changes
{
"title": "demo notebook test",
"checksum": "598b9a96d5c04cf88f5b26771572a62544e80369535855044fb4583c3bb78878",
"team_members": [
{
"first_name": "Alice",
"last_name": "Foo",
"student_id": 12345
},
{
"first_name": "Bob",
"last_name": "Bar",
"student_id": 54321
}
],
"artifacts": [
"bar.txt",
"figures/fig_cell_4_clean_1.png",
"figures/fig_cell_9_1.png",
"figures/fig_cell_9_2.png",
"fnord.txt",
"plot.png"
],
"excluded_artifacts": [
"foo.txt"
],
"unit_test_results": [
{
"id": "239eadbc01bcd3892b5c01a86b007dca86eeb0b2daa51ad5a580a1ddc079e040",
"label": "test square",
"target": [
"square"
],
"score": 1.0,
"score_max": 1.0,
"messages": [
"\u2705 passed"
],
"stdout": "FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\n",
"stderr": ""
},
{
"id": "f03691ea9f44d6018fd43ef2a106e527843f5984f9eb44c49aeecb48d1266454",
"label": "test cube",
"target": [
"cube"
],
"score": 2.5,
"score_max": 2.5,
"messages": [
"well done \ud83d\udc4c"
],
"stdout": "",
"stderr": "cube\n"
},
{
"id": "35797fb23f082ed01f8a12050bfd0343e28ceca91cd00ef3be38a144563ec0a2",
"label": "test abs_cube",
"target": [
"abs_cube"
],
"score": 2.0,
"score_max": 3.0,
"messages": [
"\u00af\\_(\u30c4)_/\u00af partially passed"
],
"stdout": "",
"stderr": ""
},
{
"id": "7e0e6ff3545a0510d5ab9a1d7ac6ab2c14609d3843d57cc04638f321423ac3c5",
"label": "test constant",
"target": [
"SOME_CONSTANT"
],
"score": 1.0,
"score_max": 2.0,
"messages": [
"at least you declared it \ud83e\udd74"
],
"stdout": "",
"stderr": ""
},
{
"id": "90f0231eef0abe9f9b28e3be1315d27a1ef89297c6009d92d7b1f24a165f4673",
"label": "test square & cube",
"target": [
"square",
"cube"
],
"score": 1.0,
"score_max": 1.0,
"messages": [
"\u2705 passed"
],
"stdout": "",
"stderr": ""
},
{
"id": "85f2e61341ca4bfbdda86b328c3704ff3983d49c786b51b176dd558979e59122",
"label": "test failure",
"target": [
"fail"
],
"score": 0,
"score_max": 1.5,
"messages": [
"\u274c ValueError: \"no chance, this function crashes so badly\""
],
"stdout": "",
"stderr": "Test failed:\nTraceback (most recent call last):\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 48, in __call__\n result = self._test_function(*targets, *args, **kwargs)\n File \"/home/jovyan/work/jupyter-autograde/demo/test.py\", line 65, in test_fail\n fail()\n File \"/tmp/tmp5crfyffw\", line 13, in fail\n raise ValueError('no chance, this function crashes so badly')\nValueError: no chance, this function crashes so badly\n"
},
{
"id": "95cf4e22dcc910d0384c63a600fe79d886e3f23f4c6bb6eb8fdc616180793d9d",
"label": "test negative score",
"target": [
"fail"
],
"score": -0.5,
"score_max": 1.0,
"messages": [
"\u00af\\_(\u30c4)_/\u00af partially passed"
],
"stdout": "",
"stderr": ""
},
{
"id": "511d0ac725daadf807d17cfbe7fa0da1a4a446ad85f737f5ca94fb51bc393c4b",
"label": "test import filter",
"target": [
"illegal_import"
],
"score": 0.5,
"score_max": 0.5,
"messages": [
"\u2705 passed"
],
"stdout": "",
"stderr": ""
},
{
"id": "53bca0ce4cd4c8c8c4e1792086e8bd79bc049eb7f61e660bebf485dd8668e84c",
"label": "test global timeout",
"target": [
"sleep"
],
"score": 0,
"score_max": 1,
"messages": [
"\u274c TimeoutError: \"code execution took longer than 0.100s to terminate\""
],
"stdout": "",
"stderr": "Test failed:\nTraceback (most recent call last):\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 48, in __call__\n result = self._test_function(*targets, *args, **kwargs)\n File \"/opt/conda/lib/python3.9/contextlib.py\", line 122, in __exit__\n if type is None:\n File \"/opt/conda/lib/python3.9/contextlib.py\", line 122, in __exit__\n if type is None:\n File \"/opt/conda/lib/python3.9/site-packages/autograde/util.py\", line 202, in _localtrace\n raise TimeoutError(f'code execution took longer than {timeout:.3f}s to terminate')\nTimeoutError: code execution took longer than 0.100s to terminate\n"
},
{
"id": "6d1546e07fd32d5d0eab09ea89abc6b5de7f3660236b5486ca83d7c0d44364ee",
"label": "test local timeout",
"target": [
"sleep"
],
"score": 0,
"score_max": 1,
"messages": [
"\u274c TimeoutError: \"code execution took longer than 0.060s to terminate\""
],
"stdout": "",
"stderr": "Test failed:\nTraceback (most recent call last):\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 48, in __call__\n result = self._test_function(*targets, *args, **kwargs)\n File \"/opt/conda/lib/python3.9/contextlib.py\", line 122, in __exit__\n if type is None:\n File \"/opt/conda/lib/python3.9/contextlib.py\", line 122, in __exit__\n if type is None:\n File \"/opt/conda/lib/python3.9/site-packages/autograde/util.py\", line 202, in _localtrace\n raise TimeoutError(f'code execution took longer than {timeout:.3f}s to terminate')\nTimeoutError: code execution took longer than 0.060s to terminate\n"
},
{
"id": "ce7ad25b6af8ed05fc10dd726b893fd12abe5408a20d5e2b5aaa36977bbb8e18",
"label": "inspect source",
"target": [
"square"
],
"score": 1.0,
"score_max": 1.0,
"messages": [
"\u2705 passed"
],
"stdout": "def square(x: float) -> float:\n return x ** 2\n\n",
"stderr": ""
},
{
"id": "81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9",
"label": "Bob",
"target": [
"__COMMENTS__"
],
"score": NaN,
"score_max": 4,
"messages": [
"[MATCH 1]:\n**A1:** The answer, my friend, is blowin' in the wind. The answer is blowin' in the wind.\n\n"
],
"stdout": "",
"stderr": ""
},
{
"id": "a0ec927b1044a5e945fbd9cf4370b4be1bc1ebc93bca51bc37f02a8814196bde",
"label": "Douglas",
"target": [
"__COMMENTS__"
],
"score": NaN,
"score_max": 1,
"messages": [
"[MATCH 1]:\n**A2:** 42 (forty-two)\n\n"
],
"stdout": "",
"stderr": ""
},
{
"id": "a03b221c6c6eae7122ca51695d456d5222e524889136394944b2f9763b483615",
"label": "???",
"target": [
"__COMMENTS__"
],
"score": 0,
"score_max": 2.5,
"messages": [
"\u274c AssertionError: \"no matching comments found\""
],
"stdout": "",
"stderr": "Test failed:\nTraceback (most recent call last):\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 48, in __call__\n result = self._test_function(*targets, *args, **kwargs)\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 140, in search_comment\n assert len(comments) > 0, 'no matching comments found'\nAssertionError: no matching comments found\n"
},
{
"id": "f81f712816b4a576cd12ecf67c0e85267a22109f5ffef8c50576ac85ccf4e048",
"label": "plot PNG",
"target": [
"__ARTIFACTS__"
],
"score": NaN,
"score_max": 1,
"messages": [
"data:image/png;base64,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kPG55cuXW5LavB1vy5Yt1rRp0yy322317dvXuvfeew0l7rj58+e3uZ9vvfWWZVmW9e9//9saPXq0FRsba8XExFijRo2yHnvsMcvr9ZoN3k5ftZ+WZVl79+615syZY0VFRVnJycnWzTffbDU0NJgL3UmbNm2yJk6caCUkJFiRkZHW0KFDrXvuuceqq6szHa3THn74YSsrK8uKiIiwJkyYYL333numI3WpSy65xOrTp48VERFh9e3b17rkkkus/Px807E67a233mrz7+H8+fMty2q6FMwdd9xhpaWlWW632zrrrLOsvLw8s6E74GT7WVtba5177rlWSkqKFR4ebmVnZ1vXXnttq0tQBYMve49cvny5f5tjx45ZP/zhD63evXtb0dHR1re+9S3rwIED5kIHKIdlhdh1NQAAAHBSzAIGAACwGQogAACAzVAAAQAAbIYCCAAAYDMUQAAAAJuhAAIAANgMBRAAAMBmKIAAAAA2QwEEAACwGQogAACAzVAAAQAAbIYCCAAAYDMUQAAAAJuhAAIAANgMBRAAAMBmKIAAAAA2QwEEAACwGQogAACAzVAAAQAAbIYCCAAAYDMUQAAAAJuhAAIAANgMBRAAAMBmKIAAAAA2QwEEAACwGQogAACAzVAAAQAAbIYCCAAAYDMUQAAAAJuhAAIAANgMBRAAAMBm/j8cPvEA/u/szgAAAABJRU5ErkJggg=="
],
"stdout": "",
"stderr": ""
},
{
"id": "affcf4c8d293c17fcb845deb7f4bb1aff6697426d75bf28a2bf7403067646673",
"label": "file not found",
"target": [
"__ARTIFACTS__"
],
"score": 0,
"score_max": 1,
"messages": [
"\u274c FileNotFoundError: \"[Errno 2] No such file or directory: 'artifacts/does_not_exist.png'\""
],
"stdout": "",
"stderr": "Test failed:\nTraceback (most recent call last):\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 48, in __call__\n result = self._test_function(*targets, *args, **kwargs)\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_test.py\", line 174, in load_plot\n return math.nan, prefix + base64.b64encode(artifacts[target]).decode('utf8')\n File \"/opt/conda/lib/python3.9/site-packages/autograde/notebook_executor.py\", line 39, in __getitem__\n with self._root.joinpath(path).open(mode='rb') as f:\n File \"/opt/conda/lib/python3.9/pathlib.py\", line 1242, in open\n return io.open(self, mode, buffering, encoding, errors, newline,\n File \"/opt/conda/lib/python3.9/pathlib.py\", line 1110, in _opener\n return self._accessor.open(self, flags, mode)\nFileNotFoundError: [Errno 2] No such file or directory: 'artifacts/does_not_exist.png'\n"
},
{
"id": "d376512f3901b0a8347d0221155af8c527795b23b9b884d8d25484149ea0da47",
"label": "raw artifact",
"target": [
"__ARTIFACTS__"
],
"score": 1.0,
"score_max": 1.0,
"messages": [
"the following was read from a file: \"let's leave some artifacts in the system\""
],
"stdout": "",
"stderr": ""
},
{
"id": "a814e91177667827d91ab4d1c8abe0e3a11471d8299afb274eafdc5b99355309",
"label": "special variables",
"target": [
"__CONTEXT__",
"__TEAM_MEMBERS__",
"__COMMENTS__"
],
"score": 1.0,
"score_max": 1.0,
"messages": [
"\u2705 passed"
],
"stdout": "Hello Alice\nHello Bob\n\nthe tested notebook has 20 comments\n",
"stderr": ""
}
],
"applied_patches": [],
"version": "0.2.13",
"timestamp": "2021-11-10T13:23:06"
}
\ No newline at end of file