| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- #!/usr/bin/env perl
- use strict;
- use warnings;
- use Scalar::Util qw{reftype};
- use TestRail::API;
- use Test::LWP::UserAgent::TestRailMock;
- use Test::Rail::Parser;
- use Test::More 'tests' => 26;
- use Test::Fatal qw{exception};
- #Same song and dance as in TestRail-API.t
- my $apiurl = $ENV{'TESTRAIL_API_URL'};
- my $login = $ENV{'TESTRAIL_USER'};
- my $pw = $ENV{'TESTRAIL_PASSWORD'};
- my $is_mock = (!$apiurl && !$login && !$pw);
- ($apiurl,$login,$pw) = ('http://testrail.local','teodesian@cpan.org','fake') if $is_mock;
- my ($debug,$browser);
- $debug = 1;
- if ($is_mock) {
- $browser = $Test::LWP::UserAgent::TestRailMock::mockObject;
- }
- #test exceptions...
- #TODO
- #case_per_ok mode
- my $fcontents = "
- fake.test ..
- 1..2
- ok 1 - STORAGE TANKS SEARED
- #goo
- not ok 2 - NOT SO SEARED AFTER ARR
- ";
- my $tap;
- my $res = exception {
- $tap = Test::Rail::Parser->new({
- 'tap' => $fcontents,
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'TestingSuite',
- 'project' => 'TestProject',
- 'merge' => 1,
- 'case_per_ok' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- undef $tap;
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'source' => 't/fake.test',
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'TestingSuite',
- 'project' => 'TestProject',
- 'merge' => 1,
- 'case_per_ok' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- #Check that time run is being uploaded
- my $timeResults = $tap->{'tr_opts'}->{'testrail'}->getTestResults(1);
- if ( ( reftype($timeResults) || 'undef') eq 'ARRAY') {
- is( $timeResults->[0]->{'elapsed'}, '2s', "Plugin correctly sets elapsed time");
- } else {
- fail("Could not get test results to check elapsed time!");
- }
- #Check the time formatting routine.
- is(Test::Rail::Parser::_compute_elapsed(0,0),undef,"Elapsed computation correct at second boundary");
- is(Test::Rail::Parser::_compute_elapsed(0,61),'1m 1s',"Elapsed computation correct at minute boundary");
- is(Test::Rail::Parser::_compute_elapsed(0,3661),'1h 1m 1s',"Elapsed computation correct at hour boundary");
- is(Test::Rail::Parser::_compute_elapsed(0,86461),'24h 1m 1s',"Elapsed computation correct at day boundary");
- #Time for non case_per_ok mode
- undef $tap;
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'source' => 't/faker.test',
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'OtherOtherSuite',
- 'project' => 'TestProject',
- 'merge' => 1,
- 'step_results' => 'step_results'
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- #Default mode
- undef $tap;
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'source' => 't/faker.test',
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'OtherOtherSuite',
- 'project' => 'TestProject',
- 'merge' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- #Default mode
- undef $tap;
- $fcontents = "
- fake.test ..
- 1..2
- ok 1 - STORAGE TANKS SEARED
- #Subtest NOT SO SEARED AFTER ARR
- ok 1 - STROGGIFY POPULATION CENTERS
- not ok 2 - STROGGIFY POPULATION CENTERS
- #goo
- not ok 2 - NOT SO SEARED AFTER ARR
- ";
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'tap' => $fcontents,
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'TestingSuite',
- 'project' => 'TestProject',
- 'case_per_ok' => 1,
- 'merge' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- #skip/todo in case_per_ok
- undef $tap;
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'source' => 't/skip.test',
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'TestingSuite',
- 'project' => 'TestProject',
- 'case_per_ok' => 1,
- 'merge' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- #Default mode skip (skip_all)
- undef $tap;
- $res = exception {
- $tap = Test::Rail::Parser->new({
- 'source' => 't/skipall.test',
- 'apiurl' => $apiurl,
- 'user' => $login,
- 'pass' => $pw,
- 'debug' => $debug,
- 'browser' => $browser,
- 'run' => 'TestingSuite',
- 'project' => 'TestProject',
- 'merge' => 1
- });
- };
- is($res,undef,"TR Parser doesn't explode on instantiation");
- isa_ok($tap,"Test::Rail::Parser");
- if (!$res) {
- $tap->run();
- is($tap->{'errors'},0,"No errors encountered uploading case results");
- }
- 0;
|