This is an automated email from the git hooks/post-receive script.

alexm-guest pushed a commit to branch forward-github-pr
in repository pkg-perl-tools.

commit f5cb0c5cc73befe4b4e0ecf942057cf1250058cc
Author: Alex Muntada <al...@alexm.org>
Date:   Sat May 28 22:23:26 2016 +0200

    Refactor PR workflow
---
 t/github.t | 103 ++++++++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 71 insertions(+), 32 deletions(-)

diff --git a/t/github.t b/t/github.t
index f80b780..5a7f7a7 100644
--- a/t/github.t
+++ b/t/github.t
@@ -16,44 +16,83 @@ BEGIN {
         and eval "use Git::Repository; 1";
 }
 
+# Defaults
+my $owner   = 'alexm';
+my $repo    = 'pkg-perl-dummy';
+my $orgname = 'pkg-perl-tools';
+my $branch  = "pkg-perl-$^T";
+my $patch   = 't/dummy.txt.patch';
+my $comment = "Test patch $^T";
+my $body    = 'Pull request by Debian pkg-perl team.';
+my $base    = 'master';
+
+# Test GitHub API access
 my $gh = new_ok('Net::GitHub::V3', [
     access_token => $ENV{DPT_GITHUB_OAUTH},
 ]);
-
-my $orgname = 'pkg-perl-tools';
 is( $gh->user->show($orgname)->{login}, $orgname, $orgname );
 
-my $repos = $gh->repos;
-$repos->set_default_user_repo('alexm', 'pkg-perl-dummy');
-my $fork = $repos->create_fork($orgname);
-isnt( $fork, undef, 'create fork' );
-
-my $workdir = tempdir( CLEANUP => 1 );
-Git::Repository->run(
-    clone => "git\@github.com:$orgname/pkg-perl-dummy.git",
-    $workdir,
-    { quiet => 1 },
-);
-my $r = Git::Repository->new( work_tree => $workdir, { quiet => 1 } );
-$r->run( checkout => '-b', "test-branch-$^T" );
-
-my $patched = system( "cat t/dummy.txt.patch | (cd $workdir && patch -p1)" ) 
== 0;
-ok( $patched, 'patch dummy.txt' );
-
-$r->run( add => '.' );
-$r->run( commit => '-m', "Test patch $^T" );
-$r->run( push => 'origin', "test-branch-$^T" );
-
-my $pull_request = $gh->pull_request;
-$pull_request->set_default_user_repo('alexm', 'pkg-perl-dummy');
-my $pull = $pull_request->create_pull({
-    title => "Test patch $^T",
-    body  => "Testing pull requests from pkg-perl-tools.",
-    head  => "$orgname:test-branch-$^T",
-    base  => "master",
+create_fork($gh, $owner, $repo, $orgname)
+    unless fork_exists($gh, $orgname, $repo);
+
+clone_branch_patch_push($orgname, $repo, $branch, $patch, $comment);
+
+my $url = create_pull_request($gh, $owner, $repo, {
+    title => $comment,
+    body  => $body,
+    head  => "$orgname:$branch",
+    base  => $base,
 });
-isnt( $pull, undef, 'create pull request' );
 
-diag $pull->{html_url};
+isnt( $url, undef, 'pull request' );
+diag $url;
 
 done_testing();
+
+sub fork_exists {
+    my ($gh, $user, $repo) = @_;
+
+    return !!$gh->repos->set_default_user_repo($user, $repo);
+}
+
+sub create_fork {
+    my ($gh, $owner, $repo, $orgname) = @_;
+
+    $gh->repos->set_default_user_repo($owner, $repo);
+    return $gh->repos->create_fork($orgname);
+}
+
+sub clone_branch_patch_push {
+    my ($user, $repo, $branch, $patch, $comment) = @_;
+
+    # Clone
+    my $workdir = tempdir( CLEANUP => 1 );
+    Git::Repository->run(
+        clone => "git\@github.com:$user/$repo.git",
+        $workdir,
+        { quiet => 1 },
+    );
+    my $r = Git::Repository->new(
+        work_tree => $workdir,
+        { quiet => 1 },
+    );
+
+    # Branch
+    $r->run( checkout => '-b', $branch, { quiet => 1 } );
+
+    # Patch
+    my $patched = system("cat $patch|(cd $workdir && patch -p1)") == 0;
+
+    # Push
+    $r->run( add => '.' );
+    $r->run( commit => '-m', $comment, { quiet => 1 } );
+    $r->run( push => 'origin', $branch, { quiet => 1 } );
+}
+
+sub create_pull_request {
+    my ($gh, $user, $repo, $params) = @_;
+
+    $gh->pull_request->set_default_user_repo($user, $repo);
+    my $pull = $gh->pull_request->create_pull($params);
+    return $pull->{html_url} if $pull;
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/pkg-perl-tools.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to