test_shellapp.py
70 lines
| 2.7 KiB
| text/x-python
|
PythonLexer
Bradley M. Froehle
|
r8531 | # -*- coding: utf-8 -*- | ||
"""Tests for shellapp module. | ||||
Authors | ||||
------- | ||||
* Bradley Froehle | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (C) 2012 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 unittest | ||||
from IPython.testing import decorators as dec | ||||
from IPython.testing import tools as tt | ||||
Thomas Ballinger
|
r18526 | from IPython.utils.py3compat import PY3 | ||
sqlite_err_maybe = dec.module_not_available('sqlite3') | ||||
SQLITE_NOT_AVAILABLE_ERROR = ('WARNING: IPython History requires SQLite,' | ||||
' your history will not be saved\n') | ||||
Bradley M. Froehle
|
r8531 | |||
class TestFileToRun(unittest.TestCase, tt.TempFileMixin): | ||||
"""Test the behavior of the file_to_run parameter.""" | ||||
def test_py_script_file_attribute(self): | ||||
"""Test that `__file__` is set when running `ipython file.py`""" | ||||
src = "print(__file__)\n" | ||||
self.mktmp(src) | ||||
Thomas Ballinger
|
r18526 | err = SQLITE_NOT_AVAILABLE_ERROR if sqlite_err_maybe else None | ||
Bradley M. Froehle
|
r8531 | tt.ipexec_validate(self.fname, self.fname, err) | ||
def test_ipy_script_file_attribute(self): | ||||
"""Test that `__file__` is set when running `ipython file.ipy`""" | ||||
src = "print(__file__)\n" | ||||
self.mktmp(src, ext='.ipy') | ||||
Thomas Ballinger
|
r18526 | err = SQLITE_NOT_AVAILABLE_ERROR if sqlite_err_maybe else None | ||
Bradley M. Froehle
|
r8531 | tt.ipexec_validate(self.fname, self.fname, err) | ||
Thomas Kluyver
|
r18682 | # The commands option to ipexec_validate doesn't work on Windows, and it | ||
# doesn't seem worth fixing | ||||
@dec.skip_win32 | ||||
Thomas Ballinger
|
r18526 | def test_py_script_file_attribute_interactively(self): | ||
"""Test that `__file__` is not set after `ipython -i file.py`""" | ||||
src = "True\n" | ||||
self.mktmp(src) | ||||
Thomas Kluyver
|
r22107 | out = 'In [1]: False\n\nIn [2]:' | ||
Thomas Ballinger
|
r18526 | err = SQLITE_NOT_AVAILABLE_ERROR if sqlite_err_maybe else None | ||
Thomas Kluyver
|
r22107 | tt.ipexec_validate(self.fname, out, err, options=['-i'], | ||
Thomas Ballinger
|
r18526 | commands=['"__file__" in globals()', 'exit()']) | ||
Thomas Kluyver
|
r18682 | @dec.skip_win32 | ||
Thomas Ballinger
|
r18526 | @dec.skipif(PY3) | ||
def test_py_script_file_compiler_directive(self): | ||||
"""Test `__future__` compiler directives with `ipython -i file.py`""" | ||||
src = "from __future__ import division\n" | ||||
self.mktmp(src) | ||||
Thomas Kluyver
|
r22107 | out = 'In [1]: float\n\nIn [2]:' | ||
Thomas Ballinger
|
r18526 | err = SQLITE_NOT_AVAILABLE_ERROR if sqlite_err_maybe else None | ||
Thomas Kluyver
|
r22107 | tt.ipexec_validate(self.fname, out, err, options=['-i'], | ||
Thomas Ballinger
|
r18526 | commands=['type(1/2)', 'exit()']) | ||