def test_envs(): with temp_chdir(): runner = CliRunner() env_name1, env_name2 = get_new_venv_name(count=2) venv_dir1 = os.path.join(VENV_DIR, env_name1) venv_dir2 = os.path.join(VENV_DIR, env_name2) create_venv(venv_dir1) try: result = runner.invoke(hatch, [ 'init', '-ne', '--basic', 'ok', '-e', '{}/{}'.format( env_name1, env_name2) ]) wait_until(is_venv, venv_dir2) with venv(venv_dir1): assert 'ok' in get_editable_packages() with venv(venv_dir2): assert 'ok' in get_editable_packages() finally: remove_path(venv_dir1) remove_path(venv_dir2) assert result.exit_code == 0 assert 'Creating virtual env `{}`... complete!'.format( env_name1) not in result.output assert 'Creating virtual env `{}`... complete!'.format( env_name2) in result.output assert 'Installing locally in virtual env `{}`... complete!'.format( env_name1) in result.output assert 'Installing locally in virtual env `{}`... complete!'.format( env_name2) in result.output
def test_package(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--cli', '-ne']) package_dir = os.path.join(d, 'ok') files = find_all_files(package_dir) test_file = os.path.join(package_dir, 'test.pyc') create_file(test_file) assert os.path.exists(test_file) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): os.chdir(package_dir) install_packages(['-e', '.']) os.chdir(d) result = runner.invoke(hatch, ['clean', 'ok']) assert result.exit_code == 0 assert 'Cleaned!' in result.output assert not os.path.exists(test_file) assert os.path.exists(os.path.join(package_dir, 'ok.egg-info')) assert_files_exist(files)
def test_restore_success(): with temp_chdir() as d: runner = CliRunner() env_name, fake_name = get_new_venv_name(count=2) venv_origin = os.path.join(d, env_name) venv_dir = os.path.join(get_venv_dir(), env_name) fake_venv = os.path.join(get_venv_dir(), fake_name) create_venv(venv_origin) copy_path(venv_origin, get_venv_dir()) os.makedirs(fake_venv) try: runner.invoke(hatch, ['env', env_name]) wait_until(is_venv, venv_dir) result = runner.invoke(hatch, ['env', '-r']) with venv(venv_dir): install_packages(['six']) installed_packages = get_installed_packages() finally: remove_path(venv_dir) remove_path(fake_venv) assert result.exit_code == 0 assert 'Successfully restored all available virtual envs.' in result.output assert 'six' in installed_packages
def test_local_none(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): result = runner.invoke(hatch, ['install']) assert result.exit_code != 0
def test_package_not_exist(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): result = runner.invoke(hatch, ['build', 'ok']) assert result.exit_code == 1 assert '`{}` is not an editable package.'.format('ok') in result.output
def test_requirements_none(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): result = runner.invoke(hatch, ['uninstall', '-nd', '-y']) assert result.exit_code == 1 assert 'Unable to locate a requirements file.' in result.output
def test_local_not_exist(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): result = runner.invoke(hatch, ['release', '-l']) assert result.exit_code == 1 assert 'There are no local packages available.' in result.output
def test_venv(): with temp_chdir() as d: d = os.path.join(d, 'test_env') create_venv(d) global_python = get_python_path() with venv(d): venv_python = get_python_path() assert global_python != venv_python assert global_python == get_python_path()
def test_package_not_exist(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir, evars=ENV_VARS): result = runner.invoke(hatch, ['release', PACKAGE_NAME, '-u', USERNAME, '-t']) assert result.exit_code == 1 assert '`{}` is not an editable package.'.format(PACKAGE_NAME) in result.output
def test_packages(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): assert 'six' not in get_installed_packages() result = runner.invoke(hatch, ['install', 'six']) assert 'six' in get_installed_packages() assert result.exit_code == 0
def test_get_editable_package_location(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'foo', '--basic', '-ne']) runner.invoke(hatch, ['new', 'bar', '--basic', '-ne']) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['-e', os.path.join(d, 'foo')]) install_packages(['-e', os.path.join(d, 'bar')]) assert get_editable_package_location('foo') == os.path.join(d, 'foo')
def test_local_editable(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['init', 'ok']) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): assert 'ok' not in get_editable_packages() result = runner.invoke(hatch, ['install', '-l']) assert 'ok' in get_editable_packages() assert result.exit_code == 0
def test_get_installed_packages_no_editable(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['init', 'ok', '--basic', '-ne']) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['six']) install_packages(['-e', '.']) packages = get_installed_packages(editable=False) assert 'six' in packages assert 'ok' not in packages
def test_infra(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['setuptools==36.0.1']) initial_version = get_version_as_bytes('setuptools') result = runner.invoke(hatch, ['update', '-nd', '--infra']) final_version = get_version_as_bytes('setuptools') assert result.exit_code == 0 assert initial_version < final_version
def test_all_packages_none(): with temp_chdir() as d: venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): runner = CliRunner() result = runner.invoke(hatch, ['update', '-nd', '--all']) if get_python_implementation() in {'PyPy'}: # no cov assert result.exit_code == 0 else: assert result.exit_code == 1 assert 'No packages installed.' in result.output
def test_all_packages(): with temp_chdir() as d: venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['requests==2.17.3']) initial_version = get_version_as_bytes('requests') runner = CliRunner() result = runner.invoke(hatch, ['update', '-nd', '--all']) final_version = get_version_as_bytes('requests') assert result.exit_code == 0 assert initial_version < final_version
def test_requirements(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with open(os.path.join(d, 'requirements.txt'), 'w') as f: f.write('six\n') with venv(venv_dir): runner.invoke(hatch, ['install', '-nd', 'six']) assert 'six' in get_installed_packages() result = runner.invoke(hatch, ['uninstall', '-nd', '-y']) assert 'six' not in get_installed_packages() assert result.exit_code == 0
def test_local(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', PACKAGE_NAME, '--basic', '-ne']) runner.invoke(hatch, ['build', '-p', PACKAGE_NAME]) package_dir = os.path.join(d, PACKAGE_NAME) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir, evars=ENV_VARS): install_packages(['-e', package_dir]) result = runner.invoke(hatch, ['release', '-l', '-u', USERNAME, '-t']) assert result.exit_code == 0
def test_repository_env_vars(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', PACKAGE_NAME, '--basic', '-ne']) runner.invoke(hatch, ['build', '-p', PACKAGE_NAME]) package_dir = os.path.join(d, PACKAGE_NAME) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) extra_env_vars = {'TWINE_REPOSITORY': TEST_REPOSITORY, 'TWINE_REPOSITORY_URL': TEST_REPOSITORY, **ENV_VARS} with venv(venv_dir, evars=extra_env_vars): install_packages(['-e', package_dir]) result = runner.invoke(hatch, ['release', '-l', '-u', USERNAME]) assert result.exit_code == 0
def test_packages(): with temp_chdir() as d: runner = CliRunner() venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['requests==2.17.3', 'six==1.9.0']) initial_version_requests = get_version_as_bytes('requests') initial_version_six = get_version_as_bytes('six') result = runner.invoke(hatch, ['update', 'six']) final_version_requests = get_version_as_bytes('requests') final_version_six = get_version_as_bytes('six') assert result.exit_code == 0 assert initial_version_requests == final_version_requests assert initial_version_six < final_version_six
def test_requirements_dev(): with temp_chdir() as d: with open(os.path.join(d, 'requirements-dev.txt'), 'w') as f: f.write('requests==2.18.1\n') venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['requests==2.17.3']) initial_version = get_version_as_bytes('requests') runner = CliRunner() result = runner.invoke(hatch, ['update', '-nd']) final_version = get_version_as_bytes('requests') assert result.exit_code == 0 assert initial_version < final_version
def test_local(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--basic', '-ne']) package_dir = os.path.join(d, 'ok') create_test_passing(package_dir) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['-e', package_dir]) result = runner.invoke(hatch, ['test', '-nd', '-l', '-g']) assert result.exit_code == 0 assert 'Package `ok` has been selected.' in result.output assert '1 passed' in result.output
def test_env(): with temp_chdir(): runner = CliRunner() env_name = get_new_venv_name() venv_dir = os.path.join(VENV_DIR, env_name) create_venv(venv_dir) try: with venv(venv_dir): assert 'six' not in get_installed_packages() result = runner.invoke(hatch, ['install', '-e', env_name, 'six']) with venv(venv_dir): assert 'six' in get_installed_packages() finally: remove_path(venv_dir) assert result.exit_code == 0
def test_local_multiple(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--basic', '-ne']) runner.invoke(hatch, ['new', 'ko', '--basic', '-ne']) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['-e', os.path.join(d, 'ok')]) install_packages(['-e', os.path.join(d, 'ko')]) result = runner.invoke(hatch, ['clean', '-l']) assert result.exit_code == 1 assert ('There are multiple local packages available. ' 'Select one with the optional argument.') in result.output
def test_repository_local(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', PACKAGE_NAME, '--basic', '-ne']) runner.invoke(hatch, ['build', '-p', PACKAGE_NAME]) package_dir = os.path.join(d, PACKAGE_NAME) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) # Make sure there's no configuration with temp_move_path(os.path.expanduser("~/.pypirc"), d): with venv(venv_dir, evars=ENV_VARS): install_packages(['-e', package_dir]) # Will error, since there's no configuration parameter for # this URL result = runner.invoke(hatch, ['release', '-l', '-u', USERNAME, '-r', TEST_REPOSITORY]) assert result.exit_code == 1
def test_requirements_includes_hatch(): with temp_chdir() as d: runner = CliRunner() with open(os.path.join(d, 'requirements.txt'), 'w') as f: f.write('requests==2.18.1\nhatch>=0.0.1\n') venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['requests==2.17.3']) initial_version = get_version_as_bytes('requests') result = runner.invoke(hatch, ['update']) final_version = get_version_as_bytes('requests') installed_packages = get_installed_packages() assert result.exit_code == 0 assert initial_version < final_version assert 'hatch' not in installed_packages
def test_package(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--basic', '-ne']) package_dir = os.path.join(d, 'ok') create_test_passing(package_dir) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): os.chdir(package_dir) install_packages(['-e', '.']) os.chdir(d) result = runner.invoke(hatch, ['test', '-nd', 'ok', '-g']) assert result.exit_code == 0 assert '1 passed' in result.output
def test_env(): with temp_chdir(): runner = CliRunner() env_name = get_new_venv_name() venv_dir = os.path.join(VENV_DIR, env_name) create_venv(venv_dir) try: with venv(venv_dir): install_packages(['requests==2.17.3']) initial_version = get_version_as_bytes('requests') result = runner.invoke(hatch, ['update', '-e', env_name, '--all']) with venv(venv_dir): final_version = get_version_as_bytes('requests') finally: remove_path(venv_dir) assert result.exit_code == 0 assert initial_version < final_version
def test_local(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--basic', '-ne']) venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): install_packages(['-e', os.path.join(d, 'ok')]) result = runner.invoke(hatch, ['grow', 'fix', '-l']) init_file = os.path.join(d, 'ok', 'ok', '__init__.py') contents = read_file(init_file) assert result.exit_code == 0 assert contents == "__version__ = '0.0.2'\n" assert 'Package `ok` has been selected.' in result.output assert 'Updated {}'.format(init_file) in result.output assert '0.0.1 -> 0.0.2' in result.output
def test_package(): with temp_chdir() as d: runner = CliRunner() runner.invoke(hatch, ['new', 'ok', '--basic']) package_dir = os.path.join(d, 'ok') venv_dir = os.path.join(d, 'venv') create_venv(venv_dir) with venv(venv_dir): os.chdir(package_dir) install_packages(['-e', '.']) os.chdir(d) result = runner.invoke(hatch, ['build', 'ok']) files = os.listdir(os.path.join(package_dir, 'dist')) assert result.exit_code == 0 assert matching_file(r'.*\.whl$', files) assert len(files) == 2