summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2023-09-16 02:42:09 +0200
committerGitHub <noreply@github.com>2023-09-16 02:42:09 +0200
commitbf0760411336ce5ebb1c103f766c8154af478414 (patch)
treef2a7f18e66c1b347a45effa869264793d83b5864 /cli/tests
parent5a1505db67d0326bf37b765c8a566584b44a2c1a (diff)
feat: Add "deno jupyter" subcommand (#20337)
This commit adds "deno jupyter" subcommand which provides a Deno kernel for Jupyter notebooks. The implementation is mostly based on Deno's REPL and reuses large parts of it (though there's some clean up that needs to happen in follow up PRs). Not all functionality of Jupyter kernel is implemented and some message type are still not implemented (eg. "inspect_request") but the kernel is fully working and provides all the capatibilities that the Deno REPL has; including TypeScript transpilation and npm packages support. Closes https://github.com/denoland/deno/issues/13016 --------- Co-authored-by: Adam Powers <apowers@ato.ms> Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/testdata/jupyter/integration_test.ipynb620
1 files changed, 620 insertions, 0 deletions
diff --git a/cli/tests/testdata/jupyter/integration_test.ipynb b/cli/tests/testdata/jupyter/integration_test.ipynb
new file mode 100644
index 000000000..ec6b27973
--- /dev/null
+++ b/cli/tests/testdata/jupyter/integration_test.ipynb
@@ -0,0 +1,620 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "182aef1d",
+ "metadata": {},
+ "source": [
+ "# Integration Tests for Deno Jupyter\n",
+ "This notebook contains a number of tests to ensure that Jupyter is working as expected. You should be able to select \"Kernel -> Restart Kernel and Run All\" in Jupyter's notebook UI to run the tests."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "d7705d88",
+ "metadata": {},
+ "source": [
+ "## Passing Tests"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "669f972e",
+ "metadata": {
+ "heading_collapsed": true
+ },
+ "source": [
+ "### Simple Tests"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "e7e8a512",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### This test should print \"hi\".\n",
+ "If this doesn't work, everything else will probably fail :)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "a5d38758",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {},
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "hi\n"
+ ]
+ }
+ ],
+ "source": [
+ "console.log(\"hi\")"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "bc5ce8e3",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### Top-level await"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "f7fa885a",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {},
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x is \u001b[33m42\u001b[39m\n"
+ ]
+ }
+ ],
+ "source": [
+ "let x = await Promise.resolve(42);\n",
+ "console.log(\"x is\", x);"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "c21455ae",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### TypeScript transpiling\n",
+ "Credit to [typescriptlang.org](https://www.typescriptlang.org/docs/handbook/interfaces.html) for this code"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "08a17340",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{ color: \u001b[32m\"red\"\u001b[39m, area: \u001b[33m10000\u001b[39m }"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "interface SquareConfig {\n",
+ " color?: string;\n",
+ " width?: number;\n",
+ "}\n",
+ " \n",
+ "function createSquare(config: SquareConfig): { color: string; area: number } {\n",
+ " return {\n",
+ " color: config.color || \"red\",\n",
+ " area: config.width ? config.width * config.width : 20,\n",
+ " };\n",
+ "}\n",
+ " \n",
+ "createSquare({ colour: \"red\", width: 100 });"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "eaa0ebc0",
+ "metadata": {
+ "heading_collapsed": true
+ },
+ "source": [
+ "### Return Values"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "52876276",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### undefined should not return a value"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "bbf2c09b",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {},
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "undefined"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "e175c803",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### null should return \"null\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "d9801d80",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[1mnull\u001b[22m"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "null"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "a2a716dc",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### boolean should return the boolean"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "cfaac330",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[33mtrue\u001b[39m"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "true"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "8d9f1aba",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### number should return the number"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "ec3be2da",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[33m42\u001b[39m"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "42"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "60965915",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### string should return the string"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "997cf2d7",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[32m\"this is a test of the emergency broadcast system\"\u001b[39m"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\"this is a test of the emergency broadcast system\""
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "fe38dc27",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### bigint should return the bigint in literal format"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "44b63807",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[33m31337n\u001b[39m"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "31337n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "843ccb6c",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### symbol should return a string describing the symbol"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "e10c0d31",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "\u001b[32mSymbol(foo)\u001b[39m"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "Symbol(\"foo\")"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "171b817f",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### object should describe the object inspection"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "81c99233",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{ foo: \u001b[32m\"bar\"\u001b[39m }"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "{foo: \"bar\"}"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "6caeb583",
+ "metadata": {
+ "hidden": true
+ },
+ "source": [
+ "#### resolve returned promise"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "43c1581b",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Promise { \u001b[32m\"it worked!\"\u001b[39m }"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "Promise.resolve(\"it worked!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "9a34b725",
+ "metadata": {
+ "hidden": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Promise {\n",
+ " \u001b[36m<rejected>\u001b[39m Error: it failed!\n",
+ " at <anonymous>:2:16\n",
+ "}"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "Promise.reject(new Error(\"it failed!\"));"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "b5c7b819",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "ename": "Error: this is a test\n at foo (<anonymous>:3:9)\n at <anonymous>:4:3",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": []
+ }
+ ],
+ "source": [
+ "(function foo() {\n",
+ " throw new Error(\"this is a test\")\n",
+ "})()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "72d01fdd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Promise {\n",
+ " \u001b[36m<rejected>\u001b[39m TypeError: Expected string at position 0\n",
+ " at Object.readFile (ext:deno_fs/30_fs.js:716:29)\n",
+ " at <anonymous>:2:6\n",
+ "}"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "Deno.readFile(1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "28cf59d0-6908-4edc-bb10-c325beeee362",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "console.log(\"Hello from Deno!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8d5485c3-0da3-43fe-8ef5-a61e672f5e81",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "console.log(\"%c Hello Deno \", \"background-color: #15803d; color: white;\");"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "1401d9d5-6994-4c7b-b55a-db3c16a1e2dc",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"Cool 🫡\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7afdaa0a-a2a0-4f52-8c7d-b6c5f237aa0d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "console.table([1, 2, 3])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8e93df23-06eb-414b-98d4-51fbebb53d1f",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Deno",
+ "language": "typescript",
+ "name": "deno"
+ },
+ "language_info": {
+ "file_extension": ".ts",
+ "mimetype": "text/x.typescript",
+ "name": "typescript",
+ "nb_converter": "script",
+ "pygments_lexer": "typescript",
+ "version": "5.2.2"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {},
+ "toc_section_display": true,
+ "toc_window_display": true
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}