четверг, 10 июня 2010 г.

Sphinx и русский язык. Нюанс

Для тех, кто не в курсе: Sphinx - это система генерации документации на (и для) python.

Что бы добиться правильного русского текста в генерируемом html, нужно исходные rst-тексты оформлять в кодировке utf8 и не трогать настройки кодировки в conf.py. В частности не стоит раскоментировать строку source_encoding:

# The encoding of source files.
# source_encoding = 'utf8'
Раскоментирование этой строки дает неприятный нюанс: если файл начинается с utf-префикса, то символы utf-префикса (0xEF 0xBB 0xBF) будут считаться обычными символами, в результате чего sphinx начинает неправильно обрабатывать визуально вроде правильный синтаксис rts. Например, если в самом начале файла есть текст:
Заголовок
=========
то перед "Заголовок" присутствуют еще 3 символа (невидимых), в итоге sphinx ругается, что "Заголовок" короче, чем "=========".

вторник, 8 июня 2010 г.

Запуск тестов в pydev через nose

Я пользуюсь nose для запуска тестов и мне все нравится, за исключением того, что pydev (ide на eclipse для python) не умеет запускать тесты через nose, а нужно. Оказывается достаточно легко его этому научить. Для этого нужно подправить файл из поставки pydev: plugins\org.python.pydev.debug_1.5.7.2010050621\pysrc\runfiles.py. Ищем в нем метод def run_tests(self), который собственно говоря запускает тесты, и изменяем его на свой вкус, например так:
def run_tests(self):      
  files = self.find_import_files()
  sys.argv=['NOSETESTS', '-s', '-v']
  for f in files:
      for t in self.tests:
        sys.argv.append(f+':'+t) 
  import nose
  nose.run()
  return
Поясню:
  • files - имена (полные) файлов с тестами (обычно - один)
  • self.tests - имена тестов, которые Вы выбрали, когда запускали тесты через Ctrl+F9
  • sys.argv.append(f+':'+t) - добавление в командную строку запуска имени файла и имени теста, как хочет nose
Вот и все.