diff --git a/src/test/RUNTESTLIB.PS1 b/src/test/RUNTESTLIB.PS1 index 5189cabbf6e358aee5878dc96e91fe2824356dde..72687990d815237350b5b5f145630c94f5750d0a 100644 --- a/src/test/RUNTESTLIB.PS1 +++ b/src/test/RUNTESTLIB.PS1 @@ -365,32 +365,49 @@ if ($Env:NON_PMEM_FS_DIR -And (-Not (isDir($Env:NON_PMEM_FS_DIR)))) { throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR doesn't exist" } -$PMEMDETECT="..\x64\Debug\tests\pmemdetect.exe" +# run this code in the separate thread to not pollute PATH variable in user shell. +Start-Job -Name $name -Args $PSScriptRoot -ScriptBlock { + param ([string]$dir) + cd $dir + + # in script block there is no access to other functions + function isDir { + if (-Not $args[0]) { + return $false + } + return Test-Path $args[0] -PathType Container + } -if (-Not (Test-Path $PMEMDETECT)) { - $PMEMDETECT="..\x64\Release\tests\pmemdetect.exe" -} + $PMEMDETECT="..\x64\Debug\tests\pmemdetect.exe" -if (isDir($Env:PMEM_FS_DIR)) { - if ($Env:PMEM_FS_DIR_FORCE_PMEM -eq "1") { - # "0" means there is PMEM - $Local:PMEM_IS_PMEM = "0" + if (-Not (Test-Path $PMEMDETECT)) { + $PMEMDETECT="..\x64\Release\tests\pmemdetect.exe" + $Env:Path = "..\x64\Release\libs;" + $Env:Path } else { - &$PMEMDETECT $Env:PMEM_FS_DIR - $Local:PMEM_IS_PMEM = $Global:LASTEXITCODE + $Env:Path = "..\x64\Debug\libs;" + $Env:Path } - if ($Local:PMEM_IS_PMEM -ne "0") { - throw "error: PMEM_FS_DIR=$Env:PMEM_FS_DIR does not point to a PMEM device" - } -} -if (isDir($Env:NON_PMEM_FS_DIR)) { - &$PMEMDETECT $Env:NON_PMEM_FS_DIR - $Local:NON_PMEM_IS_PMEM = $Global:LASTEXITCODE + if (isDir($Env:PMEM_FS_DIR)) { + if ($Env:PMEM_FS_DIR_FORCE_PMEM -eq "1") { + # "0" means there is PMEM + $Local:PMEM_IS_PMEM = "0" + } else { + &$PMEMDETECT $Env:PMEM_FS_DIR + $Local:PMEM_IS_PMEM = $Global:LASTEXITCODE + } - if ($Local:NON_PMEM_IS_PMEM -eq "0") { - throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR does not point to a non-PMEM device" + if ($Local:PMEM_IS_PMEM -ne "0") { + throw "error: PMEM_FS_DIR=$Env:PMEM_FS_DIR does not point to a PMEM device" + } } -} + if (isDir($Env:NON_PMEM_FS_DIR)) { + &$PMEMDETECT $Env:NON_PMEM_FS_DIR + $Local:NON_PMEM_IS_PMEM = $Global:LASTEXITCODE + + if ($Local:NON_PMEM_IS_PMEM -eq "0") { + throw "error: NON_PMEM_FS_DIR=$Env:NON_PMEM_FS_DIR does not point to a non-PMEM device" + } + } +} | Receive-Job -Wait -AutoRemoveJob