From 8df1a1233e13a80d3e0ef2dfec8af15394e77b66 2014-06-26 20:21:27 From: Julia Evans <julia@stripe.com> Date: 2014-06-26 20:21:27 Subject: [PATCH] Start adding tests from runipy --- diff --git a/IPython/nbconvert/preprocessors/tests/expected/Clear Output.ipynb b/IPython/nbconvert/preprocessors/tests/expected/Clear Output.ipynb new file mode 100644 index 0000000..ef5d5cf --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/Clear Output.ipynb @@ -0,0 +1,46 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import clear_output" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(10):\n", + " clear_output()\n", + " print i" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "9\n" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/Factorials.ipynb b/IPython/nbconvert/preprocessors/tests/expected/Factorials.ipynb new file mode 100644 index 0000000..4db6b65 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/Factorials.ipynb @@ -0,0 +1,55 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "i, j = 1, 1" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for m in range(10):\n", + " i, j = j, i + j\n", + " print j" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n", + "3\n", + "5\n", + "8\n", + "13\n", + "21\n", + "34\n", + "55\n", + "89\n", + "144\n" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/HelloWorld.ipynb b/IPython/nbconvert/preprocessors/tests/expected/HelloWorld.ipynb new file mode 100644 index 0000000..67ea274 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/HelloWorld.ipynb @@ -0,0 +1,33 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print \"Hello World\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello World\n" + ] + } + ], + "prompt_number": 1 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/Inline Image.ipynb b/IPython/nbconvert/preprocessors/tests/expected/Inline Image.ipynb new file mode 100644 index 0000000..c3527e1 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/Inline Image.ipynb @@ -0,0 +1,36 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import Image" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "Image('../input/python.png');" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/SVG.ipynb b/IPython/nbconvert/preprocessors/tests/expected/SVG.ipynb new file mode 100644 index 0000000..4c9e40a --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/SVG.ipynb @@ -0,0 +1,53 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import SVG" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "SVG(data='''\n", + "<svg height=\"100\" width=\"100\">\n", + " <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n", + "</svg>''')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 2, + "svg": [ + "<svg height=\"100\" width=\"100\">\n", + " <circle cx=\"50\" cy=\"50\" fill=\"red\" r=\"40\" stroke=\"black\" stroke-width=\"2\"/>\n", + "</svg>" + ], + "text": [ + "<IPython.core.display.SVG at 0x10428e150>" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/Skip Exceptions.ipynb b/IPython/nbconvert/preprocessors/tests/expected/Skip Exceptions.ipynb new file mode 100644 index 0000000..1cae18d --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/Skip Exceptions.ipynb @@ -0,0 +1,55 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "1 / 0" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "integer division or modulo by zero", + "output_type": "pyerr", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m<ipython-input-1-b710d87c980c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m1\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'ok'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ok\n" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/expected/Unicode.ipynb b/IPython/nbconvert/preprocessors/tests/expected/Unicode.ipynb new file mode 100644 index 0000000..3fd4818 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/expected/Unicode.ipynb @@ -0,0 +1,33 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print '\u2603'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\u2603\n" + ] + } + ], + "prompt_number": 1 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/Clear Output.ipynb b/IPython/nbconvert/preprocessors/tests/input/Clear Output.ipynb new file mode 100644 index 0000000..3920cb2 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/Clear Output.ipynb @@ -0,0 +1,36 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import clear_output" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(10):\n", + " clear_output()\n", + " print i" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/Factorials.ipynb b/IPython/nbconvert/preprocessors/tests/input/Factorials.ipynb new file mode 100644 index 0000000..1736948 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/Factorials.ipynb @@ -0,0 +1,36 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "i, j = 1, 1" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for m in range(10):\n", + " i, j = j, i + j\n", + " print j" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/HelloWorld.ipynb b/IPython/nbconvert/preprocessors/tests/input/HelloWorld.ipynb new file mode 100644 index 0000000..2edf785 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/HelloWorld.ipynb @@ -0,0 +1,24 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print \"Hello World\"" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/Inline Image.ipynb b/IPython/nbconvert/preprocessors/tests/input/Inline Image.ipynb new file mode 100644 index 0000000..68b6884 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/Inline Image.ipynb @@ -0,0 +1,34 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import Image" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "Image('../input/python.png');" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/SVG.ipynb b/IPython/nbconvert/preprocessors/tests/input/SVG.ipynb new file mode 100644 index 0000000..35ea9c8 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/SVG.ipynb @@ -0,0 +1,37 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import SVG" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "SVG(data='''\n", + "<svg height=\"100\" width=\"100\">\n", + " <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n", + "</svg>''')" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/Skip Exceptions.ipynb b/IPython/nbconvert/preprocessors/tests/input/Skip Exceptions.ipynb new file mode 100644 index 0000000..1cae18d --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/Skip Exceptions.ipynb @@ -0,0 +1,55 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "1 / 0" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "integer division or modulo by zero", + "output_type": "pyerr", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m<ipython-input-1-b710d87c980c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m1\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print 'ok'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ok\n" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/Unicode.ipynb b/IPython/nbconvert/preprocessors/tests/input/Unicode.ipynb new file mode 100644 index 0000000..178f502 --- /dev/null +++ b/IPython/nbconvert/preprocessors/tests/input/Unicode.ipynb @@ -0,0 +1,24 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print '\u2603'" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/IPython/nbconvert/preprocessors/tests/input/python.png b/IPython/nbconvert/preprocessors/tests/input/python.png new file mode 100644 index 0000000000000000000000000000000000000000..c56d4c022a7130beed2ee67d7fff7274aff5de1e GIT binary patch literal 8758 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 literal 0 Hc$@<O00001 diff --git a/IPython/nbconvert/preprocessors/tests/test_execute.py b/IPython/nbconvert/preprocessors/tests/test_execute.py index a896388..976137e 100644 --- a/IPython/nbconvert/preprocessors/tests/test_execute.py +++ b/IPython/nbconvert/preprocessors/tests/test_execute.py @@ -9,6 +9,8 @@ Module with tests for the execute preprocessor. # Imports #----------------------------------------------------------------------------- import copy +import os +import re from IPython.nbformat import current as nbformat @@ -23,6 +25,28 @@ from ..execute import ExecutePreprocessor class TestExecute(PreprocessorTestsBase): """Contains test functions for execute.py""" + def prepare_cell(self, cell): + cell = dict(cell) + if 'metadata' in cell: + del cell['metadata'] + if 'text' in cell: + cell['text'] = re.sub('0x[0-9a-f]{7,9}', '<HEXADDR>', cell['text']) + return cell + + + def assert_notebooks_equal(self, expected, actual): + expected_cells = expected['worksheets'][0]['cells'] + actual_cells = actual['worksheets'][0]['cells'] + assert len(expected_cells) == len(actual_cells) + + # TODO: what does this code do? + for expected_out, actual_out in zip(expected_cells, actual_cells): + for k in set(expected_out).union(actual_out): + if k == 'outputs': + self.assertEquals(len(expected_out[k]), len(actual_out[k])) + for e, a in zip(expected_out[k], actual_out[k]): + assert self.prepare_cell(e) == self.prepare_cell(a) + def build_preprocessor(self): """Make an instance of a preprocessor""" @@ -30,16 +54,25 @@ class TestExecute(PreprocessorTestsBase): preprocessor.enabled = True return preprocessor + def test_constructor(self): """Can a ExecutePreprocessor be constructed?""" self.build_preprocessor() - def test_correct_output(self): - """Test that ExecutePreprocessor evaluates a cell to the right thing""" - nb = self.build_notebook() - res = self.build_resources() - nb.worksheets[0].cells[0].input = "print 'hi!'" - preprocessor = self.build_preprocessor() - nb, res = preprocessor(nb, res) - expected_outputs = [{'output_type': 'stream', 'stream': 'stdout', 'text': 'hi!\n'}] - assert nb.worksheets[0].cells[0].outputs == expected_outputs + + def test_run_notebooks(self): + """Runs a series of test notebooks and compares them to their actual output""" + current_dir = os.path.dirname(__file__) + input_files = os.listdir(os.path.join(current_dir, 'input')) + for filename in input_files: + if not filename.endswith(".ipynb"): + continue + with open(os.path.join(current_dir, 'input', filename)) as f: + input_nb = nbformat.read(f, 'ipynb') + with open(os.path.join(current_dir, 'expected', filename)) as f: + expected_nb = nbformat.read(f, 'ipynb') + res = self.build_resources() + preprocessor = self.build_preprocessor() + output_nb, _ = preprocessor(input_nb, res) + self.assert_notebooks_equal(output_nb, expected_nb) +