summaryrefslogtreecommitdiffstats
path: root/test/test_salsa
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_salsa')
-rwxr-xr-xtest/test_salsa106
1 files changed, 106 insertions, 0 deletions
diff --git a/test/test_salsa b/test/test_salsa
new file mode 100755
index 0000000..8c21342
--- /dev/null
+++ b/test/test_salsa
@@ -0,0 +1,106 @@
+#!/usr/bin/perl
+
+use strict;
+use lib '../lib';
+use Test::More;
+
+my $skip;
+
+BEGIN {
+ my $cwd = `pwd`;
+ chomp $cwd;
+ eval "use File::Temp 'tempdir';"
+ . "use Test::Output;use GitLab::API::v4;"
+ . "use lib '$cwd/../lib'";
+ $skip = $@ ? 1 : 0;
+}
+
+sub run {
+ my ($result, $out, @list) = @_;
+ @ARGV = @list;
+ my $res;
+ combined_like(
+ sub {
+ $res = Devscripts::Salsa->new->run;
+ },
+ $out,
+ "command: " . join(' ', @list));
+ ok($res =~ /^$result$/i, " result is $result");
+}
+
+sub mkDebianDir {
+ my $tmpdir = tempdir(CLEANUP => 1);
+ chdir $tmpdir;
+ $ENV{"GIT_CONFIG_NOGLOBAL"} = 1;
+ system "git init";
+ mkdir 'debian';
+ open F, ">debian/changelog";
+ print F <<EOF;
+foobar (0-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Joe Developer <jd\@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
+EOF
+ close F;
+ open F, ">README.md";
+ print F <<EOF;
+# Salsa test
+EOF
+ system "git add *";
+ system "git commit -a -m 'Salsa test'";
+}
+
+SKIP: {
+ skip "Missing dependencies" if ($skip);
+ use_ok 'Devscripts::Salsa';
+ $Devscripts::Output::die_on_error = 0;
+
+ # Search methods
+ run(0, qr/Id.*\nUsername.*/s, 'whoami');
+ run(0, qr/Id.*\nName/s, 'search_group', 'js-team');
+ run(0, qr/Id.*\nName/s, 'search_group', '2666');
+ run(0, qr/Id.*\nName/s, 'search_group', 'perl-team/modules');
+ run(0, qr/Id.*\nUsername\s*: yadd/s, 'search_user', 'yadd');
+ run(0, qr/Id.*\nUsername\s*: yadd/s, 'search_user', 'yad');
+ run(0, qr/Id.*\nUsername\s*: yadd/s, 'search_user', '3818');
+ run(0, qr/Id.*\nName\s*: qa/s, 'search_project', 'qa');
+ run(0, qr/Id.*\nName\s*: qa/s, 'search_project', '1417');
+ run(0, qr/Id.*\nName\s*: qa/s, 'search_project', 'qa/qa');
+ run(0, qr/Id.*\nUsername.*/s, '--group', 'perl-team', 'group');
+ run(0, qr/Id.*\nName/s, '--group', 'perl-team', 'list_repos');
+ run(0, qr/Id.*\nName/s, 'list_groups');
+ run(0, qr/Id.*\n\tName/s, 'forks', 'qa/qa');
+ run(0, qr/^debian\/devscripts/m, 'mrs', 'debian/devscripts');
+ run(0, qr/^devscripts/m, 'mrs', 'devscripts', '--group-id', 2);
+ run(0, qr/master.*Maintainer.*Developers/m,
+ 'protected_branches', 'debian/devscripts');
+
+ # checkout
+ {
+ my $tmpdir = tempdir(CLEANUP => 1);
+ run(0, qr/gbp:info/, 'co', '-C', $tmpdir,
+ 'debian/libapache2-mod-fcgid');
+ ok(
+ -d "$tmpdir/libapache2-mod-fcgid/.git",
+ ' libapache2-mod-fcgid cloned'
+ );
+ run(0, qr/gbp:info/, 'checkout', '-C', $tmpdir, '--group=qa', 'qa');
+ ok(-d "$tmpdir/qa/.git", ' qa cloned');
+ }
+
+ # push_repo, update_repo and del_repo
+ if ($ARGV[0] eq '--full') {
+ mkDebianDir;
+ run(0, qr/Project .*created/s,
+ 'push_repo', '.', '--verbose', '--kgb', '--irc=devscripts');
+ diag "Verify that foobar appears in #devscripts channel";
+ run(0, qr/Project .*updated/s,
+ 'update_repo', 'foobar', '--rename-head');
+ run(1, qr/update_repo has failed for foobar/s,
+ 'update_repo', 'foobar', '--rename-head', '--no-fail');
+ run(0, qr/Project .*foobar deleted/s,
+ '--verbose', 'del_repo', 'foobar');
+ }
+}
+done_testing;