From a3238ecb5dd06793dd8fc1aabb35f599758aac47 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:47:38 -0600 Subject: [PATCH 01/18] Use a log --- pymatbridge/tests/test_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_utils.py b/pymatbridge/tests/test_utils.py index 3f960fe..ecb7add 100644 --- a/pymatbridge/tests/test_utils.py +++ b/pymatbridge/tests/test_utils.py @@ -6,7 +6,7 @@ def on_octave(): return bool(os.environ.get('USE_OCTAVE', False)) def connect_to_matlab(): - mlab = pymat.Octave() if on_octave() else pymat.Matlab() + mlab = pymat.Octave() if on_octave() else pymat.Matlab(log=True) mlab.start() npt.assert_(mlab.is_connected(), msg = "connect_to_matlab(): Connection failed") From 5eb33cd8ab278be2f8b4e879ef39dfa5ade3c3d7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:47:53 -0600 Subject: [PATCH 02/18] Rename test_array and add more variations --- pymatbridge/tests/test_set_variable.py | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 pymatbridge/tests/test_set_variable.py diff --git a/pymatbridge/tests/test_set_variable.py b/pymatbridge/tests/test_set_variable.py new file mode 100644 index 0000000..fb44624 --- /dev/null +++ b/pymatbridge/tests/test_set_variable.py @@ -0,0 +1,49 @@ +import pymatbridge as pymat +import random as rd +import numpy as np +import numpy.testing as npt +import test_utils as tu + +class TestArray: + + # Start a Matlab session before any tests + @classmethod + def setup_class(cls): + cls.mlab = tu.connect_to_matlab() + + # Tear down the Matlab session after all the tests are done + @classmethod + def teardown_class(cls): + tu.stop_matlab(cls.mlab) + + + # Pass a 1000*1000 array to Matlab + def test_array_size(self): + array = np.random.random_sample((50,50)) + res = self.mlab.run_func("array_size.m",{'val':array})['result'] + npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") + + + def test_array_content(self): + test_array = np.random.random_integers(2, 20, (5, 10)) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + test_array = np.asfortranarray(test_array) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + # force non-contiguous + test_array = test_array[::-1] + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + + def test_object_array(self): + test_array = np.array(['hello', 1]) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + + def test_others(self): + self.mlab.set_variable('test', np.float(1.5)) + npt.assert_equal(self.mlab.get_variable('test'), 1.5) + self.mlab.set_variable('test', 'hello') + npt.assert_equal(self.mlab.get_variable('test'), 'hello') + From f601a09844caeab869fb87b65da15a50960e8596 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:48:07 -0600 Subject: [PATCH 03/18] Remove old test_array --- pymatbridge/tests/test_array.py | 34 --------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 pymatbridge/tests/test_array.py diff --git a/pymatbridge/tests/test_array.py b/pymatbridge/tests/test_array.py deleted file mode 100644 index af5fc1f..0000000 --- a/pymatbridge/tests/test_array.py +++ /dev/null @@ -1,34 +0,0 @@ -import pymatbridge as pymat -import random as rd -import numpy as np -import numpy.testing as npt -import test_utils as tu - -class TestArray: - - # Start a Matlab session before any tests - @classmethod - def setup_class(cls): - cls.mlab = tu.connect_to_matlab() - - # Tear down the Matlab session after all the tests are done - @classmethod - def teardown_class(cls): - tu.stop_matlab(cls.mlab) - - - # Pass a 1000*1000 array to Matlab - def test_array_size(self): - array = np.random.random_sample((50,50)) - res = self.mlab.run_func("array_size.m",{'val':array})['result'] - npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") - - - def test_array_content(self): - test_array = np.random.random_integers(2, 20, (5, 10)) - self.mlab.set_variable('test', test_array) - npt.assert_equal(self.mlab.get_variable('test'), test_array) - test_array = np.asfortranarray(test_array) - self.mlab.set_variable('test', test_array) - npt.assert_equal(self.mlab.get_variable('test'), test_array) - From 851db79ab80940377b6983165a387594b3b9cdc3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:48:15 -0600 Subject: [PATCH 04/18] Assume numpy availability and add pragma: no covers --- pymatbridge/pymatbridge.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 2e12f47..d20dd40 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -30,12 +30,7 @@ import json from uuid import uuid4 -try: - from numpy import ndarray, generic, float64, frombuffer, asfortranarray -except ImportError: - class ndarray: - pass - generic = ndarray +from numpy import ndarray, generic, float64, frombuffer, asfortranarray try: from scipy.sparse import spmatrix @@ -170,7 +165,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None - def _program_name(self): + def _program_name(self): # pramga: no cover raise NotImplemented def _preamble_code(self): @@ -182,7 +177,7 @@ def _preamble_code(self): "warning(old_warning_state)", "clear old_warning_state"] - def _execute_flag(self): + def _execute_flag(self): # pragma: no cover raise NotImplemented def _run_server(self): From f816158eee8f332ebafb6213a06109767d7ffd3e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:55:30 -0600 Subject: [PATCH 05/18] Clean up handling of stop --- pymatbridge/matlab_magic.py | 31 +++++-------------------------- pymatbridge/pymatbridge.py | 5 +++++ 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index ca8c326..ddd864c 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -22,8 +22,6 @@ import pymatbridge as pymat from .compat import text_type -ipython_version = int(IPython.__version__[0]) - class MatlabInterperterError(RuntimeError): """ @@ -89,16 +87,6 @@ def __init__(self, shell, self.Matlab.start() self.pyconverter = pyconverter - def __del__(self): - """shut down the Matlab server when the object dies. - - 2FIX: this seems to not be called when ipython terminates. bleah. - """ - try: - self.Matlab.stop() - except: - raise - def eval(self, line): """ Parse and evaluate a single line of matlab @@ -192,11 +180,8 @@ def matlab(self, line, cell=None, local_ns=None): display_data = [] if text_output and not args.silent: - if ipython_version < 3: - display_data.append(('MatlabMagic.matlab', - {'text/plain':text_output})) - else: - display_data.append({'text/plain':text_output}) + display_data.append(('MatlabMagic.matlab', + {'text/plain': text_output})) for imgf in imgfiles: if len(imgf): @@ -204,17 +189,11 @@ def matlab(self, line, cell=None, local_ns=None): # later on: with open(imgf, 'rb') as fid: image = fid.read() - if ipython_version < 3: - display_data.append(('MatlabMagic.matlab', - {'image/png':image})) - else: - display_data.append({'image/png': image}) + display_data.append(('MatlabMagic.matlab', + {'image/png': image})) for disp_d in display_data: - if ipython_version < 3: - publish_display_data(disp_d[0], disp_d[1]) - else: - publish_display_data(disp_d) + publish_display_data(source=disp_d[0], data=disp_d[1]) # Delete the temporary data files created by matlab: if len(data_dir): diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index d20dd40..5ea85f5 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -21,6 +21,7 @@ """ +import atexit import os import time import base64 @@ -164,6 +165,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None + atexit.register(self.stop) def _program_name(self): # pramga: no cover raise NotImplemented @@ -222,6 +224,9 @@ def _response(self, **kwargs): # Stop the Matlab server def stop(self): + if not self.started: + return True + # Matlab should respond with "exit" if successful if self._response(cmd='exit') == "exit": print("%s closed" % self._program_name()) From 5f6d43850ae239b868f66389ef566c2489da2854 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:05:55 -0600 Subject: [PATCH 06/18] Add error handling to pymat_feval --- pymatbridge/matlab/util/pymat_feval.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 0a86282..3c1963b 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -31,7 +31,14 @@ arguments = ''; end - [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); + try + [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); + catch + response.message = lasterr; + json_response = json_dump(response); + return + end + if req.nargout == 1 response.result = resp{1}; else From 32290fafdcf2d121cbeb8b543a6e32d1f8a8da06 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:08:20 -0600 Subject: [PATCH 07/18] Add error handling to pymat_eval --- pymatbridge/matlab/util/pymat_eval.m | 9 ++++++++- pymatbridge/tests/test_magic.py | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 64d081b..69a6d45 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -35,7 +35,14 @@ % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - evalin('base', code); + try + evalin('base', code); + catch + diary('off'); + response.message = lasterr; + json_response = json_dump(response); + return; + end diary('off'); datadir = fullfile(tempdir(),'MatlabData'); diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 3b5d7f8..3a8085b 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -96,3 +96,6 @@ def test_struct(self): npt.assert_equal(self.ip.user_ns['obj']['num'], self.ip.user_ns['num']) npt.assert_equal(self.ip.user_ns['obj']['num_array'].squeeze(), self.ip.user_ns['num_array']) npt.assert_equal(self.ip.user_ns['obj']['str'], self.ip.user_ns['str']) + + def test_failed_attempt(self): + From 06a89b7af7bd0425f6042a7ee30247c4c7273bda Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:29:43 -0600 Subject: [PATCH 08/18] Revert eval function --- pymatbridge/matlab/util/pymat_eval.m | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 69a6d45..64d081b 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -35,14 +35,7 @@ % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - try - evalin('base', code); - catch - diary('off'); - response.message = lasterr; - json_response = json_dump(response); - return; - end + evalin('base', code); diary('off'); datadir = fullfile(tempdir(),'MatlabData'); From e1a02ea9540cfbe6c1665df5a079a82fef16e2e9 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:30:30 -0600 Subject: [PATCH 09/18] Add an explicit failure magic test --- pymatbridge/tests/test_magic.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 3a8085b..f9ecb00 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -1,6 +1,7 @@ import os import pymatbridge as pymat +from pymatbridge.matlab_magic import MatlabInterperterError from IPython.testing.globalipapp import get_ipython import numpy.testing as npt @@ -97,5 +98,6 @@ def test_struct(self): npt.assert_equal(self.ip.user_ns['obj']['num_array'].squeeze(), self.ip.user_ns['num_array']) npt.assert_equal(self.ip.user_ns['obj']['str'], self.ip.user_ns['str']) - def test_failed_attempt(self): - + def test_faulty(self): + npt.assert_raises(MatlabInterperterError, + lambda: self.ip.run_line_magic('matlab', '1 = 2')) From a4b2d0bde342f7a32276be22483fb3ccb1708e82 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:40:23 -0600 Subject: [PATCH 10/18] Use octave-compatible error handling --- pymatbridge/matlab/util/pymat_feval.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 3c1963b..8aef44b 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -33,8 +33,8 @@ try [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); - catch - response.message = lasterr; + catch ME + response.message = ME.message; json_response = json_dump(response); return end From 0df52c38b53c479dce2545f4df6439c18df603ec Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:44:38 -0600 Subject: [PATCH 11/18] Fix typo --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5ea85f5..2c2d790 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -167,7 +167,7 @@ def __init__(self, executable, socket_addr=None, self.socket = None atexit.register(self.stop) - def _program_name(self): # pramga: no cover + def _program_name(self): # pragma: no cover raise NotImplemented def _preamble_code(self): From 295d4779d3f36481fb0e100ef432f7efe7ef7785 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:51:48 -0600 Subject: [PATCH 12/18] Fix handling of non-contiguous arrays --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 2c2d790..7659a12 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -48,7 +48,7 @@ def encode_ndarray(obj): if obj.flags.c_contiguous: obj = obj.T elif not obj.flags.f_contiguous: - obj = asfortranarray(obj) + obj = asfortranarray(obj.T) else: obj = obj.T try: From 4be8b397eda01008a73c09d11862c60d4e2518e2 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:58:43 -0600 Subject: [PATCH 13/18] Try an explicit matlab close in unload extension --- pymatbridge/matlab_magic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index ddd864c..c793a47 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -216,5 +216,6 @@ def unload_ipython_extension(ip): global _loaded if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') + magic.Matlab.close() _loaded = False From e3c00b6cbe4fbd267d7606f1534c361e1562159d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 12:47:52 -0600 Subject: [PATCH 14/18] Fix unload_ipython_extension --- pymatbridge/matlab_magic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index c793a47..f8b441e 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -216,6 +216,6 @@ def unload_ipython_extension(ip): global _loaded if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') - magic.Matlab.close() + magic.Matlab.stop() _loaded = False From 733ee7e04417428649a886a0b015fd5c5a7147ff Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:02:26 -0600 Subject: [PATCH 15/18] Update publish coverage and fix handling of files --- pymatbridge/publish.py | 17 ++++++----------- pymatbridge/tests/test_publish.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 5843795..35d596e 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -48,10 +48,9 @@ def mfile_to_lines(mfile): Full path to an m file """ # We should only be able to read this file: - f = file(mfile, 'r') - lines = f.readlines() - f.close() - return lines + with open(mfile) as fid: + return fid.readlines() + def lines_to_notebook(lines, name=None): """ @@ -122,13 +121,9 @@ def convert_mfile(mfile, outfile=None): Full path to the output ipynb file """ - f = file(mfile, 'r') - lines = f.readlines() - f.close() + lines = mfile_to_lines(mfile) nb = lines_to_notebook(lines) if outfile is None: outfile = mfile.split('.m')[0] + '.ipynb' - nbfile = file(outfile, 'w') - nbformat.write(nb, nbfile, format='ipynb') - nbfile.close() - + with open(outfile, 'w') as fid: + nbformat.write(nb, fid, format='ipynb') diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 9f907c7..3b574be 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -1,5 +1,8 @@ import numpy.testing as npt import pymatbridge.publish as publish +import json +import os + def test_format_line(): """ @@ -32,3 +35,21 @@ def test_lines_to_notebook(): npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' This is a first line\n\n') + + +def test_convert_mfile(): + publish.convert_mfile('test_publish.m') + with open('test_publish.ipynb') as fid: + nb = json.load(fid) + npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + ' Experimenting with conversion from matlab to ipynb\n\n') + os.remove('test_publish.ipynb') + + +def test_mfile_to_lines(): + lines = publish.mfile_to_lines('test_publish.m') + + nb = publish.lines_to_notebook(lines) + + npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + ' Experimenting with conversion from matlab to ipynb\n\n') From 57dfdc877d7b962238d3dc8166cd8e893bc707a7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:08:19 -0600 Subject: [PATCH 16/18] Use the absolute path the the m-file --- pymatbridge/tests/test_publish.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 3b574be..c4c6b6f 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -4,6 +4,9 @@ import os +MFILE = os.path.join(os.path.dirname(__file__), 'test_publish.m') + + def test_format_line(): """ Test that lines get formatted properly @@ -38,18 +41,20 @@ def test_lines_to_notebook(): def test_convert_mfile(): - publish.convert_mfile('test_publish.m') + publish.convert_mfile(MFILE) with open('test_publish.ipynb') as fid: nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove('test_publish.ipynb') + os.remove(MFILE.replace('.m', '.ipynb') def test_mfile_to_lines(): - lines = publish.mfile_to_lines('test_publish.m') + lines = publish.mfile_to_lines(MFILE) nb = publish.lines_to_notebook(lines) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') + + os.remove(MFILE.replace('.m', '.ipynb')) From c8a067d084a95f25e3e187239ad7db1752d12802 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:12:01 -0600 Subject: [PATCH 17/18] Fix syntax error --- pymatbridge/tests/test_publish.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index c4c6b6f..56881c2 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -46,7 +46,7 @@ def test_convert_mfile(): nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove(MFILE.replace('.m', '.ipynb') + os.remove(MFILE.replace('.m', '.ipynb')) def test_mfile_to_lines(): From 808d72fd6acb464726673f961818f64482be8a5c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:13:15 -0600 Subject: [PATCH 18/18] Fix publish tests --- pymatbridge/tests/test_publish.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 56881c2..5c73e0f 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -42,11 +42,12 @@ def test_lines_to_notebook(): def test_convert_mfile(): publish.convert_mfile(MFILE) - with open('test_publish.ipynb') as fid: + nb_file = MFILE.replace('.m', '.ipynb') + with open(nb_file) as fid: nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove(MFILE.replace('.m', '.ipynb')) + os.remove(nb_file) def test_mfile_to_lines(): @@ -56,5 +57,3 @@ def test_mfile_to_lines(): npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - - os.remove(MFILE.replace('.m', '.ipynb'))