Gần đây tôi đã bắt đầu sử dụng git và cũng bắt đầu thử nghiệm đơn vị (sử dụng mô-đun unittest
của Python). Tôi muốn chạy thử nghiệm của mình mỗi lần tôi cam kết và chỉ cam kết nếu họ vượt qua.Cam kết chỉ trong git nếu các thử nghiệm vượt qua
Tôi đoán mình cần sử dụng pre-commit
trong /hooks
và tôi đã quản lý để chạy thử nghiệm, nhưng dường như tôi không thể tìm cách dừng cam kết nếu kiểm tra không thành công. Tôi đang chạy thử nghiệm với make test
, do đó đang chạy python3.1 foo.py --test
. Có vẻ như tôi không có điều kiện xuất cảnh khác cho dù các bài kiểm tra vượt qua hay thất bại, nhưng tôi có thể đang tìm kiếm sai chỗ.
Chỉnh sửa: Đây có phải là điều gì đó không phổ biến mà tôi muốn làm ở đây không? Tôi đã nghĩ rằng đó là yêu cầu chung ...
Chỉnh sửa2: Chỉ trong trường hợp mọi người không thể bị làm phiền khi đọc nhận xét, vấn đề là unittest.TextTestRunner
không thoát với trạng thái khác 0 bộ kiểm thử thành công hay không. Để bắt được nó, tôi đã làm:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)
câu hỏi gần đây trên SO đi đến đầu truy vấn của Google khá nhanh; và sau đó thả xuống trong bảng xếp hạng một cách nhanh chóng là tốt. Việc hỏi một câu hỏi và 5 phút sau đó không phải là điều bình thường khi nó trở thành hit hàng đầu của Google; nhưng trong một tuần, bạn có thể khó tìm thấy nó hơn. –
@Brian Ah, đủ công bằng. Tôi không nhận ra rằng Google đã làm việc như thế. – Skilldrick
Lệnh 'python3.1 foo.py --test' của bạn có trả lại trạng thái thoát khác không? Liệu 'make' có trả lại trạng thái thoát khác không nếu bạn chạy nó theo cách thủ công? Và nội dung của cái móc 'tiền cam kết' của bạn là gì? –