【发布时间】:2017-09-18 19:09:26
【问题描述】:
我有一个调用GetTempPathW 并尝试在返回的目录中创建临时文件的测试。当我直接运行测试时,GetTempPathW 返回C:\Users\sgreens\AppData\Local\Temp\ 并且它通过了。当我用bazel test 运行它时,它返回C:\Windows\ 并且测试无法在那里创建文件。
来自documentation of GetTempPath:
GetTempPath 函数检查环境是否存在 变量按以下顺序并使用找到的第一个路径:
- TMP 环境变量指定的路径。
- TEMP 环境变量指定的路径。
- USERPROFILE 环境变量指定的路径。
- Windows 目录。
在 cmd 窗口中,我从以下位置运行 bazel:
C:\Users\sgreens\yeti\yeti>echo %TMP%
C:\Users\sgreens\AppData\Local\Temp
C:\Users\sgreens\yeti\yeti>echo %TEMP%
C:\Users\sgreens\AppData\Local\Temp
C:\Users\sgreens\yeti\yeti>echo %USERPROFILE%
C:\Users\sgreens
C:\Users\sgreens\yeti\yeti>echo %WINDIR%
C:\WINDOWS
在我构建时生成的CROSSTOOL中:
env_entry {
key: "TMP"
value: "C:\\Users\\sgreens\\AppData\\Local\\Temp"
}
env_entry {
key: "TEMP"
value: "C:\\Users\\sgreens\\AppData\\Local\\Temp"
}
Bazel 做了什么导致GetTempPath 返回C:\Windows\?我该如何解决?
可能相关的问题: '$' sign in the output base make all tests failed on windows
【问题讨论】: