diff --git a/IPython/core/tests/test_profile.py b/IPython/core/tests/test_profile.py new file mode 100644 index 0000000..edba003 --- /dev/null +++ b/IPython/core/tests/test_profile.py @@ -0,0 +1,103 @@ +"""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']) + + \ No newline at end of file