Я выполнил сборку вчера вечером, успешно. Я встал этим утром и выполнил другого, не изменяя конфигурации или изменив любой исходный код. Теперь моя сборка не приводит к сбою с сообщением "Источника для кода" при выполнении моего nosetests с покрытием.
NoSource: No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/tests/unit/util.py'
. . .
No source for code: '/home/matthew/.hudson/jobs/myproject/workspace/__init__.py'
Единственная подсказка, которую я имею, - то, что файлы, это говорит это, не могут найти, не там, но они никогда не были, и они, как предполагается, не. Например, в последнем, рабочая область Гудзона не является модулем Python, таким образом, __init__.py
не был ли бы.
Обновление: я подтвердил, что это не Гудзонская проблема. Когда я выполняю nostests с покрытием в самом каталоге, я вижу подобные сообщения. Снова, файлы, которые ищет покрытие, никогда не были там для начала, делая это очень озадачивающим.
Я не уверен, почему он думает, что этот файл существует, но вы можете указать extension.py игнорировать эти проблемы с помощью покрытия xml -i
переключатель.
Если вы хотите отследить ошибку, напишите мне (по адресу ned batchelder com).
Убедитесь, что там нет файла .pyc, который мог существовать в прошлом.
Резюме : существующие данные .coverage сохраняются при запуске носовых тестов --with-охват
, поэтому сначала удалите их.
Подробности : Я тоже только что столкнулся с этим через Гудзон и тесты носа. Эта ошибка исходила из покрытия / results.py: 18
(покрытие 3.3.1 - было 3 места, вызывающих эту ошибку, но это было релевантным). Он пытается открыть файл .py, соответствующий фактически отслеженному модулю. Небольшая демонстрация:
$ echo print > hello.py
$ echo import hello > main.py
$ coverage run main.py
$ rm hello.py
$ coverage xml
No source for code: '/tmp/aoeu/hello.py'
По-видимому, у меня был файл stopwords.pyc, который был выполнен / отслежен, но не stopwords.py. Однако нигде в моем коде я не импортировал стоп-слова, и даже удалив .pyc, я все равно получал ошибку.
Затем простой strings .coverage
показал, что ссылка на stopwords.py все еще существует. Nosetests --with-охват
использует функцию добавления или слияния покрытия, что означает, что старые данные .coverage все еще сохраняются. Действительно, удаление .coverage решило проблему.
Возможно, это поможет, но сегодня я столкнулся с аналогичной ошибкой. И это ошибка разрешения. В моем коде используется проверка от другого пользователя (по задумке, запрос вниз), и мне нужно выполнить sudo, чтобы покрытие работало. Так что в вашей проблеме может быть что-то особенное.