def test_inline_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot inline') # inline plot creates data code = """ plot sin(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true('Display Data' in text) clear_log_text(kernel) # multiple plot statements data code = """ plot sin(x) plot cos(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true(text.count('Display Data') == 2) clear_log_text(kernel) # svg kernel.call_magic('%gnuplot inline svg') code = """ plot tan(x) """ kernel.do_execute(code) text = get_log_text(kernel) assert_true('Display Data' in text) clear_log_text(kernel)
def test_misc(): class TestKernel(MetaKernel): def do_execute_file(self, filename): self.Print("This language does not support running files") def do_function_direct(self, f, arg): self.Print("%s(%s)" % (f, self.repr(arg))) def repr(self, arg): return "XXX" kernel = get_kernel(TestKernel) assert kernel.do_execute_direct('garbage') is None kernel.do_execute_file('hello.txt') assert "This language does not support" in get_log_text(kernel) clear_log_text(kernel) kernel.do_function_direct('hello', 'world') text = get_log_text(kernel) assert "hello(XXX)" in text, text kernel.restart_kernel() ret = kernel.do_is_complete('hello\n') assert ret == {'status': 'complete'} assert kernel.do_inspect('hello', 10) is None
def test_shell_magic2(): kernel = get_kernel() kernel.do_execute('!cat "%s"' % __file__, False) log_text = get_log_text(kernel) assert "metakernel.py" in log_text kernel.do_execute('!!\necho "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text
def test_python_magic2(): kernel = get_kernel() kernel.do_execute('%python retval = 1', None) assert '1' in get_log_text(kernel) kernel.do_execute('''%%python def test(a): return a + 1 retval = test(2)''', None) assert '3' in get_log_text(kernel)
def test_shell_magic2(): kernel = get_kernel() kernel.do_execute("!cat \"%s\"" % __file__, False) log_text = get_log_text(kernel) assert 'metakernel.py' in log_text kernel.do_execute('!!\necho "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text
def test_ls_magic(): kernel = get_kernel() kernel.do_execute("%ls /tmp") text = get_log_text(kernel) assert '/tmp/' in text, text[:100] clear_log_text(kernel) kernel.do_execute("%ls /tmp --recursive") text = get_log_text(kernel) assert '/tmp' in text, text[:100] clear_log_text(kernel)
def test_sticky_magics(): kernel = get_kernel() kernel.do_execute('%%%html\nhello', None) text = get_log_text(kernel) assert 'html added to session magics' in text kernel.do_execute('<b>hello</b>', None) kernel.do_execute('%%%html', None) text = get_log_text(kernel) assert text.count('Display Data') == 2 assert 'html removed from session magics' in text
def test_ls_magic(): kernel = get_kernel() kernel.do_execute("%ls /tmp") text = get_log_text(kernel) assert text.startswith("/tmp/"), text[:100] clear_log_text(kernel) kernel.do_execute("%ls /tmp --recursive") text = get_log_text(kernel) assert text.startswith("/tmp/"), text[:100] clear_log_text(kernel)
def test_run_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("%%run %s" % __file__.replace(".pyc", ".py")) kernel.do_execute("TEST") text = get_log_text(kernel) assert '42' in text, "Didn't run this file" clear_log_text(kernel) kernel.do_execute("%%run --language python %s" % __file__.replace(".pyc", ".py")) kernel.do_execute("TEST") text = get_log_text(kernel) assert '42' in text, "Didn't run this file"
def test_download_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("%download --filename TEST.txt https://raw.githubusercontent.com/calysto/metakernel/master/LICENSE.txt") text = get_log_text(kernel) assert "Downloaded 'TEST.txt'" in text, text assert os.path.isfile("TEST.txt"), "File does not exist: TEST.txt" clear_log_text(kernel) kernel.do_execute("%download https://raw.githubusercontent.com/calysto/metakernel/master/LICENSE.txt") text = get_log_text(kernel) assert "Downloaded 'LICENSE.txt'" in text, text assert os.path.isfile("LICENSE.txt"), "File does not exist: LICENSE.txt"
def test_latex_magic(): kernel = get_kernel() kernel.do_execute("%latex $x_1 = \\dfrac{a}{b}$") text = get_log_text(kernel) assert "Display Data" in text clear_log_text(kernel) kernel.do_execute("""%%latex $x_1 = \\dfrac{a}{b}$ $x_2 = a^{n - 1}$""") text = get_log_text(kernel) assert "Display Data" in text
def test_latex_magic(): kernel = get_kernel() kernel.do_execute("%latex x_1 = \dfrace{a}{b}") text = get_log_text(kernel) assert "Display Data" in text clear_log_text(kernel) kernel.do_execute("""%%latex x_1 = \dfrac{a}{b} x_2 = a^{n - 1}""") text = get_log_text(kernel) assert "Display Data" in text
def test_process_metakernel(): kernel = get_kernel(BashKernel) kernel.do_execute("cat \"%s\"" % __file__, False) log_text = get_log_text(kernel) assert 'metakernel.py' in log_text, log_text kernel.do_execute('echo "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text kernel.do_execute('lalkjds') text = get_log_text(kernel) assert ': command not found' in text, text
def test_process_metakernel(): kernel = get_kernel(BashKernel) kernel.do_execute('cat "%s"' % __file__, False) log_text = get_log_text(kernel) assert "metakernel.py" in log_text, log_text kernel.do_execute('echo "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text kernel.do_execute("lalkjds") text = get_log_text(kernel) assert ": command not found" in text, text
def test_cd_magic(): kernel = get_kernel() kernel.do_execute("%cd ~") assert os.getcwd() == os.path.expanduser('~'), os.getcwd() clear_log_text(kernel) kernel.do_execute('%cd') assert os.getcwd() in get_log_text(kernel)
def test_inspect(): kernel = get_kernel() kernel.do_inspect('%lsmagic', len('%lsmagic')) log_text = get_log_text(kernel) assert "list the current line and cell magics" in log_text kernel.do_inspect('%lsmagic ', len('%lsmagic') + 1)
def test_reload_magics_magic(): kernel = get_kernel() kernel.do_execute("%reload_magics") text = get_log_text(kernel) for item in "%cd %connect_info %download %edit %help %html %install_magic %javascript %kernel %kx %latex %load %lsmagic %magic %parallel %plot %pmap %px %python %reload_magics %restart %run %shell %macro %%debug %%file %%help %%html %%javascript %%kx %%latex %%processing %%px %%python %%shell %%show %%macro %%time".split(): assert item in text, ("load_magic didn't list '%s'" % item)
def test_reload_magics_magic(): kernel = get_kernel() kernel.do_execute("%reload_magics") text = get_log_text(kernel) for item in "%cd %connect_info %download %edit %help %html %install_magic %javascript %kernel %kx %latex %load %lsmagic %magic %parallel %plot %pmap %px %python %reload_magics %restart %run %shell %spell %%debug %%file %%help %%html %%javascript %%kx %%latex %%processing %%px %%python %%shell %%show %%spell %%time".split(): assert item in text, ("load_magic didn't list '%s'" % item)
def test_multiplot(): kernel = get_kernel(GnuplotKernel) # multiplot code = """ set multiplot layout 2,1 plot sin(x) plot cos(x) unset multiplot """ kernel.do_execute(code) text = get_log_text(kernel) assert text.count('Display Data') == 1 # With output code = """ set terminal pncairo set output 'multiplot-sin-cos.png' set multiplot layout 2, 1 plot sin(x) plot cos(x) unset multiplot unset output """ kernel.do_execute(code) assert os.path.exists('multiplot-sin-cos.png') remove_files('multiplot-sin-cos.png')
def test_cell_magic(): # To simulate '%load_ext gnuplot_kernel'; # create a main kernel, a gnuplot kernel and # a gnuplot magic that uses the gnuplot kernel. # Then manually register the gnuplot magic into # the main kernel. kernel = get_kernel() gkernel = GnuplotKernel() gmagic = GnuplotMagic(gkernel) gkernel.makeSubkernel(kernel) kernel.line_magics['gnuplot'] = gmagic kernel.cell_magics['gnuplot'] = gmagic # inline output code = """%%gnuplot plot cos(x) """ kernel.do_execute(code) assert 'Display Data' in get_log_text(kernel) clear_log_text(kernel) # file output kernel.call_magic('%gnuplot pngcairo size 560,420') code = """%%gnuplot set output 'cosine.png' plot cos(x) """ kernel.do_execute(code) assert os.path.exists('cosine.png') clear_log_text(kernel) remove_files('cosine.png')
def test_cell_magic(): # To simulate '%load_ext gnuplot_kernel'; # create a main kernel, a gnuplot kernel and # a gnuplot magic that uses the gnuplot kernel. # Then manually register the gnuplot magic into # the main kernel. kernel = get_kernel() gkernel = GnuplotKernel() gmagic = GnuplotMagic(gkernel) gkernel.makeSubkernelTo(kernel, kernel.Display) kernel.line_magics['gnuplot'] = gmagic kernel.cell_magics['gnuplot'] = gmagic # inline output code = """%%gnuplot plot cos(x) """ kernel.do_execute(code) assert_true('Display Data' in get_log_text(kernel)) clear_log_text(kernel) # file output kernel.call_magic('%gnuplot pngcairo size 560,420') code = """%%gnuplot set output 'cosine.png' plot cos(x) """ kernel.do_execute(code) assert_true(os.path.exists('cosine.png')) clear_log_text(kernel)
def test_html_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%html <b>bold</b> """) text = get_log_text(kernel) assert "Display Data" in text, text
def test_javascript_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%javascript console.log("Hello from Javascript"); """) text = get_log_text(kernel) assert "Display Data" in text, text
def test_parallel_magic(): kernel = get_kernel(EvalKernel) # start up an EvalKernel on each node: kernel.do_execute("%parallel metakernel_python MetaKernelPython", False) # Now, execute something on each one: kernel.do_execute("%px cluster_rank", False) results = get_log_text(kernel) assert "[0, 1, 2]" in results, results
def test_bad_prompt(): kernel = get_kernel(GnuplotKernel) # Anything other than 'gnuplot> ' # is a bad prompt code = 'set multiplot' kernel.do_execute(code) text = get_log_text(kernel) assert 'warning' in text.lower()
def test_process_metakernel(): kernel = get_kernel(BashKernel) kernel.do_execute("cat \"%s\"" % __file__, False) log_text = get_log_text(kernel) assert 'metakernel.py' in log_text, log_text kernel.do_execute('echo "hello"\necho "goodbye"', None) log_text = get_log_text(kernel) assert '"hello"' in log_text assert '"goodbye"' in log_text kernel.do_execute('lalkjds') text = get_log_text(kernel) assert ': command not found' in text, text html = HTML("some html") kernel.Display(html)
def test_bad_prompt(): kernel = get_kernel(GnuplotKernel) # Anything other than 'gnuplot> ' # is a bad prompt code = 'set multiplot' kernel.do_execute(code) text = get_log_text(kernel) assert_true('warning' in text.lower())
def test_gnuplot_error_message(): kernel = get_kernel(GnuplotKernel) # The error messages gets to the kernel code = 'plot [1,2][] sin(x)' kernel.do_execute(code) text = get_log_text(kernel) assert_true(' ^' in text)
def test_time_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%time x = 1 """) text = get_log_text(kernel) assert re.match(".*Time: .* seconds.", text, re.MULTILINE | re.DOTALL) != None, text
def test_badinput(): kernel = get_kernel(GnuplotKernel) # No code that endswith a backslash code = 'plot sin(x),\\' kernel.do_execute(code) text = get_log_text(kernel) assert 'backslash' in text
def test_gnuplot_error_message(): kernel = get_kernel(GnuplotKernel) # The error messages gets to the kernel code = 'plot [1,2][] sin(x)' kernel.do_execute(code) text = get_log_text(kernel) assert ' ^' in text
def test_download_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute( "%download --filename TEST.txt https://raw.githubusercontent.com/calysto/metakernel/master/LICENSE.txt" ) text = get_log_text(kernel) assert "Downloaded 'TEST.txt'" in text, text assert os.path.isfile("TEST.txt"), "File does not exist: TEST.txt" clear_log_text(kernel) kernel.do_execute( "%download https://raw.githubusercontent.com/calysto/metakernel/master/LICENSE.txt" ) text = get_log_text(kernel) assert "Downloaded 'LICENSE.txt'" in text, text assert os.path.isfile("LICENSE.txt"), "File does not exist: LICENSE.txt"
def test_badinput(): kernel = get_kernel(GnuplotKernel) # No code that endswith a backslash code = 'plot sin(x),\\' kernel.do_execute(code) text = get_log_text(kernel) assert_true('backslash' in text)
def test_help_magic(): kernel = get_kernel() kernel.do_execute('?%magic', None) text = get_log_text(kernel) assert '%magic - show installed magics' in text, repr(text) kernel.do_execute('%lsmagic??', None) text = get_log_text(kernel) assert 'class LSMagicMagic' in text kernel.do_execute('?', None) text = get_log_text(kernel) assert 'This is a usage statement.' in text kernel.do_execute('?%', None) text = get_log_text(kernel) assert 'This is a usage statement.' in text kernel.do_execute('?%whatwhat', None) text = get_log_text(kernel) assert "No such line magic 'whatwhat'" in text clear_log_text(kernel) kernel.do_execute('%%help %magic', None) text = get_log_text(kernel) assert 'MagicMagic' in text kernel.do_execute('%%help\n%python', None) text = get_log_text(kernel) assert 'PythonMagic' in text
def test_set_get_range_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("%set variable range(2)") kernel.do_execute("%get variable") text = get_log_text(kernel) if PY3: assert "range(0, 2)" in text, text else: assert "[0, 1]" in text, text
def test_install_magic_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute( "%install_magic https://raw.githubusercontent.com/calysto/metakernel/master/metakernel/magics/cd_magic.py" ) text = get_log_text(kernel) assert re.match(".*Downloaded '.*ipython/metakernel/magics/cd_magic.py'", text, re.DOTALL | re.M), "Not downloaded" assert os.path.isfile(filename), ("File not found: %s" % filename)
def test_restart_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute('a=1') kernel.do_execute("%restart") kernel.do_execute('a') text = get_log_text(kernel) assert 'NameError' in text
def test_pipe_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute(""" def upper(text): return text.upper() def lower(text): return text.lower() def pl_word(word): if len(word) > 3: return word[1:] + word[0] + "ay" else: return word def piglatin(text): return " ".join([pl_word(word) for word in text.split(" ")]) """) kernel.do_execute("""%%pipe upper this is a test """) text = get_log_text(kernel) assert "THIS IS A TEST" in text, ("text: " + text) kernel.do_execute("""%%pipe upper | piglatin this is a test """) text = get_log_text(kernel) assert "HISTay IS A ESTTay" in text, ("text: " + text) kernel.do_execute("""%%pipe piglatin | upper this is a test """) text = get_log_text(kernel) assert "HISTAY IS A ESTTAY" in text, ("text: " + text) kernel.do_execute("""%%pipe piglatin | upper | lower this is a test """) text = get_log_text(kernel) assert "histay is a esttay" in text, ("text: " + text) clear_log_text(kernel)
def test_help(): kernel = get_kernel(GnuplotKernel) # The help commands should not get # stuck in pagers. # Fancy notebook help code = 'terminal?' kernel.do_execute(code) text = get_log_text(kernel).lower() assert 'subtopic' in text clear_log_text(kernel) # help by gnuplot statement code = 'help print' kernel.do_execute(code) text = get_log_text(kernel).lower() assert 'syntax' in text clear_log_text(kernel)
def test_time_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute( """%%time x = 1 """ ) text = get_log_text(kernel) assert re.match(".*Time: .* seconds.", text, re.MULTILINE | re.DOTALL) != None, text
def test_help(): kernel = get_kernel(GnuplotKernel) # The help commands should not get # stuck in pagers. # Fancy notebook help code = 'terminal?' kernel.do_execute(code) text = get_log_text(kernel).lower() assert_true('subtopic' in text) clear_log_text(kernel) # help by gnuplot statement code = 'help print' kernel.do_execute(code) text = get_log_text(kernel).lower() assert_true('syntax' in text) clear_log_text(kernel)
def test_macro_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%macro testme print("ok") """, False) kernel.do_execute("%macro testme", False) text = get_log_text(kernel) assert "ok" in text, text clear_log_text(kernel) kernel.do_execute("%macro -l learned", False) text = get_log_text(kernel) assert "testme" in text, text clear_log_text(kernel) kernel.do_execute("%macro -d testme", False) kernel.do_execute("%macro -l learned", False) text = get_log_text(kernel) assert "testme" not in text, text clear_log_text(kernel)
def test_spell_magic(): kernel = get_kernel(EvalKernel) kernel.do_execute("""%%spell testme print("ok") """, False) kernel.do_execute("%spell testme", False) text = get_log_text(kernel) assert "ok" in text, text clear_log_text(kernel) kernel.do_execute("%spell -l learned", False) text = get_log_text(kernel) assert "testme" in text, text clear_log_text(kernel) kernel.do_execute("%spell -d testme", False) kernel.do_execute("%spell -l learned", False) text = get_log_text(kernel) assert "testme" not in text, text clear_log_text(kernel)
def test_misc(): class TestKernel(MetaKernel): def do_execute_file(self, filename): self.Print("This language does not support running files") kernel = get_kernel(TestKernel) assert kernel.do_execute_direct('garbage') is None kernel.do_execute_file('hello.txt') assert "This language does not support" in get_log_text(kernel) clear_log_text(kernel) kernel.do_function_direct('hello', 'world') assert "This language does not support" in get_log_text(kernel) kernel.restart_kernel() ret = kernel.do_is_complete('hello\n') assert ret == {'status': 'unknown'} assert kernel.do_inspect('hello', 10) is None
def test_do_execute_meta(): kernel = get_kernel(EvalKernel) kernel.do_execute("~~META~~: reset") text = get_log_text(kernel) assert "RESET" in text, text clear_log_text(kernel) kernel.do_execute("~~META~~: stop") text = get_log_text(kernel) assert "STOP" in text, text clear_log_text(kernel) kernel.do_execute("~~META~~: step") text = get_log_text(kernel) assert "STEP" in text, text clear_log_text(kernel) kernel.do_execute("~~META~~: inspect something") text = get_log_text(kernel) assert "INSPECT" in text, text clear_log_text(kernel)