test_profile.py
102 lines
| 3.0 KiB
| text/x-python
|
PythonLexer
MinRK
|
r5250 | """Tests for profile-related functions. | |
Currently only the startup-dir functionality is tested, but more tests should | |||
be added for: | |||
* ipython profile create | |||
* ipython profile list | |||
* ipython profile create --parallel | |||
* security dir permissions | |||
Authors | |||
------- | |||
* MinRK | |||
""" | |||
from __future__ import absolute_import | |||
#----------------------------------------------------------------------------- | |||
# Imports | |||
#----------------------------------------------------------------------------- | |||
import os | |||
import shutil | |||
import sys | |||
import tempfile | |||
import nose.tools as nt | |||
from nose import SkipTest | |||
from IPython.core.profiledir import ProfileDir | |||
from IPython.testing import decorators as dec | |||
from IPython.testing import tools as tt | |||
from IPython.utils import py3compat | |||
#----------------------------------------------------------------------------- | |||
# Globals | |||
#----------------------------------------------------------------------------- | |||
TMP_TEST_DIR = tempfile.mkdtemp() | |||
HOME_TEST_DIR = os.path.join(TMP_TEST_DIR, "home_test_dir") | |||
IP_TEST_DIR = os.path.join(HOME_TEST_DIR,'.ipython') | |||
# | |||
# Setup/teardown functions/decorators | |||
# | |||
def setup(): | |||
"""Setup test environment for the module: | |||
- Adds dummy home dir tree | |||
""" | |||
# Do not mask exceptions here. In particular, catching WindowsError is a | |||
# problem because that exception is only defined on Windows... | |||
os.makedirs(IP_TEST_DIR) | |||
def teardown(): | |||
"""Teardown test environment for the module: | |||
- Remove dummy home dir tree | |||
""" | |||
# Note: we remove the parent test dir, which is the root of all test | |||
# subdirs we may have created. Use shutil instead of os.removedirs, so | |||
# that non-empty directories are all recursively removed. | |||
shutil.rmtree(TMP_TEST_DIR) | |||
#----------------------------------------------------------------------------- | |||
# Test functions | |||
#----------------------------------------------------------------------------- | |||
def test_startup_py(): | |||
# create profile dir | |||
pd = ProfileDir.create_profile_dir_by_name(IP_TEST_DIR, 'test') | |||
# write startup python file | |||
with open(os.path.join(pd.startup_dir, '00-start.py'), 'w') as f: | |||
f.write('zzz=123\n') | |||
# write simple test file, to check that the startup file was run | |||
fname = os.path.join(TMP_TEST_DIR, 'test.py') | |||
with open(fname, 'w') as f: | |||
f.write('print zzz\n') | |||
# validate output | |||
tt.ipexec_validate(fname, '123', '', | |||
options=['--ipython-dir', IP_TEST_DIR, '--profile', 'test']) | |||
def test_startup_ipy(): | |||
# create profile dir | |||
pd = ProfileDir.create_profile_dir_by_name(IP_TEST_DIR, 'test') | |||
# write startup ipython file | |||
with open(os.path.join(pd.startup_dir, '00-start.ipy'), 'w') as f: | |||
f.write('%profile\n') | |||
# write empty script, because we don't need anything to happen | |||
# after the startup file is run | |||
fname = os.path.join(TMP_TEST_DIR, 'test.py') | |||
with open(fname, 'w') as f: | |||
f.write('') | |||
# validate output | |||
tt.ipexec_validate(fname, 'test', '', | |||
options=['--ipython-dir', IP_TEST_DIR, '--profile', 'test']) | |||