use strict; use warnings; use Test::More "tests" => 32; #check plan mode my @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" -m t --config testConfig --mock --no-recurse}); my $out = `@args`; is($? >> 8, 0, "Exit code OK running plan mode, no recurse"); chomp $out; like($out,qr/skipall\.test$/,"Gets test correctly in plan mode, no recurse"); #check no-match @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --no-match t --config testConfig --mock}); $out = `@args`; is($? >> 8, 0, "Exit code OK running plan mode, no match"); chomp $out; unlike($out,qr/skipall\.test/,"Omits test correctly in plan mode, recurse, no-match"); unlike($out,qr/NOT SO SEARED AFTER ARR/,"Omits non-file test correctly in plan mode, recurse, no-match"); like($out,qr/faker\.test/,"Omits non-file test correctly in plan mode, recurse, no-match"); #check no-match, no recurse @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --no-match t --config testConfig --mock --no-recurse}); $out = `@args`; is($? >> 8, 0, "Exit code OK running plan mode, no match, no recurse"); chomp $out; unlike($out,qr/skipall\.test/,"Omits test correctly in plan mode, no recurse, no-match"); unlike($out,qr/NOT SO SEARED AFTER ARR/,"Omits non-file test correctly in plan mode, no recurse, no-match"); like($out,qr/faker\.test/,"Omits non-file test correctly in plan mode, no recurse, no-match"); @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --config testConfig -m t --mock}); $out = `@args`; is($? >> 8, 0, "Exit code OK running plan mode, recurse"); chomp $out; like($out,qr/skipall\.test$/,"Gets test correctly in plan mode, recurse"); #check non plan mode @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -r "TestingSuite" -m t --mock --no-recurse}); $out = `@args`; is($? >> 8, 0, "Exit code OK running no plan mode, no recurse"); chomp $out; like($out,qr/skipall\.test$/,"Gets test correctly in no plan mode, no recurse"); @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -r "TestingSuite" -m t --mock}); $out = `@args`; is($? >> 8, 0, "Exit code OK running no plan mode, recurse"); chomp $out; like($out,qr/skipall\.test$/,"Gets test correctly in no plan mode, recurse"); #Negative case, filtering by config @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" -m t --mock --config testPlatform1}); $out = `@args`; isnt($? >> 8, 0, "Exit code not OK when passing invalid configs for plan"); chomp $out; like($out,qr/no such run/i,"Gets test correctly in plan mode, recurse"); #check assignedto filters @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --mock --config "testConfig" --assignedto teodesian}); $out = `@args`; is($? >> 8, 0, "Exit code OK when filtering by assignment"); like($out,qr/skipall\.test$/,"Gets test correctly when filtering by assignment"); @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --mock --config "testConfig" --assignedto billy}); $out = `@args`; is($? >> 8, 0, "Exit code OK when filtering by assignement"); chomp $out; is($out,"","Gets no tests correctly when filtering by wrong assignment"); #check status filters @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" -m t --mock --config "testConfig" --status "passed"}); $out = `@args`; is($? >> 8, 0, "Exit code OK when filtering by status"); like($out,qr/skipall\.test$/,"Gets test correctly when filtering by status"); @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -p "GosPlan" -r "Executing the great plan" --mock --config "testConfig" --status "failed"}); $out = `@args`; is($? >> 8, 0, "Exit code OK when filtering by status"); chomp $out; is($out,"","Gets no tests correctly when filtering by wrong status"); #Verify no-match returns non path @args = ($^X,qw{bin/testrail-tests --apiurl http://testrail.local --user "test@fake.fake" --password "fake" -j TestProject -r "TestingSuite" --mock}); $out = `@args`; is($? >> 8, 0, "Exit code OK running no plan mode, no recurse"); chomp $out; like($out,qr/\nskipall\.test$/,"Gets test correctly in no plan mode, no recurse"); #Verify no-match returns non path @args = ($^X,qw{bin/testrail-tests --help}); $out = `@args`; is($? >> 8, 0, "Exit code OK asking for help"); like($out,qr/usage/i,"Help output OK"); #Verify no-match and match are mutually exclusive @args = ($^X,qw{bin/testrail-tests --no-match t/ --match t/qa }); $out = `@args`; isnt($? >> 8, 0, "Exit code not OK asking for mutually exclusive match options"); like($out,qr/mutually exclusive/i,"Death message OK");