##// END OF EJS Templates
Merge pull request #13213 from Kojoley/fix-bunch-of-doctests...
Merge pull request #13213 from Kojoley/fix-bunch-of-doctests Fix bunch of doctests

File last commit:

r26720:c202203c
r26940:32497c8d merge
Show More
test_capture.py
171 lines | 5.3 KiB | text/x-python | PythonLexer
MinRK
tests for utils.capture
r12228 # 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
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 import pytest
from IPython.testing.decorators import skip_iptest_but_not_pytest
MinRK
tests for utils.capture
r12228
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
#-----------------------------------------------------------------------------
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 @pytest.mark.parametrize("method_mime", _mime_map.items())
@skip_iptest_but_not_pytest
def test_rich_output_empty(method_mime):
MinRK
tests for utils.capture
r12228 """RichOutput with no args"""
rich = capture.RichOutput()
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 method, mime = method_mime
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert getattr(rich, method)() is None
MinRK
tests for utils.capture
r12228
def test_rich_output():
"""test RichOutput basics"""
data = basic_data
metadata = basic_metadata
MinRK
remove `source` key from display_data
r16585 rich = capture.RichOutput(data=data, metadata=metadata)
Matthias Bussonnier
remove some nose from test_capture.py
r26720 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
MinRK
tests for utils.capture
r12228
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183
@skip_iptest_but_not_pytest
@pytest.mark.parametrize("method_mime", _mime_map.items())
def test_rich_output_no_metadata(method_mime):
MinRK
tests for utils.capture
r12228 """test RichOutput with no metadata"""
data = full_data
MinRK
remove `source` key from display_data
r16585 rich = capture.RichOutput(data=data)
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 method, mime = method_mime
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert getattr(rich, method)() == data[mime]
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183
MinRK
tests for utils.capture
r12228
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 @skip_iptest_but_not_pytest
@pytest.mark.parametrize("method_mime", _mime_map.items())
def test_rich_output_metadata(method_mime):
MinRK
tests for utils.capture
r12228 """test RichOutput with metadata"""
data = full_data
metadata = full_metadata
MinRK
remove `source` key from display_data
r16585 rich = capture.RichOutput(data=data, metadata=metadata)
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183 method, mime = method_mime
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert getattr(rich, method)() == (data[mime], metadata[mime])
MinRK
tests for utils.capture
r12228
def test_rich_output_display():
"""test RichOutput.display
Matthias Bussonnier
reformat docstring in IPython utils
r26419
MinRK
tests for utils.capture
r12228 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()
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert len(cap.outputs) == 1
MinRK
tests for utils.capture
r12228 rich2 = cap.outputs[0]
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert rich2.data == rich.data
assert rich2.metadata == rich.metadata
MinRK
tests for utils.capture
r12228
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()
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert hello_stdout == cap.stdout
assert hello_stderr == cap.stderr
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183
MinRK
tests for utils.capture
r12228
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()
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert "" == cap.stdout
assert hello_stderr == cap.stderr
assert len(cap.outputs) == 1
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183
MinRK
tests for utils.capture
r12228
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()
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert hello_stdout == cap.stdout
assert "" == cap.stderr
assert len(cap.outputs) == 1
Matthias Bussonnier
Remove yield test that are not support by pytest anymore...
r26183
MinRK
tests for utils.capture
r12228
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()
Matthias Bussonnier
remove some nose from test_capture.py
r26720 assert hello_stdout == cap.stdout
assert hello_stderr == cap.stderr
assert cap.outputs == []