man/dev_and_programming
man · Geliştirme & Programlama

$ prove

Bölüm 1 · Geliştirme & Programlama

Testleri bir TAP harness'ı aracılığıyla çalıştırır.

Kullanım

prove [seçenekler] [dosyalar veya dizinler]

Seçenekler

Mantıksal (Boolean) seçenekler:

-v, --verbose Tüm test satırlarını yazdırır. -l, --lib Testleriniz için yola 'lib' dizinini ekler (-Ilib). -b, --blib Testleriniz için yola 'blib/lib' ve 'blib/arch' yolunu ekler -s, --shuffle Testleri rastgele sırayla çalıştırır. -c, --color Renkli test çıktısı (varsayılan).

  • --nocolor: Test çıktısını renklendirmez.
  • --count: Ayrıntılı (verbose) modda değilken X/Y test sayısını gösterir (varsayılan)
  • --nocount: X/Y test sayısını devre dışı bırakır. -D --dry Simülasyon (dry run). Çalıştırılacak olan testi gösterir. -f, --failures Başarısız testleri gösterir. -o, --comments Yorumları gösterir.
  • --ignore-exit: Test betiklerinin çıkış durumunu yoksayar. -m, --merge Test betiklerinin STDERR akışını STDOUT akışıyla birleştirir. -r, --recurse Dizinlerin içine özyinelemeli (recursive) olarak iner.
  • --reverse: Testleri ters sırayla çalıştırır. -q, --quiet Testler çalıştırılırken bazı test çıktılarını gizler. -Q, --QUIET Yalnızca özet sonuçları yazdırır. -p, --parse Varsa TAP ayrıştırma (parse) hatalarının tam listesini gösterir.
  • --directives: Yalnızca TODO veya SKIP yönergelerine (directives) sahip sonuçları gösterir.
  • --timer: Her testten sonra geçen süreyi yazdırır.
  • --trap: Ctrl-C sinyalini yakalar ve kesinti durumunda özet yazdırır.
  • --normalize: Ayrıntılı (verbose) çıktıda TAP çıktısını normalleştirir -T Bulaşma (taint) kontrollerini etkinleştirir.

-t Bulaşma (taint) uyarılarını etkinleştirir. -W Ölümcül (fatal) uyarıları etkinleştirir. -w Uyarıları etkinleştirir. -h, --help Bu yardımı görüntüler -?, Bu yardımı görüntüler -V, --version Sürümü görüntüler -H, --man prove için daha uzun kılavuz (man) sayfası gösterir

  • --norc: Varsayılan .proverc dosyasını işlemez

Argüman alan seçenekler:

-I Dahil edilecek kütüphane yolları. -P Eklenti yükler (App::Prove::Plugin::* altında arar.) -M Bir modül yükler. -e, --exec Testleri çalıştıracak yorumlayıcı (derlenmiş testler için ''.)

  • --ext: Testler için uzantıyı ayarlar (varsayılan '.t')
  • --harness: Kullanılacak test harness'ını tanımlar. Bkz. TAP::Harness.
  • --formatter: Kullanılacak sonuç biçimlendiriciyi (formatter) tanımlar. Bkz. FORMATTERS.
  • --source: Bir SourceHandler yükler ve/veya yapılandırır. Bkz. SOURCE HANDLERS. -a, --archive out.tgz Elde edilen TAP çıktısını bir arşiv dosyasında saklar. -j, --jobs N N adet test işini paralel olarak çalıştırır (9 deneyin.)
  • --state=opts: prove'un kalıcı durumunu (persistent state) kontrol eder.
  • --statefile=file: Durum için .prove yerine file dosyasını kullanır
  • --rc=rcfile: Seçenekleri rcfile dosyasından işler
  • --rules: Paralel ve sıralı (sequential) işlemeye yönelik kurallar.

Notlar

.proverc Eğer ~/.proverc veya ./.proverc mevcutsa, bunlar okunur ve içerdikleri seçenekler komut satırı seçeneklerinden önce işlenir. .proverc dosyasındaki seçenekler, komut satırı seçenekleriyle aynı şekilde belirtilir:

.proverc

--state=hot,fast,save -j9

Ek seçenek dosyaları "--rc" seçeneği ile belirtilebilir. Varsayılan seçenek dosyası işleme, "--norc" seçeneği ile devre dışı bırakılır.

Windows ve VMS altında seçenek dosyası .proverc yerine _proverc olarak adlandırılır ve yalnızca geçerli dizinde aranır.

