File: C:/Users/fred/anaconda3/Lib/site-packages/anaconda_project/test/test_api.py
# -*- coding: utf-8 -*-
# -----------------------------------------------------------------------------
# Copyright (c) 2016, Anaconda, Inc. All rights reserved.
#
# Licensed under the terms of the BSD 3-Clause License.
# The full license is in the file LICENSE.txt, distributed with this software.
# -----------------------------------------------------------------------------
from __future__ import absolute_import
import inspect
from anaconda_project import api
from anaconda_project import provide
from anaconda_project.internal.py2_compat import _PY2
if _PY2:
getargspec = inspect.getargspec
else:
# py3 has getargspec also, but it causes a deprecation
# warning, so use getfullargspec.
getargspec = inspect.getfullargspec
def _verify_args_match(function1, function2, ignored=('self', )):
f1spec = getargspec(function1)
f2spec = getargspec(function2)
args1 = list(f1spec.args)
args2 = list(f2spec.args)
for param in ignored:
if param in args1:
args1.remove(param)
if param in args2:
args2.remove(param)
assert args1 == args2
def test_create_project(monkeypatch):
params = dict(args=(), kwargs=dict())
def mock_create_project(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.create', mock_create_project)
p = api.AnacondaProject()
kwargs = dict(directory_path=1, make_directory=2, name='foo', icon='bar', description='blah')
result = p.create_project(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_load_project(monkeypatch):
from anaconda_project.project import Project
_verify_args_match(api.AnacondaProject.load_project,
Project.__init__,
ignored=['self', 'plugin_registry', 'must_exist', 'scan_parents'])
class MockProject(object):
def __init__(self, *args, **kwargs):
self.kwargs = kwargs
monkeypatch.setattr('anaconda_project.project.Project', MockProject)
p = api.AnacondaProject()
kwargs = dict(directory_path='foo', frontend=37)
project = p.load_project(**kwargs)
assert kwargs == project.kwargs
def _monkeypatch_prepare_without_interaction(monkeypatch):
params = dict(args=(), kwargs=dict())
def mock_prepare_without_interaction(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.prepare.prepare_without_interaction', mock_prepare_without_interaction)
return params
def _test_prepare_without_interaction(monkeypatch, api_method, provide_mode):
from anaconda_project.prepare import prepare_without_interaction
_verify_args_match(getattr(api.AnacondaProject, api_method),
prepare_without_interaction,
ignored=['self', 'mode', 'provide_whitelist', 'refresh'])
params = _monkeypatch_prepare_without_interaction(monkeypatch)
p = api.AnacondaProject()
kwargs = dict(project=43,
environ=57,
env_spec_name='someenv',
command_name='foo',
command=1234,
extra_command_args=['1', '2'])
result = getattr(p, api_method)(**kwargs)
assert 42 == result
assert params['kwargs']['mode'] == provide_mode
del params['kwargs']['mode']
assert kwargs == params['kwargs']
def test_prepare_project_locally(monkeypatch):
_test_prepare_without_interaction(monkeypatch, 'prepare_project_locally', provide.PROVIDE_MODE_DEVELOPMENT)
def test_prepare_project_production(monkeypatch):
_test_prepare_without_interaction(monkeypatch, 'prepare_project_production', provide.PROVIDE_MODE_PRODUCTION)
def test_prepare_project_check(monkeypatch):
_test_prepare_without_interaction(monkeypatch, 'prepare_project_check', provide.PROVIDE_MODE_CHECK)
def test_unprepare(monkeypatch):
from anaconda_project.prepare import unprepare
_verify_args_match(api.AnacondaProject.unprepare, unprepare)
params = dict(args=(), kwargs=dict())
def mock_unprepare(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.prepare.unprepare', mock_unprepare)
p = api.AnacondaProject()
kwargs = dict(project=43, prepare_result=44, whitelist=45)
result = p.unprepare(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_set_properties(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.set_properties, project_ops.set_properties)
params = dict(args=(), kwargs=dict())
def mock_set_properties(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.set_properties', mock_set_properties)
p = api.AnacondaProject()
kwargs = dict(project=43, name='foo', icon='bar', description='blah')
result = p.set_properties(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_variables(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_variables, project_ops.add_variables)
params = dict(args=(), kwargs=dict())
def mock_add_variables(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_variables', mock_add_variables)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='boo', vars_to_add=45, defaults=12345)
result = p.add_variables(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_variables(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_variables, project_ops.remove_variables)
params = dict(args=(), kwargs=dict())
def mock_remove_variables(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_variables', mock_remove_variables)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='boo', vars_to_remove=45, prepare_result=57)
result = p.remove_variables(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_set_variables(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.set_variables, project_ops.set_variables)
params = dict(args=(), kwargs=dict())
def mock_set_variables(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.set_variables', mock_set_variables)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='boo', vars_and_values=45, prepare_result=57)
result = p.set_variables(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_unset_variables(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.unset_variables, project_ops.unset_variables)
params = dict(args=(), kwargs=dict())
def mock_unset_variables(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.unset_variables', mock_unset_variables)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='boo', vars_to_unset=45, prepare_result=57)
result = p.unset_variables(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_download(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_download, project_ops.add_download)
params = dict(args=(), kwargs=dict())
def mock_add_download(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_download', mock_add_download)
p = api.AnacondaProject()
kwargs = dict(project=43,
env_spec_name="myenv",
env_var='boo',
url='baz',
filename="fname",
hash_algorithm="md5",
hash_value="foo")
result = p.add_download(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_download(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_download, project_ops.remove_download)
params = dict(args=(), kwargs=dict())
def mock_remove_download(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_download', mock_remove_download)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name="blah", prepare_result='winnebago', env_var='boo')
result = p.remove_download(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_env_spec(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_env_spec, project_ops.add_env_spec)
params = dict(args=(), kwargs=dict())
def mock_add_env_spec(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_env_spec', mock_add_env_spec)
p = api.AnacondaProject()
kwargs = dict(project=43, name='foo', packages=['a'], channels=['b'])
result = p.add_env_spec(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_env_spec(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_env_spec, project_ops.remove_env_spec)
params = dict(args=(), kwargs=dict())
def mock_remove_env_spec(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_env_spec', mock_remove_env_spec)
p = api.AnacondaProject()
kwargs = dict(project=43, name='foo')
result = p.remove_env_spec(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_export_env_spec(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.export_env_spec, project_ops.export_env_spec)
params = dict(args=(), kwargs=dict())
def mock_export_env_spec(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.export_env_spec', mock_export_env_spec)
p = api.AnacondaProject()
kwargs = dict(project=43, name='foo', filename='bar')
result = p.export_env_spec(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_packages(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_packages, project_ops.add_packages)
params = dict(args=(), kwargs=dict())
def mock_add_packages(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_packages', mock_add_packages)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='foo', packages=['a'], channels=['b'], pip=False)
result = p.add_packages(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_packages(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_packages, project_ops.remove_packages)
params = dict(args=(), kwargs=dict())
def mock_remove_packages(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_packages', mock_remove_packages)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='foo', packages=['a'], pip=None)
result = p.remove_packages(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_lock(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.lock, project_ops.lock)
params = dict(args=(), kwargs=dict())
def mock_lock(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.lock', mock_lock)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='foo')
result = p.lock(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_update(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.update, project_ops.update)
params = dict(args=(), kwargs=dict())
def mock_update(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.update', mock_update)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='foo')
result = p.update(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_unlock(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.unlock, project_ops.unlock)
params = dict(args=(), kwargs=dict())
def mock_unlock(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.unlock', mock_unlock)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='foo')
result = p.unlock(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_platforms(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_platforms, project_ops.add_platforms)
params = dict(args=(), kwargs=dict())
def mock_add_platforms(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_platforms', mock_add_platforms)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='name', platforms=[47])
result = p.add_platforms(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_platforms(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_platforms, project_ops.remove_platforms)
params = dict(args=(), kwargs=dict())
def mock_remove_platforms(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_platforms', mock_remove_platforms)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name='name', platforms=[47])
result = p.remove_platforms(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_command(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_command, project_ops.add_command)
params = dict(args=(), kwargs=dict())
def mock_add_command(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_command', mock_add_command)
p = api.AnacondaProject()
kwargs = dict(project=43,
command_type='bokeh_app',
name='name',
command='file.py',
env_spec_name='foo',
supports_http_options=True)
result = p.add_command(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_update_command(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.update_command, project_ops.update_command)
params = dict(args=(), kwargs=dict())
def mock_update_command(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.update_command', mock_update_command)
p = api.AnacondaProject()
kwargs = dict(project=43, command_type='bokeh_app', name='name', command='file.py', new_name='foo')
result = p.update_command(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_command(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_command, project_ops.remove_command)
params = dict(args=(), kwargs=dict())
def mock_remove_command(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_command', mock_remove_command)
p = api.AnacondaProject()
kwargs = dict(project=43, name='name')
result = p.remove_command(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_add_service(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.add_service, project_ops.add_service)
params = dict(args=(), kwargs=dict())
def mock_add_service(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.add_service', mock_add_service)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name="boo", service_type='abc', variable_name='xyz')
result = p.add_service(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_remove_service(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.remove_service, project_ops.remove_service)
params = dict(args=(), kwargs=dict())
def mock_remove_service(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.remove_service', mock_remove_service)
p = api.AnacondaProject()
kwargs = dict(project=43, env_spec_name=578, prepare_result=123, variable_name='xyz')
result = p.remove_service(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_clean(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.clean, project_ops.clean)
params = dict(args=(), kwargs=dict())
def mock_clean(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.clean', mock_clean)
p = api.AnacondaProject()
kwargs = dict(project=43, prepare_result=123)
result = p.clean(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_archive(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.archive, project_ops.archive)
params = dict(args=(), kwargs=dict())
def mock_archive(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.archive', mock_archive)
p = api.AnacondaProject()
kwargs = dict(project=43, filename=123, pack_envs=False)
result = p.archive(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_unarchive(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.unarchive, project_ops.unarchive)
params = dict(args=(), kwargs=dict())
def mock_unarchive(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.unarchive', mock_unarchive)
p = api.AnacondaProject()
kwargs = dict(filename=43, project_dir=123, parent_dir=456, frontend=789)
result = p.unarchive(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']
def test_upload(monkeypatch):
import anaconda_project.project_ops as project_ops
_verify_args_match(api.AnacondaProject.upload, project_ops.upload)
params = dict(args=(), kwargs=dict())
def mock_upload(*args, **kwargs):
params['args'] = args
params['kwargs'] = kwargs
return 42
monkeypatch.setattr('anaconda_project.project_ops.upload', mock_upload)
p = api.AnacondaProject()
kwargs = dict(project=43, private=True, site=123, token=456, username=789, suffix='.zip', log_level='LOTS')
result = p.upload(**kwargs)
assert 42 == result
assert kwargs == params['kwargs']