2015-07-02 31 views
16

Sto usando in seguito in setenv per importare la variabile d'ambiente da dove corro, ma c'è un modo per importare tutte le variabili in modo che non sia davvero necessario importarne una da uno.Come importare tutte le variabili d'ambiente in tox

ad esempio: {env: TEMPEST_CONFIG:} e {env: TEMPEST_CONFIG_DIR:} utilizzati per importare queste 2 variabili.

[testenv:nosetests] 
setenv = 
    TEMPEST_CONFIG={env:TEMPEST_CONFIG:} 
    TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:} 
deps = {[testenv]deps} 
commands = 
    find . -type f -name "*.pyc" -delete 
    bash {toxinidir}/tools/setup.sh 
    nosetests --with-xunit {posargs} 

risposta

24

È possibile utilizzare passenv. Se si passa il fermo tutto jolly * si ha accesso a tutte le variabili d'ambiente dall'ambiente genitore:

PassEnv = separati da spazi-GLOBNAMES

Nuovo nella versione 2.0.

un elenco di nomi di variabili d'ambiente jolly che devono essere copiati dall'ambiente Tox invocazione per l'ambiente di test quando l'esecuzione di comandi di prova. Se una variabile d'ambiente specificata non è esistente nell'ambiente di richiamo tossicologico, viene ignorata. È possibile utilizzare * e? per abbinare più variabili d'ambiente con un solo nome.

minimo tox.ini per riprodurre:

[tox] 
envlist = py27 
skipsdist = True 

[testenv] 
passenv = * 
whitelist_externals = echo 
commands = echo {env:MY_FANCY_ENV_VAR:} from my fancy env var :) 

invocazione in linux/unix shell:

MY_FANCY_ENV_VAR='hello' tox 

invocazione su Windows cmd.exe:

set MY_FANCY_ENV_VAR=hello & tox 

uscita:

py27 create: /tmp/tt/.tox/py27 
py27 installed: 
py27 runtests: PYTHONHASHSEED='2037875709' 
py27 runtests: commands[0] | echo from my fancy env var :) 
hello from my fancy env var :) 
_______________________ summary __________________________ 
    py27: commands succeeded 
    congratulations :)