Сообщение «Нет исходного кода» в Coverage.py - PullRequest
30 голосов
/ 05 марта 2010

Прошлой ночью я успешно выполнил сборку. Я встал сегодня утром и запустил другую, не меняя конфигурацию и не изменяя исходный код. Теперь моя сборка завершается с сообщением "Нет кода для кода" при выполнении моих тестов на нос с покрытием .

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

Ответы [ 7 ]

39 голосов
/ 08 марта 2010

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

31 голосов
/ 08 марта 2010

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

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

15 голосов
/ 26 июня 2010

Сводка : Существующие данные .coverage сохраняются при запуске nosetests --with-coverage, поэтому сначала удалите их.

Подробности : Я тоже только что столкнулся с этим через Хадсона и тесты носа. Эта ошибка исходила от coverage/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 все еще сохраняются. Действительно, удаление .coverage решило проблему.

9 голосов
/ 02 октября 2012

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

nosetests --with-coverage --cover-erase

Я бы настоятельно рекомендовал проверить справку, чтобы увидеть, какие еще аргументы вам не хватает, и не забывать эти плагины либо

6 голосов
/ 15 февраля 2015

Проблема в том, что файл .pyc все еще существует.

Быстрое и грязное решение - удалить все .pyc файлы в этом каталоге:

find . -name "*.pyc" -exec rm -rf {} \;
1 голос
/ 27 мая 2015

Я столкнулся с этой проблемой также, когда пытался запустить тестирование носа через setuptools. Как уже упоминалось, можно удалить существующие файлы .pyc, но это может быть громоздким.

Мне пришлось создать файл .coveragerc со следующим

[отчет]

ignore_errors = True

чтобы исправить эту ошибку.

0 голосов
/ 22 июля 2010

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

...