“Никакой источник для кода” не обменивается сообщениями в Coverage.py

Я выполнил сборку вчера вечером, успешно. Я встал этим утром и выполнил другого, не изменяя конфигурации или изменив любой исходный код. Теперь моя сборка не приводит к сбою с сообщением "Источника для кода" при выполнении моего 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 с покрытием в самом каталоге, я вижу подобные сообщения. Снова, файлы, которые ищет покрытие, никогда не были там для начала, делая это очень озадачивающим.

33
задан Matt Norris 6 March 2010 в 15:31
поделиться

4 ответа

Я не уверен, почему он думает, что этот файл существует, но вы можете указать extension.py игнорировать эти проблемы с помощью покрытия xml -i переключатель.

Если вы хотите отследить ошибку, напишите мне (по адресу ned batchelder com).

34
ответ дан 27 November 2019 в 17:32
поделиться

Убедитесь, что там нет файла .pyc, который мог существовать в прошлом.

40
ответ дан 27 November 2019 в 17:32
поделиться

Резюме : существующие данные .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 решило проблему.

15
ответ дан 27 November 2019 в 17:32
поделиться

Возможно, это поможет, но сегодня я столкнулся с аналогичной ошибкой. И это ошибка разрешения. В моем коде используется проверка от другого пользователя (по задумке, запрос вниз), и мне нужно выполнить sudo, чтобы покрытие работало. Так что в вашей проблеме может быть что-то особенное.

0
ответ дан 27 November 2019 в 17:32
поделиться
Другие вопросы по тегам:

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