SILENT KILLERPanel

Current Path: > > opt > cloudlinux > venv > lib64 > python3.11 > site-packages > setuptools > tests


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/tests

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
compat Directory - -
config Directory - -
indexes Directory - -
integration Directory - -
__init__.py File 335 bytes April 17 2025 13:10:58.
contexts.py File 3480 bytes April 17 2025 13:10:58.
environment.py File 3102 bytes April 17 2025 13:10:58.
fixtures.py File 5197 bytes April 17 2025 13:10:58.
mod_with_constant.py File 22 bytes April 17 2025 13:10:58.
namespaces.py File 2774 bytes April 17 2025 13:10:58.
script-with-bom.py File 18 bytes April 17 2025 13:10:58.
server.py File 2397 bytes April 17 2025 13:10:58.
test_archive_util.py File 845 bytes April 17 2025 13:10:58.
test_bdist_deprecations.py File 775 bytes April 17 2025 13:10:58.
test_bdist_egg.py File 1957 bytes April 17 2025 13:10:58.
test_bdist_wheel.py File 23083 bytes April 17 2025 13:10:58.
test_build.py File 798 bytes April 17 2025 13:10:58.
test_build_clib.py File 3123 bytes April 17 2025 13:10:58.
test_build_ext.py File 10099 bytes April 17 2025 13:10:58.
test_build_meta.py File 34118 bytes April 17 2025 13:10:58.
test_build_py.py File 14186 bytes April 17 2025 13:10:58.
test_config_discovery.py File 22580 bytes April 17 2025 13:10:58.
test_core_metadata.py File 20881 bytes April 17 2025 13:10:58.
test_depends.py File 424 bytes April 17 2025 13:10:58.
test_develop.py File 5142 bytes April 17 2025 13:10:58.
test_dist.py File 8901 bytes April 17 2025 13:10:58.
test_dist_info.py File 7077 bytes April 17 2025 13:10:58.
test_distutils_adoption.py File 5987 bytes April 17 2025 13:10:58.
test_easy_install.py File 53534 bytes April 17 2025 13:10:58.
test_editable_install.py File 43383 bytes April 17 2025 13:10:58.
test_egg_info.py File 44866 bytes April 17 2025 13:10:58.
test_extern.py File 296 bytes April 17 2025 13:10:58.
test_find_packages.py File 7819 bytes April 17 2025 13:10:58.
test_find_py_modules.py File 2404 bytes April 17 2025 13:10:58.
test_glob.py File 887 bytes April 17 2025 13:10:58.
test_install_scripts.py File 3433 bytes April 17 2025 13:10:58.
test_logging.py File 2099 bytes April 17 2025 13:10:58.
test_manifest.py File 18562 bytes April 17 2025 13:10:58.
test_namespaces.py File 4515 bytes April 17 2025 13:10:58.
test_packageindex.py File 8775 bytes April 17 2025 13:10:58.
test_sandbox.py File 4330 bytes April 17 2025 13:10:58.
test_sdist.py File 32872 bytes April 17 2025 13:10:58.
test_setopt.py File 1365 bytes April 17 2025 13:10:58.
test_setuptools.py File 9008 bytes April 17 2025 13:10:58.
test_shutil_wrapper.py File 641 bytes April 17 2025 13:10:58.
test_unicode_utils.py File 316 bytes April 17 2025 13:10:58.
test_virtualenv.py File 3730 bytes April 17 2025 13:10:58.
test_warnings.py File 3347 bytes April 17 2025 13:10:58.
test_wheel.py File 19370 bytes April 17 2025 13:10:58.
test_windows_wrappers.py File 7881 bytes April 17 2025 13:10:58.
text.py File 123 bytes April 17 2025 13:10:58.
textwrap.py File 98 bytes April 17 2025 13:10:58.

Reading File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/tests/test_windows_wrappers.py

"""
Python Script Wrapper for Windows
=================================

setuptools includes wrappers for Python scripts that allows them to be
executed like regular windows programs.  There are 2 wrappers, one
for command-line programs, cli.exe, and one for graphical programs,
gui.exe.  These programs are almost identical, function pretty much
the same way, and are generated from the same source file.  The
wrapper programs are used by copying them to the directory containing
the script they are to wrap and with the same name as the script they
are to wrap.
"""

import pathlib
import platform
import subprocess
import sys
import textwrap

import pytest

import pkg_resources
from setuptools.command.easy_install import nt_quote_arg

pytestmark = pytest.mark.skipif(sys.platform != 'win32', reason="Windows only")


class WrapperTester:
    @classmethod
    def prep_script(cls, template):
        python_exe = nt_quote_arg(sys.executable)
        return template % locals()

    @classmethod
    def create_script(cls, tmpdir):
        """
        Create a simple script, foo-script.py

        Note that the script starts with a Unix-style '#!' line saying which
        Python executable to run.  The wrapper will use this line to find the
        correct Python executable.
        """

        script = cls.prep_script(cls.script_tmpl)

        with (tmpdir / cls.script_name).open('w') as f:
            f.write(script)

        # also copy cli.exe to the sample directory
        with (tmpdir / cls.wrapper_name).open('wb') as f:
            w = pkg_resources.resource_string('setuptools', cls.wrapper_source)
            f.write(w)


def win_launcher_exe(prefix):
    """A simple routine to select launcher script based on platform."""
    assert prefix in ('cli', 'gui')
    if platform.machine() == "ARM64":
        return f"{prefix}-arm64.exe"
    else:
        return f"{prefix}-32.exe"


