Я работаю над тем, чтобы использовать переменную среды каталогов внутри tox, чтобы передать аргумент arg в сценарий оболочки, который ожидает завершения миграции базы данных перед началом тестирования. Когда это выполняется, хотя аргумент теряется при выводе $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
output /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
.