App-Prove-Plugin-Testrail.t 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. use FindBin;
  5. use lib "$FindBin::Bin/lib";
  6. use Test::More 'tests' => 6;
  7. use Test::Fatal;
  8. use App::Prove;
  9. use App::Prove::Plugin::TestRail;
  10. #I'm the secret squirrel
  11. $ENV{'TESTRAIL_MOCKED'} = 1;
  12. #Test the same sort of data as would come from the Test::Rail::Parser case
  13. my $prove = App::Prove->new();
  14. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,run=TestingSuite,version=0.014,case_per_ok=1",'t/fake.test');
  15. is (exception {$prove->run()},undef,"Running TR parser case via plugin functions");
  16. #Check that plan, configs and version also make it through
  17. $prove = App::Prove->new();
  18. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,run=Executing the great plan,version=0.014,case_per_ok=1,plan=GosPlan,configs=testConfig",'t/fake.test');
  19. is (exception {$prove->run()},undef,"Running TR parser case via plugin functions works with configs/plans");
  20. #Check that spawn options make it through
  21. $prove = App::Prove->new();
  22. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,run=TestingSuite2,version=0.014,case_per_ok=1,testsuite_id=9",'t/skipall.test');
  23. is (exception {$prove->run()},undef,"Running TR parser case via plugin functions works with configs/plans");
  24. $prove = App::Prove->new();
  25. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,plan=bogoPlan,run=bogoRun,version=0.014,case_per_ok=1,testsuite=HAMBURGER-IZE HUMANITY",'t/skipall.test');
  26. is (exception {$prove->run()},undef,"Running TR parser spawns both runs and plans");
  27. $prove = App::Prove->new();
  28. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,run=bogoRun,version=0.014,case_per_ok=1,testsuite_id=9,sections=fake.test:CARBON LIQUEFACTION",'t/fake.test');
  29. is (exception {$prove->run()},undef,"Running TR parser can discriminate by sections correctly");
  30. $prove = App::Prove->new();
  31. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,plan=FinalPlan,run=FinalRun,configs=testConfig,version=0.014,case_per_ok=1,autoclose=1",'t/fake.test');
  32. is (exception {$prove->run()},undef,"Running TR parser with autoclose works correctly");
  33. #Test multi-job upload shizz
  34. $prove = App::Prove->new();
  35. $prove->process_args("-PTestRail=apiurl=http://some.testlink.install/,user=someUser,password=somePassword,project=TestProject,plan=FinalPlan,run=FinalRun,configs=testConfig,step_results=step_results", '-j2', 't/fake.test', 't/skipall.test');
  36. is (exception {$prove->run()},undef,"Running TR parser -j2 works");
  37. my $tres = $prove->state_manager->results->{'tests'};
  38. subtest "Both step_result tracking and raw_output is correct (tests share parser internally)" => sub {
  39. foreach my $test (keys %$tres) {
  40. my $step_results = $tres->{$test}->{'parser'}->{'tr_opts'}->{'result_custom_options'}->{'step_results'};
  41. my $toutput = $tres->{$test}->{'parser'}->{'raw_output'};
  42. note $test;
  43. if ($test eq 'skipall.test') {
  44. unlike($toutput,qr/NOT SO SEARED AFTER ALL/i,"Test steps in full test output");
  45. if (is(ref $step_results, 'ARRAY', "step_results is ARRAY ref")) {
  46. is(scalar(@$step_results),0,"No steps to upload when doing skip_all");
  47. }
  48. } else {
  49. like($toutput,qr/NOT SO SEARED AFTER ALL/i,"Test steps in full test output");
  50. unlike($toutput,qr/SKIP/i,"Skip all info in full test output");
  51. if (is(ref $step_results, 'ARRAY', "step_results is ARRAY ref")) {
  52. is(scalar(@$step_results),2,"No steps to upload when doing skip_all");
  53. }
  54. }
  55. }
  56. };