Hi folks,

We have requests to handle the environment variables that we can set to the tests. This is the RFC in that regard, with a summary of the ideas already exposed in the original request and some additional planning.

The original request is here: https://trello.com/c/Ddcly0oG/312-mechanism-to-provide-environment-variables-to-tests-run-on-a-virtual-machine-remote

Motivation
==========
Avocado tests are executed in a fork process or even in a remote machine. Regardless the fact that Avocado is hard coded to set some environment variables, they are for internal consumption and user is not allowed to control/configure its behavior. The motivation is the request to provide users an interface to set and/or keep environment variables for test consumption.

Use cases
=========
1) Use the command line or the config file to set the environment variables in tests processes environment; access those variables from inside the test. 2) Copy from current environment some environment variable(s) to the tests processes environment; access those variables from inside the test.

Proposal
========
- To create a command line option, under the `run` command, to set environment variables that will be available in tests environment process:

 $ avocado run --test-env='FOO=BAR,FOO1=BAR1' passtest.py

- To create an option in config file with a dictionary of environment variables to set in test process environment. It can be used as a replacement or complement to the command line option (with lower priority):

 [tests.env]
 test_env_vars = {'FOO': 'BAR', 'FOO1': 'BAR1'}

- Create an option in config file with a list of environment variable names to copy from avocado main process environment to the test process environment (similar to env_keep in the /etc/sudoers file):

 [tests.env]
 env_keep = ['FOO', 'FOO1', 'FOO2']


For every configuration entry point, the setting have to be respected in local and remote executions.

Drawbacks
=========

While setting an environment variable, user will be able to change the behavior of a test and probably the behavior of Avocado itself. Maybe even the OS behavior as well. We should:
- Warn users about the danger when using such options.
- Protect Avocado environment variables from overwriting.


Looking forward to read your comments.

Best Regards,
--
Amador Pahim

_______________________________________________
Avocado-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/avocado-devel

Reply via email to