2011-06-19 13 views
5

Próbuję skonfigurować autotest, aby po uruchomieniu zestawu testowego i testach, które uległy awarii, autotest przestał testować i czekał, aż wprowadzę zmiany przed ponownym testowaniem. Z moją obecną autotestem konfiguracji testowanie odbywa się w sposób nieokreślony, gdy napotyka na test niesprawności, co sprawia, że ​​jest to kłopotliwy problem (konieczność przechodzenia do terminala i zatrzymywania serwera autotestu za każdym razem, gdy otrzymuję test awarii).Zentest - Jak zatrzymać automatyczne testowanie, gdy czerwony

Pracuję nad aplikacją szyn za pomocą RSpec, Zentest i Spork.

odpowiednie wersje Gem:

autotest (4.4.6) 
rspec (2.6.0) 
rspec-core (2.6.4) 
rspec-expectations (2.6.0) 
rspec-mocks (2.6.0) 
rspec-rails (2.6.1) 
spork (0.9.0.rc8) 
ZenTest (4.5.0) 

Moja .autotest file:

module Autotest::Notify 
    def self.notify title, msg, img, pri='low', time=3000 
    `notify-send -i #{img} -u #{pri} -t #{time} '#{msg}'` 
    end 

    Autotest.add_hook :ran_command do |autotest| 
    results = [autotest.results].flatten.join("\n") 
    output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/) 
    folder = "~/.autotest_icons/" 
    if output =~ /[1-9]\d*\sfailures?/ 
     notify "FAIL:", "#{output}", folder+"failed.png", 'critical', 10000 
    elsif output =~ /[1-9]\d*\spending?/ 
     notify "PENDING:", "#{output}", folder+"pending.png", 'normal', 10000 
    else 
     notify "PASS:", "#{output}", folder+"passed.png" 
    end 
    end 
end 

Uwaga: Większość moich .autotest pliku było dostać wyskakujące okienka działa w Linuksie, aby wyświetlić jeśli moje testy przechodzą lub w braku.

Poszukiwałem odpowiedzi na ten problem przez jakiś czas i nie miałem szczęścia i bardzo ciężko było mi zdobyć dobrą dokumentację do autotestu. Wpatrywałem się w RDoc dla Zentest od dłuższego czasu i muszę po prostu czegoś przegapić.

Każda pomoc, linki do przykładów itp. Byłyby mile widziane.

+1

Zastanawiam się, czy plik '.autotest' robi coś, co powoduje, że autotest jest rekurencyjny. Próbowałbym usunąć możliwe przyczyny po jednym na raz. Na przykład usuń 'spork' z miksu, uruchom autotest ze znanym błędem i sprawdź, czy działa dalej. Jeśli tak, przenieś tymczasowo plik '.autotest', działający efektywnie bez pliku' .autotest' i spróbuj ponownie. Ilekroć wpadam w nieoczywisty problem, próbuję przejść łańcuch logiczny i wprowadzać niewielkie zmiany, dopóki nie będę w stanie wyizolować problemu. – Midwire

+1

PS: Autotest nie powinien prowadzić testów po zmianie kodu. Powinien uruchomić testy, których dotyczy problem, złożyć wyniki (zielony lub czerwony), a następnie zatrzymać i poczekać na kolejne zmiany. Coś w twojej konfiguracji powoduje tę anomalię. – Midwire

+0

Dzięki za odpowiedź. Szczerze mówiąc problem wydaje się dość przypadkowy. Już od jakiegoś czasu korzystam z tej samej konfiguracji, a autotest ponownie uruchomi testy tylko raz na jakiś czas (może 1/10 razy). Naprawdę nie mogę znaleźć związku między testami, które prowadzę, a dziwnym autotestem, ale będę próbować dalej. Dzięki za twoją radę i jeśli dostanę ostateczną odpowiedź, to ją opublikuję. Moim głównym problemem jest to, że za każdym razem, gdy myślę, że to naprawiłem, kończy się to samo, ale rzadziej. –

Odpowiedz

4

miałem ten sam problem i okazało się, że mój serwer rozwój był na zapisywanie do pliku logu. Po dodaniu tego do mojego pliku .autotest problem zniknął:

Autotest.add_hook :initialize do |at| 
    at.add_exception(%r{^\./\.git}) 
    at.add_exception(%r{^\./log}) 
end 
1

Widziałem podobny problem z ZenTest, kiedy miałem klejnot, który zapisywał dane do katalogu, który monitorował ZenTest. IIRC, był to klejnot, który przeszukał pełne teksty - plik indeksu, który wygenerował wynik, uruchomił ZenTest, aby ponownie uruchomić, tym samym regenerując indeks.

Wyśledziłem problem, modyfikując powiadomienia Growl, aby poinformować mnie, które pliki wyzwoliły uruchomienie autotestu (w tym czasie działałem na komputerze Mac).

Rozwiązaniem było dodanie wyjątku/wykluczenia do pliku .autotest, aby nakazać mu zignorowanie indeksu.

(Właśnie widziany: Spork is repeatedly re-running failing tests in autotest który brzmi bardzo podobnie do swojego problemu)

Powiązane problemy