mirror of
				https://salsa.debian.org/freeipa-team/freeipa.git
				synced 2025-02-25 18:55:28 -06:00 
			
		
		
		
	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>
			
			
This commit is contained in:
		
				
					committed by
					
						 Rob Crittenden
						Rob Crittenden
					
				
			
			
				
	
			
			
			
						parent
						
							6a9c20a87c
						
					
				
				
					commit
					5263c36c1b
				
			| @@ -106,7 +106,8 @@ class TempDir: | |||||||
|  |  | ||||||
|     def __get_path(self): |     def __get_path(self): | ||||||
|         assert path.abspath(self.__path) == self.__path |         assert path.abspath(self.__path) == self.__path | ||||||
|         assert self.__path.startswith('/tmp/ipa.tests.') |         assert self.__path.startswith(path.join(tempfile.gettempdir(), | ||||||
|  |                                                 'ipa.tests.')) | ||||||
|         assert path.isdir(self.__path) and not path.islink(self.__path) |         assert path.isdir(self.__path) and not path.islink(self.__path) | ||||||
|         return self.__path |         return self.__path | ||||||
|     path = property(__get_path) |     path = property(__get_path) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user