コード例 #1
0
def test_activate_help():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            {activate} {envs}/test1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source activate ENV" in stderr

            commands = (command_setup + """
            source {activate} --help
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source activate ENV" in stderr

            commands = (command_setup + """
            {deactivate}
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source deactivate" in stderr

            commands = (command_setup + """
            source {deactivate} --help
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source deactivate" in stderr
コード例 #2
0
ファイル: test_activate.py プロジェクト: amfarrell/conda
def test_activate_help():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            {activate} {envs}/test1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source activate ENV" in stderr

            commands = (command_setup + """
            source {activate} --help
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source activate ENV" in stderr

            commands = (command_setup + """
            {deactivate}
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source deactivate" in stderr

            commands = (command_setup + """
            source {deactivate} --help
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert "Usage: source deactivate" in stderr
コード例 #3
0
ファイル: test_activate.py プロジェクト: ARF1/conda
def test_wrong_args():
    for shell in shells:
        with TemporaryDirectory(prefix="envs", dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (
                command_setup
                + """
            source {activate}
            printf $PATH
            """
            ).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == "Error: no environment provided.\n"

            commands = (
                command_setup
                + """
            source {activate} two args
            printf $PATH
            """
            ).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == "Error: did not expect more than one argument.\n"

            commands = (
                command_setup
                + """
            source {deactivate} test
            printf $PATH
            """
            ).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == "Error: too many arguments.\n"

            commands = (
                command_setup
                + """
            source {deactivate} {envs}/test
            printf $PATH
            """
            ).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == "Error: too many arguments.\n"
コード例 #4
0
def test_activate_test3():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test3
            printf $PATH
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(envs=envs)
コード例 #5
0
def test_deactivate():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {deactivate}
            printf $PATH
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: No environment to deactivate\n'
コード例 #6
0
def test_deactivate():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {deactivate}
            printf $PATH
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: No environment to deactivate\n'
コード例 #7
0
def test_activate_test1():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            printf $PATH
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == envs + "/test1/bin:" + PATH
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(envs=envs, syspath=syspath)
コード例 #8
0
def test_activate_test3():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test3
            printf $PATH
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(
                envs=envs)
コード例 #9
0
def test_activate_test1_deactivate():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(envs=envs)
コード例 #10
0
def test_wrong_args():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate}
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: no environment provided.\n'

            commands = (command_setup + """
            source {activate} two args
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: did not expect more than one argument.\n'

            commands = (command_setup + """
            source {deactivate} test
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: too many arguments.\n'

            commands = (command_setup + """
            source {deactivate} {envs}/test
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'Error: too many arguments.\n'
コード例 #11
0
def test_activate_test1():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            printf $PATH
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == envs + "/test1/bin:" + PATH
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(
                envs=envs, syspath=syspath)
コード例 #12
0
def test_activate_test1_deactivate():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf $PATH
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ROOTPATH
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(
                envs=envs)
コード例 #13
0
from conda.compat import TemporaryDirectory
from conda.config import root_dir, platform
from tests.helpers import run_in

# Only run these tests for commands that are installed.

if platform == 'win':
    skip_tests = True
    shells = []
else:

    shells = []
    for shell in ['bash', 'zsh']:
        try:
            stdout, stderr = run_in('echo', shell)
        except OSError:
            pass
        else:
            if not stderr:
                shells.append(shell)

        # activate and deactivate are no longer part conda, so we can't copy them
        # from the source tree.  They should normally be installed, so this pulls
        # them from the path.
        process = subprocess.Popen(['which', 'activate'],
                                   stdout=subprocess.PIPE)
        output = process.communicate()[0]
        activate_path = output.strip().decode('utf-8')
        deactivate_path = join(dirname(activate_path), 'deactivate')
コード例 #14
0
import os
from os.path import dirname, join
import shutil
import stat
import subprocess

from conda.compat import TemporaryDirectory
from conda.config import root_dir, platform
from tests.helpers import run_in

# Only run these tests for commands that are installed.

shells = []
for shell in ['bash', 'zsh']:
    try:
        stdout, stderr = run_in('echo', shell)
    except OSError:
        pass
    else:
        if not stderr:
            shells.append(shell)

    # activate and deactivate are no longer part conda, so we can't copy them
    # from the source tree.  They should normally be installed, so this pulls
    # them from the path.
    process = subprocess.Popen(['which', 'activate'], stdout=subprocess.PIPE)
    output = process.communicate()[0]
    activate_path = output.strip().decode('utf-8')
    deactivate_path = join(dirname(activate_path), 'deactivate')

コード例 #15
0
def test_CONDA_DEFAULT_ENV():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test1'.format(envs=envs)
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(
                envs=envs, syspath=syspath)

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test2
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test2'.format(envs=envs)
            assert stderr == 'discarding {envs}/test1/bin from PATH\nprepending {envs}/test2/bin to PATH\n'.format(
                envs=envs)

            commands = (command_setup + """
            source {activate} {envs}/test3
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(
                envs=envs)

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test3
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test1'.format(envs=envs)
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(
                envs=envs)

            commands = (command_setup + """
            source {deactivate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: No environment to deactivate\n'

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(
                envs=envs)

            commands = (command_setup + """
            source {activate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: no environment provided.\n'

            commands = (command_setup + """
            source {activate} two args
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: did not expect more than one argument.\n'

            commands = (command_setup + """
            source {deactivate} test
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: too many arguments.\n'

            commands = (command_setup + """
            source {deactivate} {envs}/test
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: too many arguments.\n'
コード例 #16
0
def test_activate_symlinking():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert not stdout
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(envs=envs, syspath=syspath)
            for f in ['conda', 'activate', 'deactivate']:
                assert os.path.lexists('{envs}/test1/bin/{f}'.format(envs=envs, f=f))
                assert os.path.exists('{envs}/test1/bin/{f}'.format(envs=envs, f=f))
                s = os.lstat('{envs}/test1/bin/{f}'.format(envs=envs, f=f))
                assert stat.S_ISLNK(s.st_mode)
                assert os.readlink('{envs}/test1/bin/{f}'.format(envs=envs,
                    f=f)) == '{syspath}/{f}'.format(syspath=syspath, f=f)

            try:
                # Test activate when there are no write permissions in the
                # env. There are two cases:
                # - conda/deactivate/activate are already symlinked
                commands = (command_setup + """
                mkdir -p {envs}/test3/bin
                ln -s {activate} {envs}/test3/bin/activate
                ln -s {deactivate} {envs}/test3/bin/deactivate
                ln -s {conda} {envs}/test3/bin/conda
                chmod 555 {envs}/test3/bin
                source {activate} {envs}/test3
                """).format(envs=envs, activate=activate, deactivate=deactivate, conda=conda)
                stdout, stderr = run_in(commands, shell)
                assert not stdout
                assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test3/bin to PATH\n'.format(envs=envs, syspath=syspath)

                # Make sure it stays the same
                for f in ['conda', 'activate', 'deactivate']:
                    assert os.path.lexists('{envs}/test3/bin/{f}'.format(envs=envs, f=f))
                    assert os.path.exists('{envs}/test3/bin/{f}'.format(envs=envs, f=f))
                    s = os.lstat('{envs}/test3/bin/{f}'.format(envs=envs, f=f))
                    assert stat.S_ISLNK(s.st_mode)
                    assert os.readlink('{envs}/test3/bin/{f}'.format(envs=envs,
                        f=f)) == '{f}'.format(f=locals()[f])

                # - conda/deactivate/activate are not symlinked. In this case,
                # activate should fail
                commands = (command_setup + """
                mkdir -p {envs}/test4/bin
                chmod 555 {envs}/test4/bin
                source {activate} {envs}/test4
                echo $PATH
                echo $CONDA_DEFAULT_ENV
                """).format(envs=envs, activate=activate, deactivate=deactivate, conda=conda)

                stdout, stderr = run_in(commands, shell)
                assert stdout == (
                    '{ROOTPATH}\n' # PATH
                    '\n'           # CONDA_DEFAULT_ENV
                    ).format(ROOTPATH=ROOTPATH)
                assert stderr == ('Cannot activate environment {envs}/test4, '
                'do not have write access to write conda symlink\n').format(envs=envs)

            finally:
                # Change the permissions back so that we can delete the directory
                run_in('chmod 777 {envs}/test3/bin'.format(envs=envs), shell)
                run_in('chmod 777 {envs}/test4/bin'.format(envs=envs), shell)
コード例 #17
0
def test_CONDA_DEFAULT_ENV():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test1'.format(envs=envs)
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(envs=envs, syspath=syspath)

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test2
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test2'.format(envs=envs)
            assert stderr == 'discarding {envs}/test1/bin from PATH\nprepending {envs}/test2/bin to PATH\n'.format(envs=envs)

            commands = (command_setup + """
            source {activate} {envs}/test3
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(envs=envs)

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test3
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '{envs}/test1'.format(envs=envs)
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(envs=envs)

            commands = (command_setup + """
            source {deactivate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: No environment to deactivate\n'

            commands = (command_setup + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(envs=envs)

            commands = (command_setup + """
            source {activate}
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: no environment provided.\n'

            commands = (command_setup + """
            source {activate} two args
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: did not expect more than one argument.\n'

            commands = (command_setup + """
            source {deactivate} test
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: too many arguments.\n'

            commands = (command_setup + """
            source {deactivate} {envs}/test
            printf "$CONDA_DEFAULT_ENV"
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == ''
            assert stderr == 'Error: too many arguments.\n'
コード例 #18
0
def test_PS1_no_changeps1():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            with open(join(envs, '.condarc'), 'w') as f:
                f.write("""\
changeps1: no
""")
            condarc = """
            CONDARC="{envs}/.condarc"
            """
            commands = (command_setup + condarc + """
            source {activate} {envs}/test1
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(envs=envs, syspath=syspath)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test2
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {envs}/test1/bin from PATH\nprepending {envs}/test2/bin to PATH\n'.format(envs=envs)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test3
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(envs=envs)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test3
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(envs=envs)

            commands = (command_setup + condarc + """
            source {deactivate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: No environment to deactivate\n'

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(envs=envs)

            commands = (command_setup + condarc + """
            source {activate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no environment provided.\n'

            commands = (command_setup + condarc + """
            source {activate} two args
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: did not expect more than one argument.\n'

            commands = (command_setup + condarc + """
            source {deactivate} test
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: too many arguments.\n'

            commands = (command_setup + condarc + """
            source {deactivate} {envs}/test
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: too many arguments.\n'
コード例 #19
0
def test_activate_symlinking():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            commands = (command_setup + """
            source {activate} {envs}/test1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert not stdout
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(
                envs=envs, syspath=syspath)
            for f in ['conda', 'activate', 'deactivate']:
                assert os.path.lexists('{envs}/test1/bin/{f}'.format(envs=envs,
                                                                     f=f))
                assert os.path.exists('{envs}/test1/bin/{f}'.format(envs=envs,
                                                                    f=f))
                s = os.lstat('{envs}/test1/bin/{f}'.format(envs=envs, f=f))
                assert stat.S_ISLNK(s.st_mode)
                assert os.readlink('{envs}/test1/bin/{f}'.format(
                    envs=envs, f=f)) == '{syspath}/{f}'.format(syspath=syspath,
                                                               f=f)

            try:
                # Test activate when there are no write permissions in the
                # env. There are two cases:
                # - conda/deactivate/activate are already symlinked
                commands = (command_setup + """
                mkdir -p {envs}/test3/bin
                ln -s {activate} {envs}/test3/bin/activate
                ln -s {deactivate} {envs}/test3/bin/deactivate
                ln -s {conda} {envs}/test3/bin/conda
                chmod 555 {envs}/test3/bin
                source {activate} {envs}/test3
                """).format(envs=envs,
                            activate=activate,
                            deactivate=deactivate,
                            conda=conda)
                stdout, stderr = run_in(commands, shell)
                assert not stdout
                assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test3/bin to PATH\n'.format(
                    envs=envs, syspath=syspath)

                # Make sure it stays the same
                for f in ['conda', 'activate', 'deactivate']:
                    assert os.path.lexists('{envs}/test3/bin/{f}'.format(
                        envs=envs, f=f))
                    assert os.path.exists('{envs}/test3/bin/{f}'.format(
                        envs=envs, f=f))
                    s = os.lstat('{envs}/test3/bin/{f}'.format(envs=envs, f=f))
                    assert stat.S_ISLNK(s.st_mode)
                    assert os.readlink('{envs}/test3/bin/{f}'.format(
                        envs=envs, f=f)) == '{f}'.format(f=locals()[f])

                # - conda/deactivate/activate are not symlinked. In this case,
                # activate should fail
                commands = (command_setup + """
                mkdir -p {envs}/test4/bin
                chmod 555 {envs}/test4/bin
                source {activate} {envs}/test4
                echo $PATH
                echo $CONDA_DEFAULT_ENV
                """).format(envs=envs,
                            activate=activate,
                            deactivate=deactivate,
                            conda=conda)

                stdout, stderr = run_in(commands, shell)
                assert stdout == (
                    '{ROOTPATH}\n'  # PATH
                    '\n'  # CONDA_DEFAULT_ENV
                ).format(ROOTPATH=ROOTPATH)
                assert stderr == (
                    'Cannot activate environment {envs}/test4, '
                    'do not have write access to write conda symlink\n'
                ).format(envs=envs)

            finally:
                # Change the permissions back so that we can delete the directory
                run_in('chmod 777 {envs}/test3/bin'.format(envs=envs), shell)
                run_in('chmod 777 {envs}/test4/bin'.format(envs=envs), shell)
コード例 #20
0
def test_PS1_no_changeps1():
    for shell in shells:
        with TemporaryDirectory(prefix='envs', dir=dirname(__file__)) as envs:
            activate, deactivate, conda = _write_entry_points(envs)
            with open(join(envs, '.condarc'), 'w') as f:
                f.write("""\
changeps1: no
""")
            condarc = """
            CONDARC="{envs}/.condarc"
            """
            commands = (command_setup + condarc + """
            source {activate} {envs}/test1
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {syspath} from PATH\nprepending {envs}/test1/bin to PATH\n'.format(
                envs=envs, syspath=syspath)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test2
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {envs}/test1/bin from PATH\nprepending {envs}/test2/bin to PATH\n'.format(
                envs=envs)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test3
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(
                envs=envs)

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {activate} {envs}/test3
            printf $PS1
            """).format(envs=envs, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no such directory: {envs}/test3/bin\n'.format(
                envs=envs)

            commands = (command_setup + condarc + """
            source {deactivate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: No environment to deactivate\n'

            commands = (command_setup + condarc + """
            source {activate} {envs}/test1 2> /dev/null
            source {deactivate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'discarding {envs}/test1/bin from PATH\n'.format(
                envs=envs)

            commands = (command_setup + condarc + """
            source {activate}
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: no environment provided.\n'

            commands = (command_setup + condarc + """
            source {activate} two args
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: did not expect more than one argument.\n'

            commands = (command_setup + condarc + """
            source {deactivate} test
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: too many arguments.\n'

            commands = (command_setup + condarc + """
            source {deactivate} {envs}/test
            printf $PS1
            """).format(envs=envs, deactivate=deactivate, activate=activate)

            stdout, stderr = run_in(commands, shell)
            assert stdout == '$'
            assert stderr == 'Error: too many arguments.\n'
コード例 #21
0
ファイル: test_activate.py プロジェクト: ARF1/conda
from conda.compat import TemporaryDirectory
from conda.config import root_dir, platform
from tests.helpers import run_in

# Only run these tests for commands that are installed.


if platform == "win":
    skip_tests = True
    shells = []
else:

    shells = []
    for shell in ["bash", "zsh"]:
        try:
            stdout, stderr = run_in("echo", shell)
        except OSError:
            pass
        else:
            if not stderr:
                shells.append(shell)

        # activate and deactivate are no longer part conda, so we can't copy them
        # from the source tree.  They should normally be installed, so this pulls
        # them from the path.
        process = subprocess.Popen(["which", "activate"], stdout=subprocess.PIPE)
        output = process.communicate()[0]
        activate_path = output.strip().decode("utf-8")
        deactivate_path = join(dirname(activate_path), "deactivate")