Mensaje "No source for code" en Coverage.py


Hice una construcción anoche, con éxito. Me levanté esta mañana y corrí otra sin cambiar ninguna configuración o modificar ningún código fuente. Ahora mi compilación está fallando con el mensaje "No source for code" al ejecutar mis nosetests con coverage .

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'

La única pista que tengo es que los archivos que dice que no puede encontrar no están allí, pero nunca estuvieron y no se supone que estén. Por ejemplo, en este último, el espacio de trabajo de Hudson no es un Módulo Python, así que __init__.py no estaría allí.

Actualización: He confirmado que esto no es un problema de Hudson. Cuando corro nostests con cobertura en el propio directorio, veo mensajes similares. Una vez más, los archivos que la cobertura está buscando nunca estaban allí para empezar, haciendo esto muy desconcertante.

Author: Matt Norris, 2010-03-05

7 answers

No estoy seguro de por qué cree que existe ese archivo, pero se puede decir coverage.py para ignorar estos problemas con un interruptor coverage xml -i.

Si desea rastrear el error, envíeme una línea (ned en ned batchelder com).

 30
Author: Ned Batchelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-08 12:25:19

Asegúrese de que no .archivo pyc allí, que puede haber existido en el pasado.

 36
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-08 16:22:26

Resumen: Existente .los datos de cobertura se mantienen cuando se ejecuta nosetests --with-coverage, así que elimínelos primero.

Details : Yo también acabo de encontrar esto vía Hudson y nosetests. Este error provenía de coverage/results.py:18 (cobertura 3.3.1 - había 3 lugares que planteaban este error, pero este era el relevante). Está tratando de abrir el .py archivo correspondiente al módulo que fue trazado. Una pequeña demostración:

$ 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'

Aparentemente tenía un archivo stopwords.pyc que fue ejecutado / rastreado, pero no stopwords.py. Sin embargo, en ninguna parte de mi código fue que la importación de palabras de parada, e incluso la eliminación de la .pyc todavía tengo el error.

Un simple strings .coverage entonces reveló que la referencia a stopwords.py todavía existía. nosetests --with-coverage está utilizando la funcionalidad anexar o fusionar de coverage, es decir, la antigua.los datos de cobertura aún persisten. De hecho, la eliminación .la cobertura abordó la cuestión.

 14
Author: Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-26 08:25:15

Simplemente use el argumento 'cover cover-erase'. Corrige este error y no tiene que eliminar manualmente los archivos de cobertura

nosetests --with-coverage --cover-erase

Te recomiendo encarecidamente que eches un vistazo a la ayuda para ver qué otros argumentos te estás perdiendo también y no te olvides de esos complementos

 9
Author: Adam Spence,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-02 15:32:20

El problema es que el archivo .pyc todavía existe.

Una solución rápida y sucia es eliminar todos los archivos .pyc en ese directorio:

find . -name "*.pyc" -exec rm -rf {} \;
 6
Author: Rick Hanlon II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-14 22:04:40

También me encontré con este problema al intentar ejecutar la cobertura de nosetests a través de setuptools. Como se mencionó, es posible eliminar existente .archivos pyc, pero eso puede ser engorroso.

Terminé teniendo que crear un .archivo coveragerc con la siguiente

[informe]

Ignore_errors = True

Para corregir este error.

 1
Author: Danny D'Amours,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-27 17:10:45

Tal vez esto ayude, pero me encontré con un error similar hoy. Y es un error de permiso. Mi código está usando un checkout de otro usuario (por diseño, down ask) y necesito sudo para que la cobertura funcione. Así que su problema puede tener algo que ver.

 0
Author: Jorge Vargas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-22 19:05:08