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)
+