Как написать ловушку Git pre-commit, которая предотвращает фиксацию проекта Android в случае сбоя тестового проекта?

1

Учитывая, что я в моем рабочем пространстве у меня есть андроид проект MyAndroidProject и мои тесты проекта MyAndroidProjectTests каталоги, как я мог бы написать предварительно совершить Git крючок, который будет запускать тесты в MyAndroidProjectTests и отказаться от совершения каких - либо изменений в коде, если тесты не?

Когда я запускаю тесты на терминале, они обычно выводятся следующим образом:

com.mydomain.tests.Models.MyProjectTests:.......
Test results for InstrumentationTestRunner=.......
Time: 0.05

OK (10 tests)

То, что я не уверен в том, как использовать, чтобы попытаться определить, прошли или не прошли тесты, отличные от синтаксического анализа вывода последней строки (например, OK или FAILED и я не уверен, что мне так нравится этот метод. в идеале я хотел бы вернуть статус из команды, которую я использую для запуска тестов на терминале:

adb shell am instrument -w com.mydomain.tests/android.test.InstrumentationTestRunner

Я хотел бы использовать ответ в сценарии оболочки, который я мог бы разместить в папке .git/hooks/ как крюк предварительной фиксации.

Я был бы признателен за любую информацию или ссылки на другие ресурсы и большое спасибо заранее.

  • 0
    Добавление длительных задач в ловушку перед фиксацией, как правило, является плохой идеей, поскольку блокирует работу. Такие проверки должны выполняться в системе CI, которая осуществляет слияния коммитов, которые нарушают тесты.
Теги:
testing
hook
commit

1 ответ

2
Лучший ответ

git-крючки выполняются из вашего корня project/repo, поэтому вы можете просто использовать вашу команду непосредственно в крюке precommit:

#!/bin/bash
adb shell am instrument -w com.mydomain.tests/android.test.InstrumentationTestRunner

если adb возвращает adb существующий код при ошибке - коммит будет прерван.

Если вам нужно получить код выхода для другой цели, есть другие вопросы, указывающие, как это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню