Существует ли рекомендуемая команда для “hg, делят пополам - команда”?

У меня есть ошибка на стадии становления, которую я должен разыскать завтра. Я знаю предыдущий hg пересмотр, который был хорош, таким образом, я думаю об использовании hg, делят пополам.

Однако я нахожусь в Windows и не хочу входить в сценарии DOS.

Идеально, я смог бы записать, что модульный тест Python и иметь hg делит пополам использование это. Это - моя первая попытка.

bisector.py

#!/usr/bin/env python

import sys
import unittest

class TestCase(unittest.TestCase):

    def test(self):
        #raise Exception('Exception for testing.')
        #self.fail("Failure for testing.")
        pass


def main():
    suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestCase)
    result = unittest.TestResult()
    suite.run(result)

    if result.errors:
        # Skip the revision
        return 125

    if result.wasSuccessful():
        return 0
    else:
        return 1


if '__main__' == __name__:
    sys.exit(main())

Возможно, я мог затем работать:

hg bisect --reset
hg bisect --bad
hg bisect --good -r 1
hg bisect --command=bisector.py

Существует ли лучший способ сделать его? Спасибо за любой совет.

8
задан blokeley 24 March 2010 в 21:56
поделиться

3 ответа

Спасибо всем, особенно Уиллу Маккатчену. Решение, которое сработало лучше всего, приведено ниже. .

bisector.py

#!/usr/bin/env python

import unittest

class TestCase(unittest.TestCase):

    def test(self):
        # Raise an assertion error to mark the revision as bad
        pass


if '__main__' == __name__:
    unittest.main()

Сложнее всего было правильно выполнить команду hg bisect:

hg update tip
hg bisect --reset
hg bisect --bad
hg bisect --good 0
hg bisect --command ./bisector.py

или в Windows последняя команда:

hg bisect --command bisector.py
10
ответ дан 5 December 2019 в 11:23
поделиться

Я думаю, что вы можете удалить вашу функцию main() и использовать следующий блок для запуска тестов:

if __name__ == '__main__':
   unittest.main()

Вызов unittest. main() запустит тесты, которые он найдет в этом файле, и выйдет с соответствующим кодом состояния в зависимости от того, прошли все тесты или нет.

4
ответ дан 5 December 2019 в 11:23
поделиться

Если в вашем распоряжении есть инструменты unix, обратите внимание, что 'grep' устанавливает свой статус выхода полезным образом. Так что если ваш модульный тест печатает "PASS", когда он проходит, вы можете сделать:

hg bisect -c './unittest | grep PASS'

и это будет работать довольно хорошо.

1
ответ дан 5 December 2019 в 11:23
поделиться
Другие вопросы по тегам:

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