##// END OF EJS Templates
Add a few more edge cases for prompt numbers in nbconvert
Jessica B. Hamrick -
Show More
@@ -1,186 +1,204 b''
1 1 {
2 2 "metadata": {
3 3 "name": "notebook2"
4 4 },
5 5 "nbformat": 3,
6 6 "nbformat_minor": 0,
7 7 "worksheets": [
8 8 {
9 9 "cells": [
10 10 {
11 11 "cell_type": "heading",
12 12 "level": 1,
13 13 "metadata": {},
14 14 "source": [
15 15 "NumPy and Matplotlib examples"
16 16 ]
17 17 },
18 18 {
19 19 "cell_type": "markdown",
20 20 "metadata": {},
21 21 "source": [
22 22 "First import NumPy and Matplotlib:"
23 23 ]
24 24 },
25 25 {
26 26 "cell_type": "code",
27 27 "collapsed": false,
28 28 "input": [
29 29 "%pylab inline"
30 30 ],
31 31 "language": "python",
32 32 "metadata": {},
33 33 "outputs": [
34 34 {
35 35 "output_type": "stream",
36 36 "stream": "stdout",
37 37 "text": [
38 38 "\n",
39 39 "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.kernel.zmq.pylab.backend_inline].\n",
40 40 "For more information, type 'help(pylab)'.\n"
41 41 ]
42 42 }
43 43 ],
44 44 "prompt_number": 1
45 45 },
46 46 {
47 47 "cell_type": "code",
48 48 "collapsed": false,
49 49 "input": [
50 50 "import numpy as np"
51 51 ],
52 52 "language": "python",
53 53 "metadata": {},
54 54 "outputs": [],
55 55 "prompt_number": 2
56 56 },
57 57 {
58 58 "cell_type": "markdown",
59 59 "metadata": {},
60 60 "source": [
61 61 "Now we show some very basic examples of how they can be used."
62 62 ]
63 63 },
64 64 {
65 65 "cell_type": "code",
66 66 "collapsed": false,
67 67 "input": [
68 68 "a = np.random.uniform(size=(100,100))"
69 69 ],
70 70 "language": "python",
71 71 "metadata": {},
72 72 "outputs": [],
73 73 "prompt_number": 6
74 74 },
75 75 {
76 76 "cell_type": "code",
77 77 "collapsed": false,
78 78 "input": [
79 79 "a.shape"
80 80 ],
81 81 "language": "python",
82 82 "metadata": {},
83 83 "outputs": [
84 84 {
85 85 "metadata": {},
86 86 "output_type": "pyout",
87 87 "prompt_number": 7,
88 88 "text": [
89 89 "(100, 100)"
90 90 ]
91 91 }
92 92 ],
93 93 "prompt_number": 7
94 94 },
95 95 {
96 96 "cell_type": "code",
97 97 "collapsed": false,
98 98 "input": [
99 99 "evs = np.linalg.eigvals(a)"
100 100 ],
101 101 "language": "python",
102 102 "metadata": {},
103 103 "outputs": [],
104 104 "prompt_number": 8
105 105 },
106 106 {
107 107 "cell_type": "code",
108 108 "collapsed": false,
109 109 "input": [
110 110 "evs.shape"
111 111 ],
112 112 "language": "python",
113 113 "metadata": {},
114 114 "outputs": [
115 115 {
116 116 "metadata": {},
117 117 "output_type": "pyout",
118 118 "prompt_number": 10,
119 119 "text": [
120 120 "(100,)"
121 121 ]
122 122 }
123 123 ],
124 124 "prompt_number": 10
125 125 },
126 126 {
127 127 "cell_type": "markdown",
128 128 "metadata": {},
129 129 "source": [
130 130 "Here is a cell that has both text and PNG output:"
131 131 ]
132 132 },
133 133 {
134 134 "cell_type": "code",
135 135 "collapsed": false,
136 136 "input": [
137 137 "hist(evs.real)"
138 138 ],
139 139 "language": "python",
140 140 "metadata": {},
141 141 "outputs": [
142 142 {
143 143 "metadata": {},
144 144 "output_type": "pyout",
145 145 "prompt_number": 14,
146 146 "text": [
147 147 "(array([95, 4, 0, 0, 0, 0, 0, 0, 0, 1]),\n",
148 148 " array([ -2.93566063, 2.35937011, 7.65440086, 12.9494316 ,\n",
149 149 " 18.24446235, 23.53949309, 28.83452384, 34.12955458,\n",
150 150 " 39.42458533, 44.71961607, 50.01464682]),\n",
151 151 " <a list of 10 Patch objects>)"
152 152 ]
153 153 },
154 154 {
155 155 "metadata": {},
156 156 "output_type": "display_data",
157 157 "png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAD9CAYAAAC2l2x5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEhdJREFUeJzt3X1olfX/x/HXtVbT8CZDmsK6KmrubEu3U2xnZOpxLBnG\nOqsIE7RoE3QRZkT/yEAjcIh/LIs6i/BEGSU1CkxT0+pkFp1zMmsxZ5uUTIXoxm95lmdlef3+8Nep\ndbtz7exs16fnAw7sXNs5n/c14nmurl3naDmO4wgAYJy8sR4AADA6CDwAGIrAA4ChCDwAGIrAA4Ch\nCDwAGOofA9/U1KTCwkLNnj07vS2ZTCoUCsm2bTU2NmpgYCD9vccee0zFxcUqKyvTgQMHRm9qAMC/\n+sfA33PPPdq9e/eQbeFwWLZtq6+vT0VFRero6JAkffXVV3ryySf15ptvKhwOa/Xq1aM3NQDgX/1j\n4OfNm6dp06YN2RaPx9Xc3KyCggI1NTUpFotJkmKxmOrr62XbthYsWCDHcZRMJkdvcgDAP8r4HHwi\nkZDP55Mk+Xw+xeNxSecDX1pamv65kpKS9PcAALmXn+kDMvlkA8uyhrUNAPDvMv1kmYyP4KuqqtTT\n0yNJ6unpUVVVlSQpEAjo8OHD6Z87cuRI+nt/NaRXb+vWrRvzGZh/7Odgfu/dvDy747j7yLCMAx8I\nBBSJRJRKpRSJRFRTUyNJqq6u1p49e9Tf369oNKq8vDxNnjzZ1VAAgJH7x8AvXbpUN9xwg3p7e3X5\n5ZfrmWeeUUtLi/r7+1VSUqKTJ09q1apVkqTCwkK1tLSotrZW9957rzZv3pyTHQAA/DXLcXvs73ZB\ny3L9vxvjQTQaVTAYHOsxXGP+scX8Y8fLs0vu2kngAcAD3LSTjyoAAEMReAAwFIEHAEMReAAwFIEH\nAEP9ZwM/Zcqlsixr1G9Tplw61rsK4D/qP3uZ5PnPxMnFHONjfwF4G5dJAgDSCDwAGIrAA4ChCDwA\nGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrA\nA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChXAf+6aef1g03\n3KDrr79ea9askSQlk0mFQiHZtq3GxkYNDAxkbVAAQGZcBf7UqVPasGGD9u7dq0Qiod7eXu3Zs0fh\ncFi2bauvr09FRUXq6OjI9rwAgGFyFfiJEyfKcRx9//33SqVSOnPmjC655BLF43E1NzeroKBATU1N\nisVi2Z4XADBMrgMfDod15ZVXasaMGZo7d64CgYASiYR8Pp8kyefzKR6PZ3VYAMDw5bt50Ndff62W\nlhYdPnxY06ZN0x133KEdO3bIcZxhPX79+vXpr4PBoILBoJsxAMBY0WhU0Wh0RM9hOcOt8u/s3LlT\nW7du1bZt2yRJ4XBYx44d09GjR9Xa2iq/36+DBw+qra1NnZ2dQxe0rGG/EIwmy7Ik5WKO8bG/ALzN\nTTtdnaKZN2+ePvzwQ506dUo//vijdu3apUWLFikQCCgSiSiVSikSiaimpsbN0wMAssBV4KdMmaLW\n1lbdeuutuvHGG1VRUaGFCxeqpaVF/f39Kikp0cmTJ7Vq1apszwsAGCZXp2hGtCCnaAAgYzk7RQMA\nGP8IPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEI\nPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAY\nisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYisADgKEIPAAYynXgf/jhB919992a\nNWuWysrKFIvFlEwmFQqFZNu2GhsbNTAwkM1ZAQAZcB34devWybZtdXV1qaurSz6fT+FwWLZtq6+v\nT0VFRero6MjmrACADLgO/L59+7R27VpNmDBB+fn5mjp1quLxuJqbm1VQUKCmpibFYrFszgoAyICr\nwJ84cUKDg4NqaWlRIBDQxo0blUqllEgk5PP5JEk+n0/xeDyrwwIAhi/fzYMGBwfV29urTZs2qa6u\nTitXrtRLL70kx3GG9fj169envw4GgwoGg27GAABjRaNRRaPRET2H5Qy3yn9QWlqqnp4eSdKuXbv0\n3HPP6aefflJra6v8fr8OHjyotrY2dXZ2Dl3Qsob9QjCaLMuSlIs5xsf+AvA2N+10fQ6+uLhYsVhM\n586d086dO1VXV6dAIKBIJKJUKqVIJKKamhq3Tw8AGCHXR/C9vb266667NDg4qLq6Oj388MM6d+6c\nli1bpkOHDum6667T888/r0mTJg1dkCN4AMiYm3a6DrxbBB4AMpfTUzQAgPGNwAOAoQg8ABiKwAOA\noQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8\nABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiK\nwAOAoQg8ABiKwAOAoQg8ABiKwAOAoQg8ABiKwAOAoVwH/pdffpHf71dDQ4MkKZlMKhQKybZtNTY2\namBgIGtDAgAy5zrwmzdvVllZmSzLkiSFw2HZtq2+vj4VFRWpo6Mja0MCADLnKvAnTpzQ66+/rhUr\nVshxHElSPB5Xc3OzCgoK1NTUpFgsltVBAQCZcRX4Bx54QJs2bVJe3m8PTyQS8vl8kiSfz6d4PJ6d\nCQEAruRn+oAdO3bosssuk9/vVzQaTW//9Uh+ONavX5/+OhgMKhgMZjoGABgtGo0OaawblpNJmSWt\nXbtWW7duVX5+vgYHB3X69GnddtttOnPmjFpbW+X3+3Xw4EG1tbWps7PzzwtaVkYvBqPl/N8OcjHH\n+NhfAN7mpp0Zn6LZsGGDjh8/ri+++ELbtm1TbW2ttm7dqkAgoEgkolQqpUgkopqamkyfGgCQRSO+\nDv7Xq2haWlrU39+vkpISnTx5UqtWrRrxcAAA9zI+RTPiBTlFAwAZy8kpGgCANxB4ADAUgQcAQxF4\nADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAU\ngQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcA\nQxF4ADAUgQcAQxF4ADAUgQcAQxF4ADAUgQcAQ7kK/PHjx7Vw4UKVl5crGAzqhRdekCQlk0mFQiHZ\ntq3GxkYNDAxkdVgAwPC5CvyFF16o9vZ2dXd3q7OzU62trUomkwqHw7JtW319fSoqKlJHR0e25wUA\nDJOrwM+YMUOVlZWSpOnTp6u8vFyJRELxeFzNzc0qKChQU1OTYrFYVocFAAzfiM/BHz16VN3d3aqu\nrlYikZDP55Mk+Xw+xePxEQ8IAHAnfyQPTiaTWrJkidrb2zVp0iQ5jjOsx61fvz79dTAYVDAYHMkY\nAGCcaDSqaDQ6ouewnOFW+Q/Onj2rm2++WYsXL9aaNWskSbfffrtaW1vl9/t18OBBtbW1qbOzc+iC\nljXsF4LRZFmWpFzMMT72F4C3uWmnq1M0juOoublZ1157bTrukhQIBBSJRJRKpRSJRFRTU+Pm6QEA\nWeDqCP7AgQOaP3++5syZ8/9HwlJbW5vmzp2rZcuW6dChQ7ruuuv0/PPPa9KkSUMX5AgeADLmpp2u\nT9G4ReABIHM5O0UDABj/CDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrA\nA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4Ch\nCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4ChCDwAGIrAA4Ch8sd6APPly7KsUV1h8uRpOn361Kiu\nAcB7LMdxnJwuaFnK8ZJ/O4eUizlysc74+J0CGD1u2skpGgAwFIEHAEMReAAwVNYDv3//fpWWlqq4\nuFiPP/54tp9+HIiO9QAjEo1Gx3qEEWH+seXl+b08u1tZD/z999+vp556Svv27dMTTzyhb775JttL\njLHoWA8wIl7/j5z5x5aX5/fy7G5lNfDff/+9JGn+/Pm64oortGjRIsVisWwuAcBAU6ZcKsuyRvXW\n1rZxrHcz57Ia+EQiIZ/Pl75fVlamDz74IJtLADBQMvk/nb+cePRuP/00mLsdGieyeh38vn37tGXL\nFr344ouSpI6ODp08eVKPPPLIbwuO8pt+AMBUmeY6q+9kraqq0kMPPZS+393drfr6+iE/wxtyACA3\nsnqKZurUqZLOX0lz7Ngx7d27V4FAIJtLAACGKeufRfPoo49q5cqVOnv2rFavXq3p06dnewkAwDBk\n/TLJBQsWqKenR0ePHtXq1aslSS+//LLKy8t1wQUX6KOPPhry84899piKi4tVVlamAwcOZHucrPHa\n9f1NTU0qLCzU7Nmz09uSyaRCoZBs21ZjY6MGBgbGcMJ/dvz4cS1cuFDl5eUKBoN64YUXJHlnHwYH\nBxUIBFRZWamamhq1t7dL8s78kvTLL7/I7/eroaFBkrdmv/LKKzVnzhz5/X5VV1dL8tb8P/zwg+6+\n+27NmjVLZWVlisVirubPyTtZZ8+erVdffVXz588fsv2rr77Sk08+qTfffFPhcDj9gjAeee36/nvu\nuUe7d+8esi0cDsu2bfX19amoqEgdHR1jNN2/u/DCC9Xe3q7u7m51dnaqtbVVyWTSM/swYcIEvf32\n2/r444/1zjvvaMuWLerr6/PM/JK0efNmlZWVpS+M8NLslmUpGo3q0KFDisfjkrw1/7p162Tbtrq6\nutTV1SWfz+dq/pwE3ufzadasWX/aHovFVF9fL9u2tWDBAjmOo2QymYuRMuLF6/vnzZunadOmDdkW\nj8fV3NysgoICNTU1jet9mDFjhiorKyVJ06dPV3l5uRKJhKf24eKLL5YkDQwM6Oeff1ZBQYFn5j9x\n4oRef/11rVixIn1hhFdm/9UfL+jw0vz79u3T2rVrNWHCBOXn52vq1Kmu5h/Tz6KJx+MqLS1N3y8p\nKUm/2o4nplzf//v98Pl84/J3/VeOHj2q7u5uVVdXe2ofzp07p4qKChUWFuq+++6Tbduemf+BBx7Q\npk2blJf3WyK8Mrt0/gi+trZWjY2N2r59uyTvzH/ixAkNDg6qpaVFgUBAGzduVCqVcjV/1v7IetNN\nN+nLL7/80/YNGzakz+H90V9dMsl18qPHi5eoJpNJLVmyRO3t7Zo0aZKn9iEvL0+ffPKJjh07psWL\nF2vu3LmemH/Hjh267LLL5Pf7h7y93wuz/+q9997TzJkz1dPTo4aGBlVXV3tm/sHBQfX29mrTpk2q\nq6vTypUr9dJLL7maP2tH8Hv37tWnn376p9vfxV2SAoGADh8+nL5/5MgRVVVVZWukrKmqqtKRI0fS\n97u7u1VTUzOGE7lTVVWlnp4eSVJPT8+4/F3/3tmzZ3X77bdr+fLlCoVCkry3D9L5P/gtXrxYsVjM\nE/O///772r59u6666iotXbpUb731lpYvX+6J2X81c+ZMSVJpaaluueUWvfbaa56Z/5prrlFJSYka\nGho0ceJELV26VLt373Y1f85P0fz+Vai6ulp79uxRf3+/otGo8vLyNHny5FyP9K9Mub4/EAgoEoko\nlUopEomM6xcpx3HU3Nysa6+9VmvWrElv98o+fPPNN/ruu+8kSd9++63eeOMNhUIhT8y/YcMGHT9+\nXF988YW2bdum2tpabd261ROzS9KZM2fSf8v7+uuvtWfPHtXX13tmfkkqLi5WLBbTuXPntHPnTtXV\n1bmb38mBV155xSkqKnImTJjgFBYWOvX19envPfroo87VV1/tlJaWOvv378/FOK5Eo1HH5/M5V199\ntbN58+axHudf3Xnnnc7MmTOdiy66yCkqKnIikYhz+vRp55ZbbnEuv/xyJxQKOclkcqzH/Fvvvvuu\nY1mWU1FR4VRWVjqVlZXOrl27PLMPXV1djt/vd+bMmeMsWrTIefbZZx3HcTwz/6+i0ajT0NDgOI53\nZv/888+diooKp6KiwqmtrXW2bNniOI535nccx/nss8+cQCDgVFRUOA8++KAzMDDgav6c/5usAIDc\n4F90AgBDEXgAMBSBBwBDEXgAMBSBBwBDEXgAMNT/AQKseNIf7mhWAAAAAElFTkSuQmCC\n",
158 158 "text": [
159 159 "<matplotlib.figure.Figure at 0x108c8f1d0>"
160 160 ]
161 161 }
162 162 ],
163 163 "prompt_number": 14
164 164 },
165 165 {
166 166 "cell_type": "code",
167 167 "collapsed": false,
168 168 "input": [],
169 169 "language": "python",
170 170 "metadata": {},
171 171 "outputs": []
172 172 },
173 173 {
174 174 "cell_type": "code",
175 175 "collapsed": false,
176 176 "input": [],
177 177 "language": "python",
178 178 "metadata": {},
179 179 "outputs": [],
180 180 "prompt_number": null
181 },
182 {
183 "cell_type": "code",
184 "collapsed": false,
185 "input": [],
186 "language": "python",
187 "metadata": {},
188 "outputs": [],
189 "prompt_number": "*"
190 },
191 {
192 "cell_type": "code",
193 "collapsed": false,
194 "input": [],
195 "language": "python",
196 "metadata": {},
197 "outputs": [],
198 "prompt_number": 0
181 199 }
182 200 ],
183 201 "metadata": {}
184 202 }
185 203 ]
186 204 } No newline at end of file
@@ -1,76 +1,76 b''
1 1 """Tests for HTMLExporter"""
2 2
3 3 #-----------------------------------------------------------------------------
4 4 # Copyright (c) 2013, the IPython Development Team.
5 5 #
6 6 # Distributed under the terms of the Modified BSD License.
7 7 #
8 8 # The full license is in the file COPYING.txt, distributed with this software.
9 9 #-----------------------------------------------------------------------------
10 10
11 11 #-----------------------------------------------------------------------------
12 12 # Imports
13 13 #-----------------------------------------------------------------------------
14 14
15 15 from .base import ExportersTestsBase
16 16 from ..html import HTMLExporter
17 17 from IPython.testing.decorators import onlyif_any_cmd_exists
18 18 import re
19 19
20 20 #-----------------------------------------------------------------------------
21 21 # Class
22 22 #-----------------------------------------------------------------------------
23 23
24 24 class TestHTMLExporter(ExportersTestsBase):
25 25 """Tests for HTMLExporter"""
26 26
27 27 exporter_class = HTMLExporter
28 28 should_include_raw = ['html']
29 29
30 30 def test_constructor(self):
31 31 """
32 32 Can a HTMLExporter be constructed?
33 33 """
34 34 HTMLExporter()
35 35
36 36
37 37 @onlyif_any_cmd_exists('nodejs', 'node', 'pandoc')
38 38 def test_export(self):
39 39 """
40 40 Can a HTMLExporter export something?
41 41 """
42 42 (output, resources) = HTMLExporter().from_filename(self._get_notebook())
43 43 assert len(output) > 0
44 44
45 45
46 46 @onlyif_any_cmd_exists('nodejs', 'node', 'pandoc')
47 47 def test_export_basic(self):
48 48 """
49 49 Can a HTMLExporter export using the 'basic' template?
50 50 """
51 51 (output, resources) = HTMLExporter(template_file='basic').from_filename(self._get_notebook())
52 52 assert len(output) > 0
53 53
54 54
55 55 @onlyif_any_cmd_exists('nodejs', 'node', 'pandoc')
56 56 def test_export_full(self):
57 57 """
58 58 Can a HTMLExporter export using the 'full' template?
59 59 """
60 60 (output, resources) = HTMLExporter(template_file='full').from_filename(self._get_notebook())
61 61 assert len(output) > 0
62 62
63 63 @onlyif_any_cmd_exists('nodejs', 'node', 'pandoc')
64 64 def test_prompt_number(self):
65 65 """
66 66 Does HTMLExporter properly format input and output prompts?
67 67 """
68 68 (output, resources) = HTMLExporter(template_file='full').from_filename(self._get_notebook())
69 69 in_regex = r"In&nbsp;\[(.*)\]:"
70 70 out_regex = r"Out\[(.*)\]:"
71 71
72 ins = ["1", "2", "6", "7", "8", "10", "14", "&nbsp;", "&nbsp;"]
72 ins = ["1", "2", "6", "7", "8", "10", "14", "&nbsp;", "&nbsp;", "*", "0"]
73 73 outs = ["7", "10", "14"]
74 74
75 75 assert re.findall(in_regex, output) == ins
76 76 assert re.findall(out_regex, output) == outs
@@ -1,117 +1,117 b''
1 1 """Tests for Latex exporter"""
2 2
3 3 # Copyright (c) IPython Development Team.
4 4 # Distributed under the terms of the Modified BSD License.
5 5
6 6 import os.path
7 7 import textwrap
8 8 import re
9 9
10 10 from .base import ExportersTestsBase
11 11 from ..latex import LatexExporter
12 12 from IPython.nbformat import current
13 13 from IPython.testing.decorators import onlyif_cmds_exist
14 14 from IPython.utils.tempdir import TemporaryDirectory
15 15
16 16
17 17 class TestLatexExporter(ExportersTestsBase):
18 18 """Contains test functions for latex.py"""
19 19
20 20 exporter_class = LatexExporter
21 21 should_include_raw = ['latex']
22 22
23 23 def test_constructor(self):
24 24 """
25 25 Can a LatexExporter be constructed?
26 26 """
27 27 LatexExporter()
28 28
29 29
30 30 @onlyif_cmds_exist('pandoc')
31 31 def test_export(self):
32 32 """
33 33 Can a LatexExporter export something?
34 34 """
35 35 (output, resources) = LatexExporter().from_filename(self._get_notebook())
36 36 assert len(output) > 0
37 37
38 38
39 39 @onlyif_cmds_exist('pandoc')
40 40 def test_export_book(self):
41 41 """
42 42 Can a LatexExporter export using 'report' template?
43 43 """
44 44 (output, resources) = LatexExporter(template_file='report').from_filename(self._get_notebook())
45 45 assert len(output) > 0
46 46
47 47
48 48 @onlyif_cmds_exist('pandoc')
49 49 def test_export_basic(self):
50 50 """
51 51 Can a LatexExporter export using 'article' template?
52 52 """
53 53 (output, resources) = LatexExporter(template_file='article').from_filename(self._get_notebook())
54 54 assert len(output) > 0
55 55
56 56
57 57 @onlyif_cmds_exist('pandoc')
58 58 def test_export_article(self):
59 59 """
60 60 Can a LatexExporter export using 'article' template?
61 61 """
62 62 (output, resources) = LatexExporter(template_file='article').from_filename(self._get_notebook())
63 63 assert len(output) > 0
64 64
65 65 @onlyif_cmds_exist('pandoc')
66 66 def test_very_long_cells(self):
67 67 """
68 68 Torture test that long cells do not cause issues
69 69 """
70 70 lorem_ipsum_text = textwrap.dedent("""\
71 71 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
72 72 dignissim, ipsum non facilisis tempus, dui felis tincidunt metus,
73 73 nec pulvinar neque odio eget risus. Nulla nisi lectus, cursus
74 74 suscipit interdum at, ultrices sit amet orci. Mauris facilisis
75 75 imperdiet elit, vitae scelerisque ipsum dignissim non. Integer
76 76 consequat malesuada neque sit amet pulvinar. Curabitur pretium
77 77 ut turpis eget aliquet. Maecenas sagittis lacus sed lectus
78 78 volutpat, eu adipiscing purus pulvinar. Maecenas consequat
79 79 luctus urna, eget cursus quam mollis a. Aliquam vitae ornare
80 80 erat, non hendrerit urna. Sed eu diam nec massa egestas pharetra
81 81 at nec tellus. Fusce feugiat lacus quis urna sollicitudin volutpat.
82 82 Quisque at sapien non nibh feugiat tempus ac ultricies purus.
83 83 """)
84 84 lorem_ipsum_text = lorem_ipsum_text.replace("\n"," ") + "\n\n"
85 85 large_lorem_ipsum_text = "".join([lorem_ipsum_text]*3000)
86 86
87 87 notebook_name = "lorem_ipsum_long.ipynb"
88 88 nb = current.new_notebook(
89 89 worksheets=[
90 90 current.new_worksheet(cells=[
91 91 current.new_text_cell('markdown',source=large_lorem_ipsum_text)
92 92 ])
93 93 ]
94 94 )
95 95
96 96 with TemporaryDirectory() as td:
97 97 nbfile = os.path.join(td, notebook_name)
98 98 with open(nbfile, 'w') as f:
99 99 current.write(nb, f, 'ipynb')
100 100
101 101 (output, resources) = LatexExporter(template_file='article').from_filename(nbfile)
102 102 assert len(output) > 0
103 103
104 104 @onlyif_cmds_exist('pandoc')
105 105 def test_prompt_number_color(self):
106 106 """
107 107 Does LatexExporter properly format input and output prompts in color?
108 108 """
109 109 (output, resources) = LatexExporter().from_filename(self._get_notebook())
110 110 in_regex = r"In \[\{\\color\{incolor\}(.*)\}\]:"
111 111 out_regex = r"Out\[\{\\color\{outcolor\}(.*)\}\]:"
112 112
113 ins = ["1", "2", "6", "7", "8", "10", "14", " ", " "]
113 ins = ["1", "2", "6", "7", "8", "10", "14", " ", " ", "*", "0"]
114 114 outs = ["7", "10", "14"]
115 115
116 116 assert re.findall(in_regex, output) == ins
117 117 assert re.findall(out_regex, output) == outs
General Comments 0
You need to be logged in to leave comments. Login now