class TestCLI(WrapperTester):
    script_name = 'foo-script.py'
    wrapper_name = 'foo.exe'
    wrapper_source = win_launcher_exe('cli')

    script_tmpl = textwrap.dedent(
        """
        #!%(python_exe)s
        import sys
        input = repr(sys.stdin.read())
        print(sys.argv[0][-14:])
        print(sys.argv[1:])
        print(input)
        if __debug__:
            print('non-optimized')
        """
    ).lstrip()

    def test_basic(self, tmpdir):
        """
        When the copy of cli.exe, foo.exe in this example, runs, it examines
        the path name it was run with and computes a Python script path name
        by removing the '.exe' suffix and adding the '-script.py' suffix. (For
        GUI programs, the suffix '-script.pyw' is added.)  This is why we
        named out script the way we did.  Now we can run out script by running
        the wrapper:

        This example was a little pathological in that it exercised windows
        (MS C runtime) quoting rules:

        - Strings containing spaces are surrounded by double quotes.

        - Double quotes in strings need to be escaped by preceding them with
          back slashes.

        - One or more backslashes preceding double quotes need to be escaped
          by preceding each of them with back slashes.
        """
        self.create_script(tmpdir)
        cmd = [
            str(tmpdir / 'foo.exe'),
            'arg1',
            'arg 2',
            'arg "2\\"',
            'arg 4\\',
            'arg5 a\\\\b',
        ]
        proc = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            text=True,
            encoding="utf-8",
        )
        stdout, _stderr = proc.communicate('hello\nworld\n')
        actual = stdout.replace('\r\n', '\n')
        expected = textwrap.dedent(
            r"""
            \foo-script.py
            ['arg1', 'arg 2', 'arg "2\\"', 'arg 4\\', 'arg5 a\\\\b']
            'hello\nworld\n'
            non-optimized
            """
        ).lstrip()
        assert actual == expected

    def test_symlink(self, tmpdir):
        """
        Ensure that symlink for the foo.exe is working correctly.
        """
        script_dir = tmpdir / "script_dir"
        script_dir.mkdir()
        self.create_script(script_dir)
        symlink = pathlib.Path(tmpdir / "foo.exe")
        symlink.symlink_to(script_dir / "foo.exe")

        cmd = [
            str(tmpdir / 'foo.exe'),
            'arg1',
            'arg 2',
            'arg "2\\"',
            'arg 4\\',
            'arg5 a\\\\b',
        ]
        proc = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            text=True,
            encoding="utf-8",
        )
        stdout, _stderr = proc.communicate('hello\nworld\n')
        actual = stdout.replace('\r\n', '\n')
        expected = textwrap.dedent(
            r"""
            \foo-script.py
            ['arg1', 'arg 2', 'arg "2\\"', 'arg 4\\', 'arg5 a\\\\b']
            'hello\nworld\n'
            non-optimized
            """
        ).lstrip()
        assert actual == expected

    def test_with_options(self, tmpdir):
        """
        Specifying Python Command-line Options
        --------------------------------------

        You can specify a single argument on the '#!' line.  This can be used
        to specify Python options like -O, to run in optimized mode or -i
        to start the interactive interpreter.  You can combine multiple
        options as usual. For example, to run in optimized mode and
        enter the interpreter after running the script, you could use -Oi:
        """
        self.create_script(tmpdir)
        tmpl = textwrap.dedent(
            """
            #!%(python_exe)s  -Oi
            import sys
            input = repr(sys.stdin.read())
            print(sys.argv[0][-14:])
            print(sys.argv[1:])
            print(input)
            if __debug__:
                print('non-optimized')
            sys.ps1 = '---'
            """
        ).lstrip()
        with (tmpdir / 'foo-script.py').open('w') as f:
            f.write(self.prep_script(tmpl))
        cmd = [str(tmpdir / 'foo.exe')]
        proc = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            text=True,
            encoding="utf-8",
        )
        stdout, _stderr = proc.communicate()
        actual = stdout.replace('\r\n', '\n')
        expected = textwrap.dedent(
            r"""
            \foo-script.py
            []
            ''
            ---
            """
        ).lstrip()
        assert actual == expected


class TestGUI(WrapperTester):
    """
    Testing the GUI Version
    -----------------------
    """

    script_name = 'bar-script.pyw'
    wrapper_source = win_launcher_exe('gui')
    wrapper_name = 'bar.exe'

    script_tmpl = textwrap.dedent(
        """
        #!%(python_exe)s
        import sys
        f = open(sys.argv[1], 'wb')
        bytes_written = f.write(repr(sys.argv[2]).encode('utf-8'))
        f.close()
        """
    ).strip()

    def test_basic(self, tmpdir):
        """Test the GUI version with the simple script, bar-script.py"""
        self.create_script(tmpdir)

        cmd = [
            str(tmpdir / 'bar.exe'),
            str(tmpdir / 'test_output.txt'),
            'Test Argument',
        ]
        proc = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            text=True,
            encoding="utf-8",
        )
        stdout, stderr = proc.communicate()
        assert not stdout
        assert not stderr
        with (tmpdir / 'test_output.txt').open('rb') as f_out:
            actual = f_out.read().decode('ascii')
        assert actual == repr('Test Argument')

SILENT KILLER Tool