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

Rust ტესტების დაშლა

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

Requirements
  • მოახდინეთ კონფიგურაცია Rust Test Insights და გაიარეთ CLI-ის ავტორიზაცია დაგეგმვის სამუშაოზე და მუშაკებზე.
  • აირჩიეთ ერთი პაკეტი, გამოიყენეთ -p <package> სამუშაო სივრცეში. მრავალი პაკეტის დაშლა არ არის მხარდაჭერილი.
  • გამოიყენეთ იგივე რევიზია, Rust-ის ინსტრუმენტების ჯაჭვი, პაკეტის შერჩევა, ფუნქციები და ტესტის ფილტრები ყოველ სამუშაოში.

გეგმის შექმნა#

დაამატეთ ნაწილების რაოდენობა --no-run-ს, რათა მოახდინოთ კომპილაცია და ჩამოთვალოთ სამიზნეები ტესტების შესრულების გარეშე:

bash
TUIST_SHARD_REFERENCE=my-ci-run tuist cargo test -p store --no-run --shard-max 4

ბრძანება ბეჭდავს JSON-ს, რომელიც შეიცავს shard_plan_id-ს და ნულოვანი ინდექსაციის shards მასივს. GitHub Actions-ში, ის ასევე წერს shard-plan-id-ს და shards-ს GITHUB_OUTPUT-ში. ცალსახა მითითების გარეშე, Tuist იღებს მას მხარდაჭერილი CI გარემოდან.

პარამეტრიაღწერა
--shard-max Nნაწილების მაქსიმალური რაოდენობა
--shard-min Nნაწილების მინიმალური რაოდენობა
--shard-total Nზუსტი რაოდენობა, ხელმისაწვდომი სამიზნეების ფარგლებში
--shard-max-duration Nსამიზნე ნაწილის მაქსიმალური ხანგრძლივობა მილიწამებში

გამოიყენეთ --shard-total ცალკე ან გააერთიანეთ --shard-min და --shard-max. ისტორიული ხანგრძლივობების გარეშე, დამგეგმავი იყენებს სამიზნეების ნაგულისხმევ შეფასებებს. ჩვეულებრივი --no-run ნაწილების პარამეტრების გარეშე რჩება მხოლოდ აგების ბრძანებად.

ყოველი ნაწილის შესრულება#

დააყენეთ გეგმის ID და ნაწილის ინდექსი თითოეულ მუშაკზე, შემდეგ გამოიყენეთ იგივე Cargo ტესტის არგუმენტები:

bash
TUIST_SHARD_PLAN_ID=<plan-id> TUIST_SHARD_INDEX=0 tuist cargo test -p store

ალტერნატიულად, დააყენეთ TUIST_SHARD_REFERENCE დაგეგმვის სამუშაოს მითითებაზე გეგმის ID-ის გადაცემის ნაცვლად. Tuist იღებს განაწილებას და სთხოვს Cargo-ს შეასრულოს მხოლოდ ეს სამიზნეები. არასწორი ან შეუთავსებელი განაწილებები აუქმებს ბრძანებას ყველა ტესტის შესრულების ნაცვლად. ცარიელი განაწილებები არ ასრულებს ტესტებს. მუშაკების შედეგები დაკავშირებულია გეგმასთან Test Insights-ში და კარანტინი ვრცელდება თითოეულ ნაწილში.

შეზღუდვები#

ეს არის სამიზნე დონის დაშლა, არა ერთჯერადი აგების განაწილება. თითოეულ მუშაკს სჭირდება წყაროს კოდი და აგებს საკუთარ სამიზნეებს; Cargo კომპილაციის ქეში შეუძლია ხელახლა გამოიყენოს შესაბამისი კომპილაციის შედეგები. Tuist არ ტვირთავს ტესტის შესრულებად ფაილებს და არ ითხოვს სხვა Rust ტესტის გამშვებს.

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

დაშლა მოითხოვს სტანდარტულ libtest harness-ებს და ჩაჭერილ ნაგულისხმევ გამოტანას. ჩუმი, ვრცელი, ალტერნატიული ფორმატის, არაჩაჭერილი გამოტანის და მორგებული harness-ის ბრძანებები უარყოფილია. თუ Cargo ვერ ახდენს სამიზნის ცალსახა იდენტიფიცირებას, აირჩიეთ ზუსტი სამუშაო სივრცის პაკეტი -p <package>-ით. დამოკიდებულების პაკეტები, ვერსიით კვალიფიცირებული სელექტორები, პაკეტის/სამიზნის სახელის გლობები და Cargo-ს ღამის -C პარამეტრი არ არის მხარდაჭერილი დაშლისთვის. შეინარჩუნეთ ტესტის შერჩევა იდენტური დაგეგმვასა და შესრულებას შორის.