Хадсон не может перемещаться по относительным каталогам - PullRequest
1 голос
/ 16 февраля 2010

У меня есть проект Python с Hudson . Большинство модульных тестов работают правильно, но любые тесты, требующие записи в файловую систему (например, у меня есть класс, использующий tar-файлы), не могут найти установленный каталог tmp для промежуточной обработки (мои методы tearDown удаляют все файлы в относительной директории tmp ).

Вот моя структура проекта:

  • ЦСИ
    • Тесты
      • Светильники (статические файлы здесь)
      • единица (юнит-тесты здесь)
    • TMP

Вот пример ошибки:

OSError: [Errno 2] No such file or directory: '../../tmp'

Я предполагаю, что это происходит потому, что Хадсон не обрабатывает файлы, находясь в каталоге unit , а скорее в каком-то другом рабочем каталоге.

Что такое рабочий каталог Хадсона? Это можно настроить? Могут ли относительные пути работать вообще?

Ответы [ 3 ]

2 голосов
/ 16 февраля 2010

У каждой работы в Гудзоне есть свой рабочий каталог: /path/to/hudson/jobs/[job name]/workspace/

Для отдельных заданий можно установить параметр «Использовать настраиваемое рабочее пространство» (в разделе «Дополнительные параметры проекта»), чтобы определить, где будет находиться рабочее пространство.

Полагаю, это будет зависеть от того, как выполняются ваши тесты, но если вы осмотрите рабочее пространство задания, вы сможете найти, куда Хадсон записывает файлы.

1 голос
/ 16 февраля 2010

Я не знаю, как вы инициализируете свое рабочее пространство, но обычно это делается путем вывода вашего проекта из-под контроля версий в рабочее пространство. Если это так в вашем случае, проще всего добавить каталог tmp в систему управления версиями (скажем, с файлом README, если ваша система управления версиями не поддерживает каталоги). Затем каталог tmp будет извлечен в вашу рабочую область, и все должно работать снова.

0 голосов
/ 16 февраля 2010

Я ничего не знаю о Хадсоне, но это то, что я делаю, чтобы убедиться, что относительный путь работает правильно:

os.chdir(os.path.dirname(sys.argv[0]))
...