def test_noarch_package(self): with make_temp_env("-c scastellarin flask") as prefix: py_ver = get_python_version_for_prefix(prefix) sp_dir = get_python_site_packages_short_path(py_ver) py_file = sp_dir + "/flask/__init__.py" pyc_file = pyc_path(py_file, py_ver) assert isfile(join(prefix, py_file)) assert isfile(join(prefix, pyc_file)) exe_path = join(prefix, get_bin_directory_short_path(), 'flask') if on_win: exe_path += ".exe" assert isfile(exe_path) run_command(Commands.REMOVE, prefix, "flask") assert not isfile(join(prefix, py_file)) assert not isfile(join(prefix, pyc_file)) assert not isfile(exe_path)
def test_noarch_python_package_with_entry_points(self): with make_temp_env("-c conda-test flask") as prefix: py_ver = get_python_version_for_prefix(prefix) sp_dir = get_python_site_packages_short_path(py_ver) py_file = sp_dir + "/flask/__init__.py" pyc_file = pyc_path(py_file, py_ver) assert isfile(join(prefix, py_file)) assert isfile(join(prefix, pyc_file)) exe_path = join(prefix, get_bin_directory_short_path(), 'flask') if on_win: exe_path += ".exe" assert isfile(exe_path) run_command(Commands.REMOVE, prefix, "flask") assert not isfile(join(prefix, py_file)) assert not isfile(join(prefix, pyc_file)) assert not isfile(exe_path)
def test_noarch_package(self): with make_temp_env("-c scastellarin flask") as prefix: py_ver = get_python_version_for_prefix(prefix) sp_dir = get_site_packages_dir(prefix) pyc_test_pair = missing_pyc_files(py_ver, ("%s/flask/__init__.py" % sp_dir,)) assert len(pyc_test_pair) == 1 assert pyc_test_pair[0][0] == "%s/flask/__init__.py" % sp_dir assert isfile(join(prefix, pyc_test_pair[0][0])) assert isfile(join(prefix, pyc_test_pair[0][1])) exe_path = join(prefix, get_bin_directory_short_path(), 'flask') if on_win: exe_path += ".exe" assert isfile(exe_path) run_command(Commands.REMOVE, prefix, "flask") assert not isfile(join(prefix, pyc_test_pair[0][0])) assert not isfile(join(prefix, pyc_test_pair[0][1])) assert not isfile(exe_path)
def test_noarch_package(self): with make_temp_env("-c scastellarin flask") as prefix: py_ver = get_python_version_for_prefix(prefix) sp_dir = get_site_packages_dir(prefix) pyc_test_pair = missing_pyc_files( py_ver, ("%s/flask/__init__.py" % sp_dir, )) assert len(pyc_test_pair) == 1 assert pyc_test_pair[0][0] == "%s/flask/__init__.py" % sp_dir assert isfile(join(prefix, pyc_test_pair[0][0])) assert isfile(join(prefix, pyc_test_pair[0][1])) exe_path = join(prefix, get_bin_directory_short_path(), 'flask') if on_win: exe_path += ".exe" assert isfile(exe_path) run_command(Commands.REMOVE, prefix, "flask") assert not isfile(join(prefix, pyc_test_pair[0][0])) assert not isfile(join(prefix, pyc_test_pair[0][1])) assert not isfile(exe_path)
def test_CreatePythonEntryPointAction_noarch_python(self): target_python_version = '%d.%d' % sys.version_info[:2] transaction_context = { 'target_python_version': target_python_version, } package_info = AttrDict(package_metadata=AttrDict(noarch=AttrDict( type=NoarchType.python, entry_points=( 'command1=some.module:main', 'command2=another.somewhere:go', ), ))) axns = CreatePythonEntryPointAction.create_actions(transaction_context, package_info, self.prefix, LinkType.hardlink) grouped_axns = groupby(lambda ax: isinstance(ax, LinkPathAction), axns) windows_exe_axns = grouped_axns.get(True, ()) assert len(windows_exe_axns) == (2 if on_win else 0) py_ep_axns = grouped_axns.get(False, ()) assert len(py_ep_axns) == 2 py_ep_axn = py_ep_axns[0] command, module, func = parse_entry_point_def('command1=some.module:main') assert command == 'command1' if on_win: target_short_path = "%s\\%s-script.py" % (get_bin_directory_short_path(), command) else: target_short_path = "%s/%s" % (get_bin_directory_short_path(), command) assert py_ep_axn.target_full_path == join(self.prefix, target_short_path) assert py_ep_axn.module == module == 'some.module' assert py_ep_axn.func == func == 'main' mkdir_p(dirname(py_ep_axn.target_full_path)) py_ep_axn.execute() assert isfile(py_ep_axn.target_full_path) if not on_win: assert is_executable(py_ep_axn.target_full_path) with open(py_ep_axn.target_full_path) as fh: lines = fh.readlines() first_line = lines[0].strip() last_line = lines[-1].strip() if not on_win: python_full_path = join(self.prefix, get_python_short_path(target_python_version)) assert first_line == "#!%s" % python_full_path assert last_line == "sys.exit(%s())" % func py_ep_axn.reverse() assert not isfile(py_ep_axn.target_full_path) if on_win: windows_exe_axn = windows_exe_axns[0] target_short_path = "%s\\%s.exe" % (get_bin_directory_short_path(), command) assert windows_exe_axn.target_full_path == join(self.prefix, target_short_path) mkdir_p(dirname(windows_exe_axn.target_full_path)) windows_exe_axn.verify() windows_exe_axn.execute() assert isfile(windows_exe_axn.target_full_path) assert is_executable(windows_exe_axn.target_full_path) src = compute_md5sum(join(context.conda_prefix, 'Scripts/conda.exe')) assert src == compute_md5sum(windows_exe_axn.target_full_path) windows_exe_axn.reverse() assert not isfile(windows_exe_axn.target_full_path)
def test_CreatePythonEntryPointAction_noarch_python(self): target_python_version = '%d.%d' % sys.version_info[:2] transaction_context = { 'target_python_version': target_python_version, } package_info = AttrDict(package_metadata=AttrDict(noarch=AttrDict( type=NoarchType.python, entry_points=( 'command1=some.module:main', 'command2=another.somewhere:go', ), ))) axns = CreatePythonEntryPointAction.create_actions( transaction_context, package_info, self.prefix, LinkType.hardlink) grouped_axns = groupby(lambda ax: isinstance(ax, LinkPathAction), axns) windows_exe_axns = grouped_axns.get(True, ()) assert len(windows_exe_axns) == (2 if on_win else 0) py_ep_axns = grouped_axns.get(False, ()) assert len(py_ep_axns) == 2 py_ep_axn = py_ep_axns[0] command, module, func = parse_entry_point_def( 'command1=some.module:main') assert command == 'command1' if on_win: target_short_path = "%s\\%s-script.py" % ( get_bin_directory_short_path(), command) else: target_short_path = "%s/%s" % (get_bin_directory_short_path(), command) assert py_ep_axn.target_full_path == join(self.prefix, target_short_path) assert py_ep_axn.module == module == 'some.module' assert py_ep_axn.func == func == 'main' mkdir_p(dirname(py_ep_axn.target_full_path)) py_ep_axn.execute() assert isfile(py_ep_axn.target_full_path) if not on_win: assert is_executable(py_ep_axn.target_full_path) with open(py_ep_axn.target_full_path) as fh: lines = fh.readlines() first_line = lines[0].strip() last_line = lines[-1].strip() if not on_win: python_full_path = join( self.prefix, get_python_short_path(target_python_version)) assert first_line == "#!%s" % python_full_path assert last_line == "sys.exit(%s())" % func py_ep_axn.reverse() assert not isfile(py_ep_axn.target_full_path) if on_win: windows_exe_axn = windows_exe_axns[0] target_short_path = "%s\\%s.exe" % (get_bin_directory_short_path(), command) assert windows_exe_axn.target_full_path == join( self.prefix, target_short_path) mkdir_p(dirname(windows_exe_axn.target_full_path)) windows_exe_axn.verify() windows_exe_axn.execute() assert isfile(windows_exe_axn.target_full_path) assert is_executable(windows_exe_axn.target_full_path) src = compute_md5sum( join(context.conda_prefix, 'Scripts/conda.exe')) assert src == compute_md5sum(windows_exe_axn.target_full_path) windows_exe_axn.reverse() assert not isfile(windows_exe_axn.target_full_path)