проблема с заменой переменной среды tox.ini

#python #shell #tox

#python #оболочка #tox

Вопрос:

Я работаю над использованием переменной среды каталога внутри tox для передачи аргумента в сценарий оболочки, который ожидает завершения миграции базы данных до начала тестирования. Когда это выполняется, хотя аргумент теряется при повторении $1 в .sh скрипте.

 [tox]
envlist = py27
skipsdist=True

[testenv]
passenv = *
deps = -r {env:APP_ROOT}/requirements.txt
commands_pre = {env:APP_ROOT}/scripts/wait-for-db.sh {env:DBSENTINEL}/.db-migrations-ready
usedevelop = true
commands = py.test
commands_post = /bin/rm {env:DBSENTINEL}/.db-migrations-ready
  

В итоге я получаю

 Darwin run-test-pre: commands[0] | /Users/alexander/projects/python-services/scripts/wait-for-db.sh /Users/alexander/projects/python-services/.db-migrations-ready
.db-migrations-ready
  

То, что я бы хотел, кроме эха из моего сценария оболочки, — это полный путь, отображаемый в run-test-pre выводе /Users/alexander/projects/python-services/.db-migrations-ready . Вместо этого только .db-migrations-ready проходит.

Если я изменю pre_commands на

 commands_pre = {env:APP_ROOT}/scripts/wait-for-db.sh {env:DBSENTINEL}//.db-migrations-ready
  

Затем я вижу полное эхо-сообщение о замене

 Darwin run-test-pre: commands[0] | /Users/alexander/projects/python-services/scripts/wait-for-db.sh /Users/alexander/projects/python-services//.db-migrations-ready
/Users/alexander/projects/python-services//.db-migrations-ready
  

Я предполагаю, что это связано с проблемой escape, форматирования или argparse, но не уверен. Мне нужно, чтобы {env:DBSENTINEL} распаковал заданный путь к каталогу и передал его в сценарий оболочки как $arg1 .

Ответ №1:

Похоже, что исправлены одиночные кавычки, и я считаю, что это связано с этой проблемой Github.

 commands_pre = {env:APP_ROOT}/scripts/wait-for-db.sh '{env:DBSENTINEL}/.db-migrations-ready'
  
 Darwin run-test-pre: commands[1] | /Users/alexander/projects/python-services/scripts/wait-for-db.sh /Users/alexander/projects/python-services/.db-migrations-ready
/Users/alexander/projects/cloud/python-services/.db-migrations-ready