Spaces:
Runtime error
Runtime error
# encoding: utf-8 | |
"""Tests for IPython.utils.capture""" | |
#----------------------------------------------------------------------------- | |
# Copyright (C) 2013 The IPython Development Team | |
# | |
# Distributed under the terms of the BSD License. The full license is in | |
# the file COPYING, distributed as part of this software. | |
#----------------------------------------------------------------------------- | |
#----------------------------------------------------------------------------- | |
# Imports | |
#----------------------------------------------------------------------------- | |
import sys | |
import pytest | |
from IPython.utils import capture | |
#----------------------------------------------------------------------------- | |
# Globals | |
#----------------------------------------------------------------------------- | |
_mime_map = dict( | |
_repr_png_="image/png", | |
_repr_jpeg_="image/jpeg", | |
_repr_svg_="image/svg+xml", | |
_repr_html_="text/html", | |
_repr_json_="application/json", | |
_repr_javascript_="application/javascript", | |
) | |
basic_data = { | |
'image/png' : b'binarydata', | |
'text/html' : "<b>bold</b>", | |
} | |
basic_metadata = { | |
'image/png' : { | |
'width' : 10, | |
'height' : 20, | |
}, | |
} | |
full_data = { | |
'image/png' : b'binarydata', | |
'image/jpeg' : b'binarydata', | |
'image/svg+xml' : "<svg>", | |
'text/html' : "<b>bold</b>", | |
'application/javascript' : "alert();", | |
'application/json' : "{}", | |
} | |
full_metadata = { | |
'image/png' : {"png" : "exists"}, | |
'image/jpeg' : {"jpeg" : "exists"}, | |
'image/svg+xml' : {"svg" : "exists"}, | |
'text/html' : {"html" : "exists"}, | |
'application/javascript' : {"js" : "exists"}, | |
'application/json' : {"json" : "exists"}, | |
} | |
hello_stdout = "hello, stdout" | |
hello_stderr = "hello, stderr" | |
#----------------------------------------------------------------------------- | |
# Test Functions | |
#----------------------------------------------------------------------------- | |
def test_rich_output_empty(method_mime): | |
"""RichOutput with no args""" | |
rich = capture.RichOutput() | |
method, mime = method_mime | |
assert getattr(rich, method)() is None | |
def test_rich_output(): | |
"""test RichOutput basics""" | |
data = basic_data | |
metadata = basic_metadata | |
rich = capture.RichOutput(data=data, metadata=metadata) | |
assert rich._repr_html_() == data["text/html"] | |
assert rich._repr_png_() == (data["image/png"], metadata["image/png"]) | |
assert rich._repr_latex_() is None | |
assert rich._repr_javascript_() is None | |
assert rich._repr_svg_() is None | |
def test_rich_output_no_metadata(method_mime): | |
"""test RichOutput with no metadata""" | |
data = full_data | |
rich = capture.RichOutput(data=data) | |
method, mime = method_mime | |
assert getattr(rich, method)() == data[mime] | |
def test_rich_output_metadata(method_mime): | |
"""test RichOutput with metadata""" | |
data = full_data | |
metadata = full_metadata | |
rich = capture.RichOutput(data=data, metadata=metadata) | |
method, mime = method_mime | |
assert getattr(rich, method)() == (data[mime], metadata[mime]) | |
def test_rich_output_display(): | |
"""test RichOutput.display | |
This is a bit circular, because we are actually using the capture code we are testing | |
to test itself. | |
""" | |
data = full_data | |
rich = capture.RichOutput(data=data) | |
with capture.capture_output() as cap: | |
rich.display() | |
assert len(cap.outputs) == 1 | |
rich2 = cap.outputs[0] | |
assert rich2.data == rich.data | |
assert rich2.metadata == rich.metadata | |
def test_capture_output(): | |
"""capture_output works""" | |
rich = capture.RichOutput(data=full_data) | |
with capture.capture_output() as cap: | |
print(hello_stdout, end="") | |
print(hello_stderr, end="", file=sys.stderr) | |
rich.display() | |
assert hello_stdout == cap.stdout | |
assert hello_stderr == cap.stderr | |
def test_capture_output_no_stdout(): | |
"""test capture_output(stdout=False)""" | |
rich = capture.RichOutput(data=full_data) | |
with capture.capture_output(stdout=False) as cap: | |
print(hello_stdout, end="") | |
print(hello_stderr, end="", file=sys.stderr) | |
rich.display() | |
assert "" == cap.stdout | |
assert hello_stderr == cap.stderr | |
assert len(cap.outputs) == 1 | |
def test_capture_output_no_stderr(): | |
"""test capture_output(stderr=False)""" | |
rich = capture.RichOutput(data=full_data) | |
# add nested capture_output so stderr doesn't make it to nose output | |
with capture.capture_output(), capture.capture_output(stderr=False) as cap: | |
print(hello_stdout, end="") | |
print(hello_stderr, end="", file=sys.stderr) | |
rich.display() | |
assert hello_stdout == cap.stdout | |
assert "" == cap.stderr | |
assert len(cap.outputs) == 1 | |
def test_capture_output_no_display(): | |
"""test capture_output(display=False)""" | |
rich = capture.RichOutput(data=full_data) | |
with capture.capture_output(display=False) as cap: | |
print(hello_stdout, end="") | |
print(hello_stderr, end="", file=sys.stderr) | |
rich.display() | |
assert hello_stdout == cap.stdout | |
assert hello_stderr == cap.stderr | |
assert cap.outputs == [] | |