summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2023-07-08 14:08:16 -0400
committerNat Goodspeed <nat@lindenlab.com>2023-07-08 14:08:16 -0400
commit7dc6211ad5ea83685a35c6fff740278343aa8b9d (patch)
treefeeae360c11d30e9c12bf1fd01898d1537c49af5
parentca4288edaa226507e2a44182689a167bd4ea7948 (diff)
SL-18837: Force llprocess_test and llleap_test to use just 'python'.
On GitHub Windows runners, trying to make build.yaml set PYTHON=python in the environment doesn't work: integration tests still fail with "Access is denied" because they're still trying to execute the interpreter's full pathname. Instead, make llprocess_test and llleap_test detect the case of GitHub Windows and override the environment variable PYTHON with a baked-in string constant "python".
-rw-r--r--.github/workflows/build.yaml6
-rw-r--r--indra/llcommon/tests/llleap_test.cpp11
-rw-r--r--indra/llcommon/tests/llprocess_test.cpp13
3 files changed, 23 insertions, 7 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 47b1f421e5..c0bc5f30e1 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -177,11 +177,7 @@ jobs:
# as neither CMake's FindPython nor our custom Python.cmake module
# will resolve the correct interpreter location.
if [[ "$RUNNER_OS" == "Windows" ]]; then
- ##export PYTHON="$(native_path "$(which python)")"
- ## Weirdly, on GitHub's Windows runners, the integration test that
- ## runs just 'python' succeeds while the integration tests that
- ## run the full path to the .exe fail with "Access is denied."
- export PYTHON=python
+ export PYTHON="$(native_path "$(which python)")"
echo "Python location: $PYTHON"
export PYTHON_COMMAND="$PYTHON"
else
diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp
index e9edd165df..01515ecebf 100644
--- a/indra/llcommon/tests/llleap_test.cpp
+++ b/indra/llcommon/tests/llleap_test.cpp
@@ -193,11 +193,20 @@ namespace tut
reader.getName().substr(0, reader.getName().length()-3))),
PYTHON(LLStringUtil::getenv("PYTHON"))
{
+#if LL_WINDOWS
+ // Weirdly, on GitHub Windows runners, plain 'python' works much
+ // better than a full pathname.
+ const char* RUNNER_TEMP = getenv("RUNNER_TEMP");
+ if (RUNNER_TEMP && *RUNNER_TEMP)
+ {
+ PYTHON = "python";
+ }
+#endif
ensure("Set PYTHON to interpreter pathname", !PYTHON.empty());
}
NamedExtTempFile reader;
const std::string reader_module;
- const std::string PYTHON;
+ std::string PYTHON;
};
typedef test_group<llleap_data> llleap_group;
typedef llleap_group::object object;
diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp
index a01ec84547..3ba3a8aab3 100644
--- a/indra/llcommon/tests/llprocess_test.cpp
+++ b/indra/llcommon/tests/llprocess_test.cpp
@@ -141,6 +141,15 @@ struct PythonProcessLauncher
mScript("py", script)
{
auto PYTHON(LLStringUtil::getenv("PYTHON"));
+#if LL_WINDOWS
+ // Weirdly, on GitHub Windows runners, plain 'python' works much better
+ // than a full pathname.
+ const char* RUNNER_TEMP = getenv("RUNNER_TEMP");
+ if (RUNNER_TEMP && *RUNNER_TEMP)
+ {
+ PYTHON = "python";
+ }
+#endif
tut::ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty());
mParams.desc = desc + " script";
@@ -1013,7 +1022,9 @@ namespace tut
set_test_name("get*Pipe() validation");
PythonProcessLauncher py(get_test_name(),
"from __future__ import print_function\n"
- "print('this output is expected')\n");
+ "import sys\n"
+ "print('this output is expected')\n"
+ "print('run by', sys.executable)\n");
py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stdin
py.mParams.files.add(LLProcess::FileParam()); // inherit stdout
py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stderr