გადადით შინაარსზე

Rust-ის არასტაბილური ტესტები

Tuist-ს შეუძლია აღმოაჩინოს Cargo-ს ტესტების არათანმიმდევრული შედეგები და დაგეხმაროთ მათ გამოკვლევაში ტესტები → არასტაბილური ტესტები-ში.

Requirements

როგორ მუშაობს არასტაბილურობის აღმოჩენა#

Tuist ადარებს CI-ის გაშვებებს ერთსა და იმავე კომიტზე. ტესტი, რომელიც ერთ გაშვებაში გადის, ხოლო მეორეში ვერ გადის, შეიძლება მონიშნულ იქნას როგორც არასტაბილური.

ყოველი გაშვების შესახებ მოახსენეთ ჩვეულებრივი ბრძანებით:

bash
tuist cargo test --workspace

Cargo ავტომატურად არ ცდის წარუმატებელ ტესტებს ხელახლა. იმავე კომიტზე CI სამუშაოს ხელახლა გაშვება იძლევა კიდევ ერთ შედეგს ჯვარედინი აღმოჩენისთვის.

არასტაბილური ტესტების მართვა#

ავტომატური გასუფთავება#

აღმოჩენა და აღდგენა მიმდინარეობს პროექტის „არასტაბილური ტესტების აღმოჩენის“ ავტომატიზაციით. ნაგულისხმევად, არასტაბილურობის ნიშანი ქრება 14 დღის შემდეგ, თუ ის ხელახლა არ გამოწვეულა. შეცვალეთ აღდგენის ფანჯარა და მოქმედებები განყოფილებაში პარამეტრები → ავტომატიზაციები.

ხელით მართვა#

გახსენით ტესტები → არასტაბილური ტესტები ტესტის ისტორიის შესასწავლად. შეგიძლიათ ხელით მონიშნოთ ან მოხსნათ მონიშვნა არასტაბილურად მის დეტალურ გვერდიდან.

კარანტინში მოთავსება და სტრეს-ტესტირება#

შეაჩერეთ ან გამოტოვეთ ტესტი მისი დეტალური გვერდიდან, ან დააკონფიგურირეთ კარანტინი განყოფილებაში პარამეტრები → ავტომატიზაციები. შემდეგი tuist cargo test იღებს პროექტის მიმდინარე კარანტინის მდგომარეობას:

  • შეჩერებული ტესტები მაინც გაეშვება და აჩვენებს რეალურ შედეგებს, მაგრამ მათი წარუმატებლობა არ აჩერებს ბრძანებას. სხვა ტესტების წარუმატებლობები, კომპილაციის შეცდომები, კრახები და არასრული შედეგები მაინც იწვევს ჩავარდნას ჩვეულებრივად.
  • გამოტოვებული ტესტები გამოირიცხება შესრულებიდან და მოხსენებულია როგორც კარანტინში მოთავსებული გამოტოვებები. შესაბამისობა მოიცავს პაკეტს, მიზანს, Rust-ის მოდულის გზას და ტესტის სახელს, ამიტომ მსგავსად სახელდარქმეული ტესტები დამოუკიდებელი რჩება.

შეჩერება ინარჩუნებს შერჩეულ workspace პაკეტებსა და ფუნქციებს და ასრულებს ყველა შერჩეულ მიზანს მაშინაც კი, თუ შეჩერებული მიზანი ჩავარდება. გამოტოვების კარანტინი მოითხოვს ერთ შერჩეულ პაკეტს: გამოიყენეთ tuist cargo test -p store მრავალპაკეტიანი workspace ბრძანების ნაცვლად. Tuist უარყოფს მრავალპაკეტიან გამოტოვებას, რადგან ბრძანების შევიწროვებამ შეიძლება შეცვალოს Cargo-ს გაერთიანებული დამოკიდებულების ფუნქციები.

კარანტინი ასევე ვრცელდება დაყოფილ Cargo გაშვებებზე. თუ Tuist-ს არ შეუძლია მდგომარეობის მიღება, ის აჩვენებს გაფრთხილებას და ასრულებს კარანტინის გარეშე; წარუმატებლობები არ ითრგუნება. განზრახ კარანტინის გარეშე გასაშვებად:

bash
TUIST_TEST_SKIP_QUARANTINE=1 tuist cargo test --workspace

აღსრულება მოითხოვს სტანდარტულ libtest harness-ებს და დაჭერილ ნაგულისხმევ გამომავალ მონაცემებს. ბრძანებები ჩუმ, verbose, ალტერნატიული ფორმატის ან არადაჭერილი გამომავალი მონაცემებით ჩავარდება, როდესაც კარანტინის გამოყენებაა საჭირო. აირჩიეთ ზუსტი workspace პაკეტი -p <package>-ით, თუ მიზნის მინიჭება ორაზროვანია. მორგებული harness-ები, პაკეტის/მიზნის სახელის გლობები და გადაუწყვეტელი პაკეტის შერჩევები არ არის მხარდაჭერილი. Doctest-ებიც შეიძლება შეჩერდეს ან გამოიტოვოს, მაგრამ Rustdoc-ის ტესტის ფილტრაციას არ შეუძლია ყოველი შესაძლო მაგალითის სახელთა წყვილის გარჩევა. თუ მაგალითის გამოტოვება ასევე გამოტოვებდა ჩართულ მაგალითს, ან ნაწილობრივი doctest-ის გამორიცხვა იყენებს --exact, Tuist ჩავარდება დიაგნოსტიკით შერჩეული მაგალითის შესრულების ან ჩართული ტესტების ჩუმად გამოტოვების ნაცვლად; გამოიყენეთ ზემოთ მოცემული გადაფარვა გამოკვლევისას.

Tuist არ ატარებს სტრეს-ტესტირებას ახალ Cargo ტესტებზე. გამოიყენეთ Cargo ტესტის ფილტრი წარუმატებელი ტესტის გამეორებისთვის მისი გამოკვლევისას:

bash
tuist cargo test -p store rejects_invalid_token

Slack შეტყობინებები#

დააკონფიგურირეთ Slack არასტაბილური ტესტების გაფრთხილებები, რათა შეატყობინოთ თქვენს გუნდს, როდესაც ტესტი ხდება არასტაბილური.