1#!/usr/bin/env perl -w 2use strict; 3 4use Prophet::Test; 5use App::SD::Test; 6 7unless ( $] >= 5.010 ) { 8 plan skip_all => 'You need at least Perl 5.010 to enable redmine support'; 9} 10 11require File::Temp; 12$ENV{'PROPHET_REPO'} = $ENV{'SD_REPO'} = File::Temp::tempdir( CLEANUP => 1 ) . '/_svb'; 13diag "export SD_REPO=" . $ENV{'PROPHET_REPO'} . "\n"; 14 15BEGIN{ 16 unless ( eval { require Net::Redmine } ) { 17 plan skip_all => 'You need Net::Redmine installed to run the tests'; 18 } 19} 20 21require 't/sd-redmine/net_redmine_test.pl'; 22 23my $r = new_redmine(); 24 25plan tests => 2; 26 27note "create 5 new tickets in redmine."; 28my @tickets = new_tickets($r, 5); 29 30note "- created tickets: " . join(",", map { $_->id } @tickets); 31 32note "sd clone them, verify their summary text."; 33my $sd_redmine_url = "redmine:" . $r->connection->url; 34my $user = $r->connection->user; 35my $pass = $r->connection->password; 36$sd_redmine_url =~ s|http://|http://${user}:${pass}@|; 37 38diag "sd clone --from ${sd_redmine_url} --non-interactive"; 39 40my ( $ret, $out, $err ) 41 = run_script( 'sd', 42 [ 'clone', '--from', $sd_redmine_url, '--non-interactive' ] ); 43is(count_tickets_in_sd(),5, "the total cloned tickets is 5."); 44 45note "close one of them, push it to server."; 46( $ret, $out, $err ) = run_script( 'sd', [ "ticket", "update", $tickets[0]->id, "--", "status=Closed" ] ); 47like( $out, qr/^Ticket(.*)updated/ ); 48diag($out); 49diag($err); 50 51( $ret, $out, $err ) = run_script( 'sd', [ 'push', '--to', $sd_redmine_url ] ); 52diag($out); 53diag($err); 54 55note "verify the update with Net::Redmine"; 56my $ticket = $r->lookup(ticket => { id => $tickets[0]->id }); 57 58is($ticket->status, "Closed"); 59 60## 61sub count_tickets_in_sd { 62 my $self = shift; 63 64 my ( $ret, $out, $err ) = run_script( 65 'sd' => [ 'ticket', 'list', '--regex', '.' ] 66 ); 67 my @lines = split(/\n/,$out); 68 return scalar @lines; 69} 70