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_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_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_file_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot pngcairo size 560, 420') # With a non-inline terminal plot gets created code = """ set output 'sine.png' plot sin(x) """ kernel.do_execute(code) assert os.path.exists('sine.png') clear_log_text(kernel) # Multiple line statement code = """ set output 'sine-cosine.png' plot sin(x),\ cos(x) """ kernel.do_execute(code) assert os.path.exists('sine-cosine.png') # Multiple line statement code = """ set output 'tan.png' plot tan(x) set output 'tan2.png' replot """ kernel.do_execute(code) assert os.path.exists('tan.png') assert os.path.exists('tan2.png') remove_files('sine.png', 'sine-cosine.png') remove_files('tan.png', 'tan2.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_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_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_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_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_python_magic4(): kernel = get_kernel() kernel.do_execute('?%python', None) assert '%python CODE' in get_log_text(kernel) clear_log_text(kernel) ret = kernel.do_execute('?%python a', None) assert ret['payload'][0]['data']['text/plain'] == 'No help available for "a"' ret = kernel.do_execute('?%%python a.b', None) assert ret['payload'][0]['data']['text/plain'] == 'No help available for "a.b"' ret = kernel.do_execute('??%%python oct', None) assert ret['payload'][0]['data']['text/plain'].startswith('oct(number)')
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_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_python_magic4(): kernel = get_kernel() kernel.do_execute('?%python', None) assert '%python CODE' in get_log_text(kernel) clear_log_text(kernel) ret = kernel.do_execute('?%python a', None) assert ret['payload'][0]['data']['text/plain'] == 'No help available for "a"' ret = kernel.do_execute('?%%python a.b', None) assert ret['payload'][0]['data']['text/plain'] == 'No help available for "a.b"' ret = kernel.do_execute('??%%python oct', None) assert 'Return the octal representation of an integer' in ret['payload'][0]['data']['text/plain'], ret['payload'][0]['data']['text/plain']
def test_python_magic4(): kernel = get_kernel() kernel.do_execute('?%python', None) assert '%python CODE' in get_log_text(kernel) clear_log_text(kernel) ret = kernel.do_execute('?%python a', None) assert ret['payload'][0]['data'][ 'text/plain'] == 'No help available for "a"' ret = kernel.do_execute('?%%python a.b', None) assert ret['payload'][0]['data'][ 'text/plain'] == 'No help available for "a.b"' ret = kernel.do_execute('??%%python oct', None) assert ret['payload'][0]['data']['text/plain'].startswith('oct(number)')
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_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_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_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_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_file_plots(): kernel = get_kernel(GnuplotKernel) kernel.call_magic('%gnuplot pngcairo size 560, 420') # With a non-inline terminal plot gets created code = """ set output 'sine.png' plot sin(x) """ kernel.do_execute(code) assert_true(os.path.exists('sine.png')) clear_log_text(kernel) # Multiple line statement code = """ set output 'sine-cosine.png' plot sin(x),\ cos(x) """ kernel.do_execute(code) assert_true(os.path.exists('sine-cosine.png'))
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_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 '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 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 'Display Data' in text clear_log_text(kernel)
def test_data_block(): kernel = get_kernel(GnuplotKernel) # Good data block code = """ $DATA << EOD # x y 1 1 2 2 3 3 4 4 EOD plot $DATA """ kernel.do_execute(code) text = get_log_text(kernel) assert text.count('Display Data') == 1 clear_log_text(kernel) # Badly terminated data block bad_code = """ $DATA << EOD # x y 1 1 2 2 3 3 4 4 EODX plot $DATA """ kernel.do_execute(bad_code) text = get_log_text(kernel) assert 'Error' in text clear_log_text(kernel) # Good code should work after the bad_code kernel.do_execute(code) text = get_log_text(kernel) assert text.count('Display Data') == 1
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)
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)