В своем личном проекте я пытаюсь проанализировать техническую задолженность различных библиотек python.Для этого я создал скрипт на python, который загружает библиотеку, проверяет каждый объединенный коммит и запускает анализ.Одна часть анализа заключается в получении тестового покрытия.
Самый простой способ, который я нашел для его получения, - это запустить
coverage run --source={library}/ setup.py test
Однако я хочу иметьэто автоматизировано, поэтому я пытаюсь запустить эту команду в сценарии оболочки из сценария python, упомянутого выше.
Сценарий должен изменить каталог для библиотеки, переключиться на virtualenv (автоматически создается на предыдущих этапаханализ) и запустить coverage
.Однако он не работает на Requirement error
, что указывает на то, что он фактически не переключает virtualenv и остается в virtualenv проекта анализа.
Сценарий оболочки выглядит следующим образом:
#!/usr/bin/env bash
# Args
# $1 proj_path
# $2 proj_name
# $3 venv_name
cd $1
source `which virtualenvwrapper.sh`
workon $3
coverage run --source=$2/ setup.py test
coverage report
И он вызывается из скрипта Python, например:
subprocess.call(["analyzer/run_coverage.sh", self.repo_path, self.repo_name, self.venv_name])
Не могли бы вы помочь мне, как переключить venv в скрипте оболочки?Спасибо!