Гудзон “Исходный код недоступен”.

Я использую Гудзон для непрерывного разрабатывания проекта Python. Модульные тесты и покрытие кода работают отлично, но это сообщение появляется при развертке в Отчет о Покрытии Cobertura для моих файлов, которые не являются модульными тестами:

Source code is unavailable.Some possible reasons are:

* This is not the most recent build (to save on disk space, this plugin only keeps the most recent builds source code).
* Cobertura found the source code but did not provide enough information to locate the source code.
* Cobertura could not find the source code, so this plugin has no hope of finding it.

Странная вещь состоит в том, что исходный код для модульных тестов найден и отображен. Я пытался вручную скопировать исходные файлы для других .py файлов в ~/.hudson/jobs/<projectname>/cobertura (где модульные тесты копируются), но это не работало.

Какие-либо предложения?

11
задан Peter Hansen 18 February 2010 в 01:36
поделиться

3 ответа

Это чертовски уродливый хак, но это единственное, что я мог придумать, чтобы наконец заставить его работать ... и после нескольких часов поисков в Google и попыток добиться результатов, это единственное, что я придумал.

coverage run manage.py test
coverage xml
sed 's/filename="/filename="my\/path\//g' coverage.xml > coverage2.xml

Это просто замена атрибута имени файла в тегах класса xml и добавление полного пути к исходным файлам в начале. Просто убедитесь, что вы обновили шаблон отчета Cobertura xml, чтобы он был покрытием2.xml (если это то место, куда вы передаете вывод sed по конвейеру).

Было бы неплохо, если бы плагин Cobertura позволял вам вводить исходный путь аналогично тому, как это делает плагин Violations - к сожалению, насколько мне известно, это не так.

Надеюсь, это поможет!

6
ответ дан 3 December 2019 в 06:21
поделиться

Файл отчета Cobertura (который на данный момент находится где-то в $HUDSON/jobs/foo/workspace) должен содержать что-то вроде этого в начале:

<sources>
  <source>/path/to/source</source>
  <source>/another/path</source>
</sources>

Есть ли это? Пути указывают на правильное место?

Еще одна загвоздка: когда говорится "most recent build", на самом деле имеется в виду "most recent stable build" (т.е. шарик состояния синий, а не желтый).

7
ответ дан 3 December 2019 в 06:21
поделиться

Для меня два других решения не сработали отдельно, но сработала их комбинация:

...
coverage xml
sed 's/<!-- Generated by coverage.py: http:\/\/nedbatchelder.com\/code\/coverage -->/<sources><source>\/path\/to\/sourcefolder<\/source><\/sources>/g'

Это просто заменяет комментарий, вставленный coverage.py информацией о расположении источника.

6
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: