Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pytest is deleting ansible collection when testing for molecule #267

Open
ABHISHEK-SINHA10 opened this issue Feb 2, 2024 · 0 comments
Open

Comments

@ABHISHEK-SINHA10
Copy link

Hi Team,

Command: pytest -vvv --molecule -k "idrac_gather_facts" --inventory /root/inventory.ini

Whenever I'm trying to run the above command, my whole collection getting deleted.

ENV:
ansible [core 2.16.0]
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /root/omamEnv3.11/lib64/python3.11/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /root/omamEnv3.11/bin/ansible
python version = 3.11.5 (main, Sep 7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/root/omamEnv3.11/bin/python3.11)
jinja version = 3.1.2
libyaml = True

Attaching screenshot below.

image


self = <Popen: returncode: 255 args: ['/root/omamEnv3.11/bin/python3.11', '-m', 'mo...>
args = ['/root/omamEnv3.11/bin/python3.11', '-m', 'molecule', 'test', '-s', 'virtualdisk']
executable = b'/root/omamEnv3.11/bin/python3.11', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = PosixPath('/root/collections/ansible_collections/dellemc/openmanage/roles/idrac_gather_facts'), env = None
startupinfo = None, creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11, c2pwrite = 12, errread = -1
errwrite = 12, restore_signals = True, gid = None, gids = None, uid = None, umask = -1, start_new_session = False
process_group = -1

def _execute_child(self, args, executable, preexec_fn, close_fds,
                   pass_fds, cwd, env,
                   startupinfo, creationflags, shell,
                   p2cread, p2cwrite,
                   c2pread, c2pwrite,
                   errread, errwrite,
                   restore_signals,
                   gid, gids, uid, umask,
                   start_new_session, process_group):
    """Execute program (POSIX version)"""

    if isinstance(args, (str, bytes)):
        args = [args]
    elif isinstance(args, os.PathLike):
        if shell:
            raise TypeError('path-like args is not allowed when '
                            'shell is true')
        args = [args]
    else:
        args = list(args)

    if shell:
        # On Android the default shell is at '/system/bin/sh'.
        unix_shell = ('/system/bin/sh' if
                  hasattr(sys, 'getandroidapilevel') else '/bin/sh')
        args = [unix_shell, "-c"] + args
        if executable:
            args[0] = executable

    if executable is None:
        executable = args[0]

    sys.audit("subprocess.Popen", executable, args, cwd, env)

    if (_USE_POSIX_SPAWN
            and os.path.dirname(executable)
            and preexec_fn is None
            and not close_fds
            and not pass_fds
            and cwd is None
            and (p2cread == -1 or p2cread > 2)
            and (c2pwrite == -1 or c2pwrite > 2)
            and (errwrite == -1 or errwrite > 2)
            and not start_new_session
            and process_group == -1
            and gid is None
            and gids is None
            and uid is None
            and umask < 0):
        self._posix_spawn(args, executable, env, restore_signals,
                          p2cread, p2cwrite,
                          c2pread, c2pwrite,
                          errread, errwrite)
        return

    orig_executable = executable

    # For transferring possible exec failure from child to parent.
    # Data format: "exception name:hex errno:description"
    # Pickle is not used; it is complex and involves memory allocation.
    errpipe_read, errpipe_write = os.pipe()
    # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
    low_fds_to_close = []
    while errpipe_write < 3:
        low_fds_to_close.append(errpipe_write)
        errpipe_write = os.dup(errpipe_write)
    for low_fd in low_fds_to_close:
        os.close(low_fd)
    try:
        try:
            # We must avoid complex work that could involve
            # malloc or free in the child process to avoid
            # potential deadlocks, thus we do all this here.
            # and pass it to fork_exec()

            if env is not None:
                env_list = []
                for k, v in env.items():
                    k = os.fsencode(k)
                    if b'=' in k:
                        raise ValueError("illegal environment variable name")
                    env_list.append(k + b'=' + os.fsencode(v))
            else:
                env_list = None  # Use execv instead of execve.
            executable = os.fsencode(executable)
            if os.path.dirname(executable):
                executable_list = (executable,)
            else:
                # This matches the behavior of os._execvpe().
                executable_list = tuple(
                    os.path.join(os.fsencode(dir), executable)
                    for dir in os.get_exec_path(env))
            fds_to_keep = set(pass_fds)
            fds_to_keep.add(errpipe_write)
            self.pid = _fork_exec(
                    args, executable_list,
                    close_fds, tuple(sorted(map(int, fds_to_keep))),
                    cwd, env_list,
                    p2cread, p2cwrite, c2pread, c2pwrite,
                    errread, errwrite,
                    errpipe_read, errpipe_write,
                    restore_signals, start_new_session,
                    process_group, gid, gids, uid, umask,
                    preexec_fn, _USE_VFORK)
            self._child_created = True
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_write)

        self._close_pipe_fds(p2cread, p2cwrite,
                             c2pread, c2pwrite,
                             errread, errwrite)

        # Wait for exec to fail or succeed; possibly raising an
        # exception (limited in size)
        errpipe_data = bytearray()
        while True:
            part = os.read(errpipe_read, 50000)
            errpipe_data += part
            if not part or len(errpipe_data) > 50000:
                break
    finally:
        # be sure the FD is closed no matter what
        os.close(errpipe_read)

    if errpipe_data:
        try:
            pid, sts = os.waitpid(self.pid, 0)
            if pid == self.pid:
                self._handle_exitstatus(sts)
            else:
                self.returncode = sys.maxsize
        except ChildProcessError:
            pass

        try:
            exception_name, hex_errno, err_msg = (
                    errpipe_data.split(b':', 2))
            # The encoding here should match the encoding
            # written in by the subprocess implementations
            # like _posixsubprocess
            err_msg = err_msg.decode()
        except ValueError:
            exception_name = b'SubprocessError'
            hex_errno = b'0'
            err_msg = 'Bad exception data from child: {!r}'.format(
                          bytes(errpipe_data))
        child_exception_type = getattr(
                builtins, exception_name.decode('ascii'),
                SubprocessError)
        if issubclass(child_exception_type, OSError) and hex_errno:
            errno_num = int(hex_errno, 16)
            child_exec_never_called = (err_msg == "noexec")
            if child_exec_never_called:
                err_msg = ""
                # The error must be from chdir(cwd).
                err_filename = cwd
            else:
                err_filename = orig_executable
            if errno_num != 0:
                err_msg = os.strerror(errno_num)
          raise child_exception_type(errno_num, err_msg, err_filename)

E FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/roles/idrac_gather_facts')

/usr/lib64/python3.11/subprocess.py:1950: FileNotFoundError
======================================================= warnings summary ========================================================
../../../../omamEnv3.11/lib64/python3.11/site-packages/_pytest/nodes.py:356
/root/omamEnv3.11/lib64/python3.11/site-packages/pytest/nodes.py:356: PytestUnknownMarkWarning: Unknown pytest.mark.podman - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
marker
= getattr(MARK_GEN, marker)

../../../../omamEnv3.11/lib64/python3.11/site-packages/_pytest/nodes.py:356
/root/omamEnv3.11/lib64/python3.11/site-packages/pytest/nodes.py:356: PytestUnknownMarkWarning: Unknown pytest.mark.molecule - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
marker
= getattr(MARK_GEN, marker)

../../../../omamEnv3.11/lib64/python3.11/site-packages/_pytest/nodes.py:356
/root/omamEnv3.11/lib64/python3.11/site-packages/pytest/nodes.py:356: PytestUnknownMarkWarning: Unknown pytest.mark.no_driver - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
marker
= getattr(MARK_GEN, marker)

../../../../omamEnv3.11/lib64/python3.11/site-packages/omsdk/sdkinfra.py:24
/root/omamEnv3.11/lib64/python3.11/site-packages/omsdk/sdkinfra.py:24: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
import imp

../../../../omamEnv3.11/lib64/python3.11/site-packages/pysnmp/carrier/asyncore/base.py:9
/root/omamEnv3.11/lib64/python3.11/site-packages/pysnmp/carrier/asyncore/base.py:9: DeprecationWarning: The asyncore module is deprecated and will be removed in Python 3.12. The recommended replacement is asyncio
import asyncore

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================================== short test summary info ====================================================
FAILED roles/idrac_gather_facts/molecule/backplane/molecule.yml::test43 - Failed: Error code 1 returned by: /root/omamEnv3.11/bin/python3.11 -m molecule test -s backplane
FAILED roles/idrac_gather_facts/molecule/bios/molecule.yml::test44 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/controller/molecule.yml::test45 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/cpu/molecule.yml::test46 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/default/molecule.yml::test47 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/enclosure/molecule.yml::test48 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/enclosureemm/molecule.yml::test49 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/fan/molecule.yml::test50 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/firmware/molecule.yml::test51 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/hostnic/molecule.yml::test52 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/idrac/molecule.yml::test53 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/license/molecule.yml::test54 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/memory/molecule.yml::test55 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/negative/molecule.yml::test56 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/nic/molecule.yml::test57 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/passensor/molecule.yml::test58 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/pciedevice/molecule.yml::test59 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/physicaldisk/molecule.yml::test60 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/powersupply/molecule.yml::test61 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/secureboot/molecule.yml::test62 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/sensorsbattery/molecule.yml::test63 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/sensorsintrusion/molecule.yml::test64 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/sensorsvoltage/molecule.yml::test65 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/systemmetrics/molecule.yml::test66 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
FAILED roles/idrac_gather_facts/molecule/virtualdisk/molecule.yml::test67 - FileNotFoundError: [Errno 2] No such file or directory: PosixPath('/root/collections/ansible_collections/dellemc/openmanage/...
======================================= 25 failed, 2691 deselected, 5 warnings in 27.26s ========================================

Am I doing something wrong here ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

1 participant