123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- use strict;
- use warnings;
- use Test::More "tests" => 32;
- use Test::Fatal;
- use FindBin;
- use Capture::Tiny qw{capture_merged};
- use lib $FindBin::Bin.'/../bin';
- require 'testrail-tests';
- use lib $FindBin::Bin.'/lib';
- use Test::LWP::UserAgent::TestRailMock;
- #check plan mode
- my @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{-m t --config testConfig --no-recurse});
- my ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{--no-match t --config testConfig });
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{--no-match t --config testConfig --no-recurse});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{--config testConfig -m t });
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -r TestingSuite -m t --no-recurse});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -r TestingSuite -m t });
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{-m t --config testPlatform1});
- isnt(exception {TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args)}, undef, "Exit code not OK when passing invalid configs for plan");
- #check assignedto filters
- @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{ --config testConfig --assignedto teodesian});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 0, "Exit code OK when filtering by assignment");
- like($out,qr/skipall\.test$/,"Gets test correctly when filtering by assignment");
- @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{ --config testConfig --assignedto billy});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 255, "Exit code OK when filtering by assignment");
- chomp $out;
- is($out,"","Gets no tests correctly when filtering by wrong assignment");
- #check status filters
- @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{-m t --config testConfig --status passed});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 0, "Exit code OK when filtering by status");
- like($out,qr/skipall\.test$/,"Gets test correctly when filtering by status");
- @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -p GosPlan -r}, "Executing the great plan", qw{ --config testConfig --status failed});
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 255, "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 = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -r TestingSuite });
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 0, "Exit code OK running no plan mode, no-match");
- chomp $out;
- like($out,qr/\nskipall\.test$/,"Gets test correctly in no plan mode, no-match");
- #Verify no-match returns non path
- @args = (qw{--apiurl http://testrail.local --user test@fake.fake --password fake -j TestProject -r TestingSuite --orphans t });
- ($out,$code) = TestRail::Bin::Tests::run('browser' => $Test::LWP::UserAgent::TestRailMock::mockObject, 'args' => \@args);
- is($code, 0, "Exit code OK running no plan mode, no recurse");
- chomp $out;
- like($out,qr/NOT SO SEARED AFTER ARR/,"Gets test correctly in orphan mode");
- #Verify no-match returns non path
- @args = qw{--help};
- $0 = $FindBin::Bin.'/../bin/testrail-tests';
- ($out,(undef,$code)) = capture_merged {TestRail::Bin::Tests::run('args' => \@args)};
- is($code, 0, "Exit code OK asking for help");
- like($out,qr/encoding of arguments/i,"Help output OK");
- #Make sure that the binary itself processes args correctly
- $out = `$^X $0 --help`;
- like($out,qr/encoding of arguments/i,"Appears we can run binary successfully");
|