| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # ABSTRACT: Upload your TAP results to TestRail in realtime
- # PODNAME: App::Prove::Plugin::TestRail
- package App::Prove::Plugin::TestRail;
- use strict;
- use warnings;
- use utf8;
- =head1 SYNOPSIS
- `prove -PTestRail='http://some.testlink.install/,someUser,somePassword,TestProject,TestRun' sometest.t`
- =cut
- =head1 DESCRIPTION
- Prove plugin to upload test results to TestRail installations.
- Accepts input in the standard Prove plugin fashion (-Ppluginname=value,value,value...), but will also parse a config file.
- If ~/.testrailrc exists, it will be parsed for any of these values in a newline separated key=value list. Example:
- apiurl=http://some.testrail.install
- user=someGuy
- password=superS3cret
- project=TestProject
- run=TestRun
- case_per_ok=0
- step_results=sr_sys_name
- Be aware that if you do so, it will look for any unsatisfied arguments in the order of their appearance above.
- =cut
- sub load {
- my ($class, $p) = @_;
- my ($apiurl,$password,$user,$project,$run,$case_per_ok,$step_results) = _parseConfig();
- my $app = $p->{app_prove};
- my $args = $p->{'args'};
- $apiurl //= shift @$args;
- $user //= shift @$args;
- $password //= shift @$args;
- $project //= shift @$args;
- $run //= shift @$args;
- $case_per_ok //= shift @$args;
- $step_results //= shift @$args;
- $app->harness('Test::Rail::Harness');
- $app->merge(1);
- #XXX I can't figure out for the life of me any other way to pass this data. #YOLO
- $ENV{'TESTRAIL_APIURL'} = $apiurl;
- $ENV{'TESTRAIL_USER'} = $user;
- $ENV{'TESTRAIL_PASS'} = $password;
- $ENV{'TESTRAIL_PROJ'} = $project;
- $ENV{'TESTRAIL_RUN'} = $run;
- $ENV{'TESTRAIL_CASEOK'} = $case_per_ok;
- $ENV{'TESTRAIL_STEPS'} = $step_results;
- }
- sub _parseConfig {
- my $results = {};
- my $arr =[];
- open(my $fh, '<', $ENV{"HOME"} . '/.testrailrc') or return (undef,undef,undef);#couldn't open!
- while (<$fh>) {
- chomp;
- @$arr = split(/=/,$_);
- if (scalar(@$arr) != 2) {
- warn("Could not parse $_ in tlreport config\n");
- next;
- }
- $results->{lc($arr->[0])} = $arr->[1];
- }
- close($fh);
- return ($results->{'apiurl'},$results->{'password'},$results->{'user'},$results->{'project'},$results->{'run'},$results->{'case_per_ok'},$results->{'step_results'});
- }
- 1;
- __END__
- =head1 SEE ALSO
- L<TestRail::API>
- L<Test::Rail::Parser>
- L<App::Prove>
- =head1 SPECIAL THANKS
- Thanks to cPanel Inc, for graciously funding the creation of this module.
|