"STDIN" üzerinden Okuma Eğer bir dosyada testlerin (veya URL'lerin ya da test etmek istediğiniz herhangi bir şeyin) listesi varsa, bir '-' kullanarak bunları testlerinize ekleyebilirsiniz:

prove - < my_list_of_things_to_test.txt

Bu dağıtımın "examples" dizinindeki "README" dosyasına bakın.

Varsayılan Test Dizini Herhangi bir dosya veya dizin sağlanmazsa, "prove" "t/*.t" şablonuyla eşleşen tüm dosyaları arar.

Renkli Test Çıktısı TAP::Formatter::Color kullanan renkli test çıktısı varsayılandır, ancak çıktı bir terminale yapılmıyorsa renk devre dışı bırakılır. Bu davranışı "--color" anahtarını ekleyerek geçersiz kılabilirsiniz.

Renk desteği Term::ANSIColor ve Windows platformlarında ayrıca Win32::Console::ANSI gerektirir. Gerekli modül(ler) kurulu değilse renkli çıktı kullanılamayacaktır.

Çıkış Kodu Testler başarısız olursa "prove" sıfır olmayan bir durumla çıkış yapacaktır.

Testlere Verilecek Argümanlar Testlere argüman sağlamak mümkündür. Bunu yapmak için, bunları prove'un kendi argümanlarından arisdottle ('::') ile ayırın. Örneğin:

prove -v t/mytest.t :: --url http://example.com

komutu, t/mytest.t testini '--url http://example.com' seçenekleriyle çalıştırır. Birden fazla test çalıştırıldığında, her biri aynı argümanları alacaktır.

"--exec" Normal şartlarda sadece Perl testlerinin bir listesini geçebilirsiniz ve harness bunları nasıl çalıştıracağını bilecektir. Ancak testleriniz Perl ile yazılmamışsa veya tüm testlerin tam olarak aynı şekilde çağrılmasını istiyorsanız, "-e" veya "--exec" anahtarını kullanın:

prove --exec '/usr/bin/ruby -w' t/ prove --exec '/usr/bin/perl -Tw -mstrict -Ilib' t/ prove --exec '/path/to/my/customer/exec'

"--merge" Teşhis (diagnostics) iletilerinizin test sonuçlarına göre doğru sırada görüntülendiğinden emin olmak istiyorsanız, test betiklerinin STDERR akışını STDOUT akışıyla birleştirmek için "--merge" seçeneğini kullanabilirsiniz.

Bu, STDOUT (test sonuçlarının göründüğü yer) ile STDERR (teşhis iletilerinin göründüğü yer) akışlarının senkronize kalmasını garanti eder. Harness, testlerinizin STDERR üzerinde verdiği tüm teşhis iletilerini görüntüleyecektir.

Uyarı: Bu yöntem biraz geçici bir çözüm (kludge) niteliğindedir. Özellikle, STDERR üzerinde görünen herhangi bir şey test sonucuna benziyorsa test harness'ının kafasının karışacağını unutmayın. Bu seçeneği yalnızca sonuçlarını anlıyorsanız ve riski göze alabiliyorsanız kullanın.

"--trap" "--trap" seçeneği, bir test çalışması sırasında SIGINT (Ctrl-C) sinyalini yakalamaya çalışır ve çalışma kesintiye uğrasa bile test özetini görüntüler.

"--state" "prove"dan önceki test çalışmalarının durumunu hatırlamasını isteyebilir ve çalıştırılacak testleri bu kaydedilmiş duruma göre seçebilir ve/veya sıralayabilirsiniz.

"--state" anahtarı, aşağıdaki seçeneklerden bir veya daha fazlasının virgülle ayrılmış bir listesi olması gereken bir argüman gerektirir.

"last" Durumun en son kaydedildiği zamanki testlerin aynısını çalıştırır. Bu, örneğin rastgele karıştırılmış (shuffled) bir testin sıralamasını yeniden oluşturmayı mümkün kılar.

Tüm testleri rastgele sırayla çalıştır

$ prove -b --state=save --shuffle

Bunları aynı sırayla tekrar çalıştır

$ prove -b --state=last

"failed" Yalnızca son çalışmada başarısız olan testleri çalıştırır.

Tüm testleri çalıştır

$ prove -b --state=save

Başarısız olanları çalıştır

$ prove -b --state=failed

Eğer "save" seçeneğini de belirtirseniz, yeni başarılı olan testler sonraki çalışmalardan hariç tutulacaktır.

Başarısızlık kalmayana kadar tekrarla

$ prove -b --state=failed,save

"passed" Yalnızca geçen sefer başarılı olan testleri çalıştırır. Yeni bir sorunun ortaya çıkmadığından emin olmak için kullanışlıdır.

"all" Tüm testleri normal sırayla çalıştırır. Birden fazla seçenek belirtilebilir; bu sayede tüm testleri, geçen seferki başarısız olanlar ilk sırada olacak şekilde çalıştırmak için:

$ prove -b --state=failed,all,save

"hot" En son başarısız olan testleri ilk sırada çalıştırır. Her testin son başarısızlık zamanı saklanır. "hot" seçeneği, testlerin en son başarısız olma sırasına göre çalıştırılmasını sağlar.

$ prove -b --state=hot,save

Hiç başarısız olmamış testler seçilmeyecektir. En son başarısız olanlar ilk sırada olacak şekilde tüm testleri çalıştırmak için şunu kullanın:

$ prove -b --state=hot,all,save

Bu seçenek kombinasyonu şu şekilde de belirtilebilir:

$ prove -b --state=adrian

"todo" Yapılacaklar (todo) içeren tüm testleri çalıştırır.

"slow" Testleri en yavaştan en hızlıya doğru çalıştırır. Bu seçenek, en yavaş testlerinizin ilk önce çalışmaya başlamasını sağlamak için "-j" paralel test anahtarı ile birlikte kullanımda faydalıdır.

$ prove -b --state=slow -j9

"fast" Testleri en hızlıdan en yavaşa doğru çalıştırır.

"new" Test betiklerinin değiştirilme zamanlarına göre testleri en yeniden en eskiye doğru çalıştırır.

"old" Testleri en eskiden en yeniye doğru çalıştırır.

"fresh" Son test çalışmasından bu yana değiştirilmiş olan test betiklerini çalıştırır.

"save" Çıkışta durumu kaydeder. Durum, geçerli dizinde .prove (Windows ve VMS üzerinde _prove) adında bir dosyada saklanır.

"--state" anahtarı birden fazla kez kullanılabilir.

$ prove -b --state=hot --state=all,save

--rules "--rules" seçeneği, "--jobs" seçeneği belirtildiğinde hangi testlerin sıralı (sequential) hangilerinin paralel çalıştırılacağını kontrol etmek için kullanılır. Bu seçenek birden fazla kez belirtilebilir ve sırası önemlidir.

En pratik kullanım, muhtemelen bazı testlerin "paralel çalışmaya hazır" (parallel-ready) olmadığını belirtmek olacaktır. --rules ile bir dosyadan bahsetmek o dosyanın test olarak çalıştırılmak üzere seçilmesine neden olmadığından, .proverc dosyanızda bazı kural tercihlerini "ayarla ve unut" şeklinde tanımlayabilirsiniz. Böylece, bazı istisnalar yine de paralel çalıştırılırken, paralel testin performans avantajlarından maksimum düzeyde yararlanabilirsiniz.

--rules örnekleri

"p" ile başlayanlar hariç tüm testlerin paralel çalışmasına izin verilir

--rules='seq=t/p*.t' --rules='par=**'

"p" ile başlayanlar hariç tüm testler sıralı çalışmalıdır, "p" ile başlayanlar ise paralel çalıştırılmalıdır

--rules='par=t/p*.t'

--rules çözümlemesi

• Varsayılan olarak, tüm testler paralel çalıştırılmaya uygundur. Kendi kurallarınızdan herhangi birini belirtmek bu varsayılanı kaldırır.

• "İlk eşleşen kazanır". Bir testle eşleşen ilk kural, uygulanan kural olacaktır.

• Bir kuralla eşleşmeyen tüm testler, çalışmanın sonunda sıralı olarak çalıştırılacaktır.

• Bir kuralın varlığı, bir testin seçildiği anlamına gelmez. Çalıştırılacak testleri yine de belirtmeniz gerekir.

• Testlerin paralel çalışmasına izin veren bir kural belirtmek, onları paralel çalıştırmaz. Harness nesnenizde paralel "iş" (jobs) sayısını yine de belirtmeniz gerekir.

--rules Glob tarzı desen eşleştirme

--rules için kendi glob tarzı desen eşleştirmemizi uyguluyoruz. Desteklenen desenler şunlardır:

** bir yol adı (pathname) içindeki / dahil herhangi bir sayıda karakterdir

  • bir dosya/dizin adı içindeki sıfır veya daha fazla karakterdir ? bir dosya/dizin adı içindeki tam olarak tek bir karakterdir {foo,bar,baz} foo, bar veya baz seçeneklerinden herhangi biridir. \ bir kaçış (escape) karakteridir

Paralel ve sıralı çalışma kuralları için daha gelişmiş belirtimler

Nelerin paralel, nelerin sıralı çalıştırılacağı konusunda daha gelişmiş bir yönetime ihtiyaç duyuyorsanız, TAP::Harness ve TAP::Parser::Scheduler içindeki ilgili 'rules' belgelerine bakın. Doğrudan "prove" aracılığıyla yapılabilenler yeterli değilse, bu özelliklere doğrudan erişmek için kendi harness'ınızı yazabilirsiniz.

@INC prove, "prove'u çalıştıran perl'e geçirilen seçenekler" ile "testleri çalıştıran perl'e geçirilen seçenekler" arasında bir ayrım getirir; bu ayrım tasarım gereğidir. Dolayısıyla, bir testi çalıştıran perl varsayılan @INC ile başlar. Ek kütüphane dizinleri "PERL5LIB" ortam değişkeni aracılığıyla, "PERL5OPT" içindeki -Ifoo aracılığıyla veya prove'a verilen "-Ilib" seçeneği aracılığıyla eklenebilir.

Bulaşma (Taint) Modu Normalde bir Perl programı bulaşma (taint) modunda çalıştırıldığında, "PERL5LIB" ortam değişkeninin içeriği @INC içinde görünmez.

"PERL5LIB" test sırasında derleme dizinlerini @INC'ye eklemek için sıklıkla kullanıldığından, prove "PERL5LIB" içinde bulunan tüm dizinlerin adlarını -I anahtarları olarak geçirir. Bunun net etkisi, prove bulaşma modunda çalıştırıldığında bile "PERL5LIB" değişkenine saygı gösterilmesidir.

Biçimlendiriciler (Formatters)

Özel bir TAP::Parser::Formatter yükleyebilirsiniz:

prove --formatter MyFormatter

Kaynak İşleyiciler (Source Handlers)

Ayrıştırıcının (parser) belirli TAP kaynaklarını yorumlama şeklini değiştirmek için özel TAP::Parser::SourceHandlers yükleyebilirsiniz.

prove --source MyHandler --source YetAnother t

Kaynağa yapılandırma sağlamak istiyorsanız şunu kullanabilirsiniz:

prove --source MyCustom
--source Perl --perl-option 'foo=bar baz' --perl-option avg=0.278
--source File --file-option extensions=.txt --file-option extensions=.tmp t --source pgTAP --pgtap-option pset=format=html --pgtap-option pset=border=2

Her "--$source-option" seçeneği, "=" ile ayrılmış bir anahtar/değer çifti belirtmelidir. Bir seçenek birden fazla değer alabiliyorsa, yukarıdaki "extensions=" örneklerinde olduğu gibi bunu birden fazla kez belirtmeniz yeterlidir. Seçeneğin bir hash referansı olması gerekiyorsa, yukarıdaki "pset=" örneklerinde olduğu gibi değeri "=" ile ayrılmış ikinci bir çift olarak belirtin (ters eğik çizgiyle kaçırılmış "=").

Tüm "--sources" seçenekleri bir hash içinde birleştirilir ve TAP::Harness'ın "sources" parametresindeki "new" metoduna geçirilir.

Yapılandırmanın SourceHandlers'a nasıl geçirildiği hakkında daha fazla ayrıntı için TAP::Parser::IteratorFactory sayfasına bakın.

Eklentiler (Plugins)

Eklentiler "-Peklenti" söz dizimi kullanılarak yüklenebilir, örneğin:

prove -PMyPlugin

Bu otomatik olarak "App::Prove::Plugin::MyPlugin" adında bir modül arayacak, bulamazsa "MyPlugin" adını arayacaktır. Eklenti bulunamazsa "prove" şikayet edecek ve çıkış yapacaktır.

Eklenti adının sonuna "=arg1,arg2,vb." ekleyerek eklentinize argümanlar geçirebilirsiniz:

prove -PMyPlugin=fou,du,fafa

Daha fazla ayrıntı için lütfen ilgili eklenti belgelerini kontrol edin.

Mevcut Eklentiler Mevcut eklentilerin güncel bir listesi için lütfen CPAN'ı kontrol edin:

http://search.cpan.org/search?query=App%3A%3AProve+Plugin

Eklenti Yazma Lütfen App::Prove içindeki "PLUGINS" bölümüne bakın.