# coding: utf-8
"""Tests for IPython.core.application"""

import os
import tempfile

import nose.tools as nt

from traitlets import Unicode

from IPython.core.application import BaseIPythonApplication
from IPython.testing import decorators as dec
from IPython.utils.tempdir import TemporaryDirectory


@dec.onlyif_unicode_paths
def test_unicode_cwd():
    """Check that IPython starts with non-ascii characters in the path."""
    wd = tempfile.mkdtemp(suffix=u"€")
    
    old_wd = os.getcwd()
    os.chdir(wd)
    #raise Exception(repr(os.getcwd()))
    try:
        app = BaseIPythonApplication()
        # The lines below are copied from Application.initialize()
        app.init_profile_dir()
        app.init_config_files()
        app.load_config_file(suppress_errors=False)
    finally:
        os.chdir(old_wd)

@dec.onlyif_unicode_paths
def test_unicode_ipdir():
    """Check that IPython starts with non-ascii characters in the IP dir."""
    ipdir = tempfile.mkdtemp(suffix=u"€")
    
    # Create the config file, so it tries to load it.
    with open(os.path.join(ipdir, 'ipython_config.py'), "w") as f:
        pass
    
    old_ipdir1 = os.environ.pop("IPYTHONDIR", None)
    old_ipdir2 = os.environ.pop("IPYTHON_DIR", None)
    os.environ["IPYTHONDIR"] = ipdir
    try:
        app = BaseIPythonApplication()
        # The lines below are copied from Application.initialize()
        app.init_profile_dir()
        app.init_config_files()
        app.load_config_file(suppress_errors=False)
    finally:
        if old_ipdir1:
            os.environ["IPYTHONDIR"] = old_ipdir1
        if old_ipdir2:
            os.environ["IPYTHONDIR"] = old_ipdir2

def test_cli_priority():
    with TemporaryDirectory() as td:

        class TestApp(BaseIPythonApplication):
            test = Unicode().tag(config=True)

        # Create the config file, so it tries to load it.
        with open(os.path.join(td, 'ipython_config.py'), "w") as f:
            f.write("c.TestApp.test = 'config file'")

        app = TestApp()
        app.initialize(['--profile-dir', td])
        nt.assert_equal(app.test, 'config file')
        app = TestApp()
        app.initialize(['--profile-dir', td, '--TestApp.test=cli'])
        nt.assert_equal(app.test, 'cli')


@@ -82,33 +82,8 @@
 le%0A%0A
-import nose.tools as nt%0A%0A
 from
@@ -2015,33 +2015,33 @@
 app.initialize(%5B
-'
+%22
 --profile-dir', 
@@ -2033,25 +2033,25 @@
 -profile-dir
-'
+%22
 , td%5D)%0A     
@@ -2057,32 +2057,23 @@
     
-nt.
 assert
-_equal(
+ 
 app.test
 , 'c
@@ -2068,19 +2068,21 @@
 app.test
-, '
+ == %22
 config f
@@ -2084,18 +2084,17 @@
 fig file
-')
+%22
 %0A       
@@ -2134,17 +2134,17 @@
 ialize(%5B
-'
+%22
 --profil
@@ -2152,16 +2152,16 @@
 -dir
-'
+%22
 , td, 
-'
+%22
 --Te
@@ -2174,17 +2174,17 @@
 test=cli
-'
+%22
 %5D)%0A     
@@ -2190,32 +2190,23 @@
     
-nt.
 assert
-_equal(
+ 
 app.test
 , 'c
@@ -2205,14 +2205,14 @@
 test
-, 'cli')%0A
+ == %22cli%22
 %0A

Remove nose