Хадсон "Исходный код недоступен." - PullRequest
11 голосов
/ 18 февраля 2010

Я использую Хадсон для непрерывной сборки проекта 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.
* 1011Странно то, что исходный код для модульных тестов найден и отображен.Я пытался вручную скопировать исходные файлы для других файлов .py в ~/.hudson/jobs/<projectname>/cobertura (куда копируются юнит-тесты), но это не сработало.

Есть предложения?

Ответы [ 5 ]

7 голосов
/ 19 февраля 2010

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

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

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

Еще один момент: когда он говорит «самая последняя сборка», это на самом деле означает «самая последняя стабильная сборка» (т. Е. Шар состояния синий, а не желтый).

6 голосов
/ 26 мая 2010

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

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

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

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

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

5 голосов
/ 13 августа 2010

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

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

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

1 голос
/ 19 октября 2010

Наше решение состояло в том, чтобы изменить использование задачи ant-cobertura-report для включения полного пути к исходному каталогу, а не относительного пути.

 <cobertura-report format="xml" destdir="${coverage.dir}" srcdir="${basedir}/${src.dir}"/>

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

0 голосов
/ 31 января 2012

«Правильный» способ исправить это - поместить ваш проект в PYTHONPATH и запустить тесты / покрытие за пределами вашего репо. Поскольку похоже, что вы используете Django, тест django-admin.py --settings = myproject.settings позволит вам сделать это.

- Первоначально опубликовано Питом в комментарии, перенесено в ответ.

...