diff options
-rw-r--r-- | mesonbuild/dependencies/base.py | 5 | ||||
-rwxr-xr-x | run_unittests.py | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index d7fa532..d2d115e 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -1817,10 +1817,13 @@ class ExternalProgram: @staticmethod @functools.lru_cache(maxsize=None) def _windows_sanitize_path(path: str) -> str: + # Ensure that we use USERPROFILE even when inside MSYS, MSYS2, Cygwin, etc. + if 'USERPROFILE' not in os.environ: + return path # Ignore executables in the WindowsApps directory which are # zero-sized wrappers that magically open the Windows Store to # install the application. - appstore_dir = Path.home() / 'AppData' / 'Local' / 'Microsoft' / 'WindowsApps' + appstore_dir = Path(os.environ['USERPROFILE']) / 'AppData' / 'Local' / 'Microsoft' / 'WindowsApps' paths = [] for each in path.split(os.pathsep): if Path(each) != appstore_dir: diff --git a/run_unittests.py b/run_unittests.py index 898f05e..bd7266a 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -4542,6 +4542,14 @@ class WindowsTests(BasePlatformTests): self.assertTrue(prog.found(), msg='test-script-ext.py not found in PATH') self.assertPathEqual(prog.get_command()[0], python_command[0]) self.assertPathBasenameEqual(prog.get_path(), 'test-script-ext.py') + # Ensure that WindowsApps gets removed from PATH + path = os.environ['PATH'] + if 'WindowsApps' not in path: + username = os.environ['USERNAME'] + appstore_dir = r'C:\Users\{}\AppData\Local\Microsoft\WindowsApps'.format(username) + path = os.pathsep + appstore_dir + path = ExternalProgram._windows_sanitize_path(path) + self.assertNotIn('WindowsApps', path) def test_ignore_libs(self): ''' |