Перейти модульный тест запускается из%APPDATA%
Я пытаюсь запустить некоторые из моих модульных тестов Go, используя "go test", но исполняемый файл теста создается и запускается из каталога%APPDATA%/local/temp моей машины. У моего ПК есть IT-защита, которая блокирует запуск любого нераспознанного исполняемого файла, кроме как из предварительно разрешенного каталога (например, C:/dev/projects"). В этом каталоге находится весь исходный код моего Go, включая мои файлы *_test.go. Есть ли способ сообщить модулю Go test о сборке и запуске из текущего каталога?
1 ответ
Да, ты можешь.
Установка временного каталога перед выполнением go test
, По умолчанию переменная среды временного каталога оценивается в порядке TMP
, TEMP
, USERPROFILE
Каталог Windows; обратитесь к MSDN док.
По сути, он выполняет go-тест в заданном временном каталоге и выполняет его.
C:\> cd dev\projects\src\mygotest
C:\dev\projects\src\mygotest>echo %CD%
C:\dev\projects\src\mygotest
C:\dev\projects\src\mygotest>set TMP=%CD%
C:\dev\projects\src\mygotest>go test -x
WORK=C:\dev\projects\src\mygotest\go-build306298926
mkdir -p $WORK\mygotest\_test\
mkdir -p $WORK\mygotest\_test\_obj_test\
cd C:\dev\projects\src\mygotest
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\mygotest.a" -trimpath "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -p main -complete -buildid 86cb7a423d355c7468ad98c4f8bffe77b68d2265 -D _/C_/dev/projects/src/mygotest -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -pack "C:\\dev\\projects\\src\\mygotest\\sample.go" "C:\\dev\\projects\\src\\mygotest\\sample_test.go"
cd $WORK\mygotest\_test
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\main.a" -trimpath "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -p main -complete -D "" -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test" -I "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -pack "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\_testmain.go"
cd .
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\mygotest.test.exe" -L "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test" -L "C:\\dev\\projects\\src\\mygotest\\go-build306298926" -w -extld=gcc -buildmode=exe "C:\\dev\\projects\\src\\mygotest\\go-build306298926\\mygotest\\_test\\main.a"
$WORK\mygotest\_test\mygotest.test.exe
Hello, playground
PASS
ok mygotest 0.526s
C:\dev\projects\src\mygotest>
Замечания: TMP
устанавливается только на текущий сеанс терминала, это не влияет на системную переменную среды.
Важная вещь, на которую следует обратить внимание: WORK=C:\dev\projects\src\mygotest\go-build306298926
,
Удачного тестирования!