def test_unable_to_replace_magics(monkeypatch: MonkeyPatch) -> None: src = "%%time\na = 'foo'" monkeypatch.setattr("black.handle_ipynb_magics.TOKEN_HEX", lambda _: "foo") with pytest.raises( AssertionError, match="Black was not able to replace IPython magic" ): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_cell_magic_with_custom_python_magic( mode: Mode, expected_output: str, expectation: ContextManager[object]) -> None: with expectation: result = format_cell( "%%custom_python_magic -n1 -n2\nx=2", fast=True, mode=mode, ) assert result == expected_output
def test_cell_magic_with_invalid_body() -> None: src = "%%time\nif True" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_multiline_no_magic() -> None: src = "1 + \\\n2" result = format_cell(src, fast=True, mode=JUPYTER_MODE) expected = "1 + 2" assert result == expected
def test_multiline_magic() -> None: src = "%time 1 + \\\n2" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_cell_magic(mode: Mode) -> None: src = "%%time\nfoo =bar" result = format_cell(src, fast=True, mode=mode) expected = "%%time\nfoo = bar" assert result == expected
def test_trailing_semicolon_indented() -> None: src = "with foo:\n plot_bar();" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_trailing_semicolon_with_comment() -> None: src = 'foo = "a" ; # bar' result = format_cell(src, fast=True, mode=JUPYTER_MODE) expected = 'foo = "a"; # bar' assert result == expected
def test_input_already_contains_transformed_magic() -> None: src = '%time foo()\nget_ipython().run_cell_magic("time", "", "foo()\\n")' with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_set_input() -> None: src = "a = b??" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_non_python_magics(src: str) -> None: with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_magic(src: str, expected: str, mode: Mode) -> None: result = format_cell(src, fast=True, mode=mode) assert result == expected
def test_magic(src: str, expected: str) -> None: result = format_cell(src, fast=True, mode=JUPYTER_MODE) assert result == expected
def test_cell_magic() -> None: src = "%%time\nfoo =bar" result = format_cell(src, fast=True, mode=JUPYTER_MODE) expected = "%%time\nfoo = bar" assert result == expected
def test_empty_cell() -> None: src = "" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_trailing_semicolon(fast: bool) -> None: src = 'foo = "a" ;' result = format_cell(src, fast=fast, mode=JUPYTER_MODE) expected = 'foo = "a";' assert result == expected
def test_cell_magic_with_magic() -> None: src = "%%timeit -n1\nls =!ls" result = format_cell(src, fast=True, mode=JUPYTER_MODE) expected = "%%timeit -n1\nls = !ls" assert result == expected
def test_trailing_semicolon_with_comment_on_next_line() -> None: src = "import black;\n\n# this is a comment" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_cell_magic_nested() -> None: src = "%%time\n%%time\n2+2" result = format_cell(src, fast=True, mode=JUPYTER_MODE) expected = "%%time\n%%time\n2 + 2" assert result == expected
def test_trailing_semicolon_noop() -> None: src = 'foo = "a";' with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_automagic() -> None: src = "pip install black" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_cell_magic_noop() -> None: src = "%%time\n2 + 2" with pytest.raises(NothingChanged): format_cell(src, fast=True, mode=JUPYTER_MODE)
def test_set_input() -> None: src = "a = b??" expected = "??b" result = format_cell(src, fast=True, mode=JUPYTER_MODE) assert result == expected