5263c36 Respect TMPDIR, TEMP or TMP environment variables during testing

1 file Authored by slev 4 years ago, Committed by rcritten 4 years ago,
    Respect TMPDIR, TEMP or TMP environment variables during testing
    
    The FreeIPA uses its own classes for managing temp files and
    directories for tests. One of its underlying low-level functions
    is `mkdtemp`.
    
    According to documentation for `mkdtemp`:
    ```
    If dir is not None, the file will be created in that directory; otherwise, a
    default directory is used. The default directory is chosen from a
    platform-dependent list, but the user of the application can control the
    directory location by setting the TMPDIR, TEMP or TMP environment variables.
    ```
    
    It's actually the truth,
    /usr/lib64/python3.7/tempfile.py:
    ```
    def _candidate_tempdir_list():
        """Generate a list of candidate temporary directories which
        _get_default_tempdir will try."""
    
        dirlist = []
    
        # First, try the environment.
        for envname in 'TMPDIR', 'TEMP', 'TMP':
            dirname = _os.getenv(envname)
            if dirname: dirlist.append(dirname)
    
        # Failing that, try OS-specific locations.
        if _os.name == 'nt':
            dirlist.extend([ _os.path.expanduser(r'~\AppData\Local\Temp'),
                             _os.path.expandvars(r'%SYSTEMROOT%\Temp'),
                             r'c:\temp', r'c:\tmp', r'\temp', r'\tmp' ])
        else:
            dirlist.extend([ '/tmp', '/var/tmp', '/usr/tmp' ])
    ```
    
    For now, there is a hardcoded assertion of a temp directory (`/tmp`) in
    IPA tests. But some systems use the mentioned environment variables
    (for example, pam_mktemp https://www.openhub.net/p/pam_mktemp).
    It's easy to check an actual temp dir via `gettempdir`.
    
    Fixes: https://pagure.io/freeipa/issue/7956
    Signed-off-by: Stanislav Levin <slev@altlinux.org>
    Reviewed-By: Christian Heimes <cheimes@redhat.com>
    
        
file modified
+2 -1