Skip to content
Snippets Groups Projects
Commit 8a216386 authored by Simon McVittie's avatar Simon McVittie
Browse files

tests: Test --pass-env, --unset-env

parent 38633885
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import logging import logging
import os import os
import shutil
import signal import signal
import subprocess import subprocess
import sys import sys
...@@ -56,6 +57,9 @@ class TestLauncher(BaseTest): ...@@ -56,6 +57,9 @@ class TestLauncher(BaseTest):
def test_socket_directory(self) -> None: def test_socket_directory(self) -> None:
with tempfile.TemporaryDirectory(prefix='test-') as temp: with tempfile.TemporaryDirectory(prefix='test-') as temp:
printf_symlink = os.path.join(temp, 'printf=symlink')
os.symlink(shutil.which('printf'), printf_symlink)
proc = subprocess.Popen( proc = subprocess.Popen(
[ [
'env', 'env',
...@@ -132,7 +136,8 @@ class TestLauncher(BaseTest): ...@@ -132,7 +136,8 @@ class TestLauncher(BaseTest):
completed = run_subprocess( completed = run_subprocess(
[ [
'env', 'PV_TEST_VAR=not-inherited', 'env',
'PV_TEST_VAR=not-inherited',
] + self.launch + [ ] + self.launch + [
'--socket', socket, '--socket', socket,
'--', '--',
...@@ -144,6 +149,74 @@ class TestLauncher(BaseTest): ...@@ -144,6 +149,74 @@ class TestLauncher(BaseTest):
) )
self.assertEqual(completed.stdout, b'from-launcher') self.assertEqual(completed.stdout, b'from-launcher')
completed = run_subprocess(
[
'env',
'-u', 'PV_TEST_VAR',
'PV_TEST_VAR_ONE=one',
'PV_TEST_VAR_TWO=two',
] + self.launch + [
'--pass-env=PV_TEST_VAR',
'--pass-env-matching=PV_TEST_VAR_*',
'--socket', socket,
'--',
'sh', '-euc',
'printf \'%s\' '
'"'
'${PV_TEST_VAR-cleared}'
'${PV_TEST_VAR_ONE}'
'${PV_TEST_VAR_TWO}'
'"',
],
check=True,
stdout=subprocess.PIPE,
stderr=2,
)
self.assertEqual(completed.stdout, b'clearedonetwo')
completed = run_subprocess(
[
'env', '-u', 'PV_TEST_VAR',
] + self.launch + [
'--env=PV_TEST_VAR=nope',
'--pass-env=PV_TEST_VAR',
'--socket', socket,
'--',
'sh', '-euc', 'printf \'%s\' "${PV_TEST_VAR-cleared}"',
],
check=True,
stdout=subprocess.PIPE,
stderr=2,
)
self.assertEqual(completed.stdout, b'cleared')
completed = run_subprocess(
self.launch + [
'--env=PV_TEST_VAR=nope',
'--unset-env=PV_TEST_VAR',
'--socket', socket,
'--',
'sh', '-euc', 'printf \'%s\' "${PV_TEST_VAR-cleared}"',
],
check=True,
stdout=subprocess.PIPE,
stderr=2,
)
self.assertEqual(completed.stdout, b'cleared')
completed = run_subprocess(
self.launch + [
'--unset-env=PV_TEST_VAR',
'--socket', socket,
'--',
printf_symlink, 'hello',
],
check=True,
stdout=subprocess.PIPE,
stderr=2,
)
self.assertEqual(completed.stdout, b'hello')
completed = run_subprocess( completed = run_subprocess(
self.launch + [ self.launch + [
'--clear-env', '--clear-env',
...@@ -158,7 +231,12 @@ class TestLauncher(BaseTest): ...@@ -158,7 +231,12 @@ class TestLauncher(BaseTest):
self.assertEqual(completed.stdout, b'cleared') self.assertEqual(completed.stdout, b'cleared')
completed = run_subprocess( completed = run_subprocess(
self.launch + [ [
'env',
'PV_TEST_VAR=not-inherited',
] + self.launch + [
'--pass-env=PV_TEST_VAR',
'--env=PV_TEST_VAR=nope',
'--env=PV_TEST_VAR=overridden', '--env=PV_TEST_VAR=overridden',
'--socket', socket, '--socket', socket,
'--', '--',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment