Testing Files Generator
Türkçe

CI hattında test dosyaları nasıl üretilir

Bir depodaki ikili fixture sonsuza dek geçmişinde kalır, bir diff'te incelenemez ve dosya büyüdüğünde olanaksız hale gelir. Bunun yerine dosyaları hat içinde bir tariften üretin. Tarif metindir, baytlar her seferinde aynı çıkar ve son bir adım hiçbir şeyin kaymadığını kanıtlar.

Kısa yanıt

tfg'yi kurun, testlerden önce tfg generate fixtures.yaml --out ./fixtures, sonra tfg verify ./fixtures/manifest.json çalıştırın. Her iki adım da derlemeyi kendiliğinden başarısız kılar ve nedenini söyleyen bir çıkış koduyla bunu yapar.

Neden commit edilmez

Bir fixture neden depoda durmamalı

Commit edilecek olan tariftir. Aynı tarif ve aynı tohum her makinede aynı baytları yazar, bu yüzden hatta üretilen dosya dizüstünüzde sahip olduğunuz dosyadır.

Tarif

Testlerin yanında duran bir tarif

Bu tarif, kabul edilmesi gereken yirmi beş fatura ile bir sınırın üzerinde olup reddedilmesi gereken iki görüntü yazar ve bildirim iki beklentiyi de kaydeder:

version: 1
seed: 7741

targets:
  - id: invoices
    format: pdf
    count: 25
    size: 300kb
    expected: accept

  - id: over_the_limit
    format: png
    count: 2
    size: 12mb
    expected:
      outcome: reject
      reason: size_limit

tfg validate fixtures.yaml onu hiçbir şey yazmadan denetler ve tüm sorunları tek seferde adlandırır.

GitHub Actions

Aracı kuran ve fixture'ları oluşturan bir iş akışı

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      TFG_VERSION: "0.4.0"
    steps:
      - uses: actions/checkout@v4

      - name: install tfg
        run: |
          base=https://github.com/donislawdev/TestingFilesGenerator/releases/download/v$TFG_VERSION
          curl -fsSLO "$base/tfg_${TFG_VERSION}_linux_amd64.tar.gz"
          curl -fsSLO "$base/verify-SHA256SUMS.txt"
          sha256sum --check --ignore-missing verify-SHA256SUMS.txt
          tar -xzf "tfg_${TFG_VERSION}_linux_amd64.tar.gz" ./tfg
          sudo mv tfg /usr/local/bin/

      - name: build the fixtures
        run: tfg generate fixtures.yaml --out ./fixtures

      - name: run the tests
        run: pytest tests/

      - name: nothing moved
        run: tfg verify ./fixtures/manifest.json

Sağlama toplamı satırı arşivi aynı sürümdeki verify-SHA256SUMS.txt ile karşılaştırır. Sürüm sabitlenmiştir, bu yüzden yeni bir sürüm dokunmadığınız bir derlemeyi asla değiştirmez.

GitLab CI

Aynısı bir GitLab işi olarak

fixtures:
  image: ubuntu:24.04
  variables:
    TFG_VERSION: "0.4.0"
  script:
    - apt-get update -qq && apt-get install -y -qq curl ca-certificates
    - base=https://github.com/donislawdev/TestingFilesGenerator/releases/download/v$TFG_VERSION
    - curl -fsSLO "$base/tfg_${TFG_VERSION}_linux_amd64.tar.gz"
    - curl -fsSLO "$base/verify-SHA256SUMS.txt"
    - sha256sum --check --ignore-missing verify-SHA256SUMS.txt
    - tar -xzf "tfg_${TFG_VERSION}_linux_amd64.tar.gz" ./tfg
    - ./tfg generate fixtures.yaml --out ./fixtures
    - pytest tests/
    - ./tfg verify ./fixtures/manifest.json

Kırmızıya döndüğünde

Bir adımı ne başarısız kılar ve neden

Her sonun kendi çıkış kodu vardır, bu yüzden adım kendiliğinden başarısız olur ve günlük hangisi olduğunu söyler. Bir hattın karşılaştıkları:

Başarısız bir çalıştırma standart çıktıya hiçbir şey yazmaz, bu yüzden bir günlük ayrıştırıcısı hatayı asla veri sanmaz. Tablonun tamamı belgeler sayfasında.

PowerShell

Bir PowerShell betiği bir satır daha ister

PowerShell, bir programın çıkış kodunu bir .ps1 dosyasının dışına taşımaz. Birini -File ile çalıştırın. İçindeki araç işi reddetse bile betik 0 yanıtı verir ve kırmızı olması gereken bir derleme yeşile döner. Son satır düzeltmenin tamamıdır:

tfg generate fixtures.yaml --out ./fixtures
exit $LASTEXITCODE

PowerShell böyle davranır, bu aracla ilgili bir şey değildir. cmd, bash ve zsh fazladan hiçbir şeye gerek duymaz.

Birkaç iş

Fixture'ları işler arasında paylaşmak

Genellikle yüklemeye gerek yoktur. Aynı tarif aynı baytları yazdığı için her iş kendi tfg generate komutunu çalıştırabilir ve bu, yükleyip indirmekten daha hızlıdır. Bir işin başka bir işten dosya alması gerekiyorsa, aktarımdan sonra bildirim üzerinde tfg verify çalıştırın. Gelenin yazılanla aynı olup olmadığını söyler.

Sonraki

Buradan nereye gidilir