#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