add a standalone test for gl-system-install
This commit is contained in:
parent
6e7404fe8a
commit
776e5c7298
178
t/standalone/gl-system-install
Executable file
178
t/standalone/gl-system-install
Executable file
|
@ -0,0 +1,178 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# test script for install side of gitolite (not part of normal test suite)
|
||||
|
||||
use 5.10.0;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use lib "$ENV{HOME}/._s/bin";
|
||||
use Tsh;
|
||||
|
||||
my $version_string = get_version();
|
||||
|
||||
my $euid=$>;
|
||||
try 'cd';
|
||||
|
||||
# invalid arguments
|
||||
|
||||
clean();
|
||||
try "
|
||||
## invalid arguments
|
||||
gitolite/src/gl-system-install bin2
|
||||
!ok
|
||||
/I need all 3.../
|
||||
gitolite/src/gl-system-install bin2 share2/gitolite/conf share2/gitolite/hooks
|
||||
!ok
|
||||
/should be an absolute path/
|
||||
";
|
||||
|
||||
# no arguments
|
||||
|
||||
clean();
|
||||
try "
|
||||
## no arguments
|
||||
gitolite/src/gl-system-install
|
||||
ok
|
||||
/using default values for EUID=$euid/
|
||||
//home/gl-test/bin, /home/gl-test/share/gitolite/conf, /home/gl-test/share/gitolite/hooks/
|
||||
";
|
||||
|
||||
static_checks(
|
||||
"/home/gl-test/bin",
|
||||
"/home/gl-test/share/gitolite/conf",
|
||||
"/home/gl-test/share/gitolite/hooks",
|
||||
$version_string
|
||||
);
|
||||
|
||||
# non-default arguments
|
||||
|
||||
clean();
|
||||
try "
|
||||
## non-default arguments
|
||||
gitolite/src/gl-system-install \$PWD/bin2 \$PWD/share2/gitolite/conf \$PWD/share2/gitolite/hooks
|
||||
!ok
|
||||
/WARNING/
|
||||
/gl-setup is not in your .PATH/
|
||||
";
|
||||
|
||||
static_checks(
|
||||
"/home/gl-test/bin2",
|
||||
"/home/gl-test/share2/gitolite/conf",
|
||||
"/home/gl-test/share2/gitolite/hooks",
|
||||
$version_string
|
||||
);
|
||||
|
||||
# occurs earlier in PATH
|
||||
|
||||
clean();
|
||||
try "
|
||||
## occurs earlier in PATH
|
||||
gitolite/src/gl-system-install
|
||||
gitolite/src/gl-system-install \$PWD/bin2 \$PWD/share2/gitolite/conf \$PWD/share2/gitolite/hooks
|
||||
!ok
|
||||
/WARNING/
|
||||
/in your .PATH .also. contains gl-setup/
|
||||
" or die;
|
||||
|
||||
static_checks(
|
||||
"/home/gl-test/bin2",
|
||||
"/home/gl-test/share2/gitolite/conf",
|
||||
"/home/gl-test/share2/gitolite/hooks",
|
||||
$version_string
|
||||
);
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
sub static_checks {
|
||||
# 3 directory names, version string
|
||||
my ($bin_dir, $conf_dir, $hooks_dir, $verstr) = @_;
|
||||
|
||||
try "
|
||||
# $bin_dir/gl-setup contains $conf_dir
|
||||
cat $bin_dir/gl-setup
|
||||
ok
|
||||
/\Q$conf_dir\E/
|
||||
!/\Q/tmp/share\E/
|
||||
" or die;
|
||||
try "
|
||||
# $conf_dir/example.gitolite.rc has $conf_dir and $hooks_dir
|
||||
cat $conf_dir/example.gitolite.rc
|
||||
ok
|
||||
/\Q$conf_dir\E/
|
||||
/\Q$hooks_dir\E/
|
||||
!/\Q/tmp/share\E/
|
||||
" or die;
|
||||
try "
|
||||
# check $bin_dir got most of the sources
|
||||
ls -al $bin_dir
|
||||
ok
|
||||
/gitolite_env.pm/
|
||||
/gitolite.pm/
|
||||
/gitolite_rc.pm/
|
||||
/gl-auth-command/
|
||||
/gl-compile-conf/
|
||||
/gl-install/
|
||||
/gl-query-rc/
|
||||
/gl-setup/
|
||||
/gl-system-install/
|
||||
" or die;
|
||||
try "
|
||||
# check $conf_dir got the example files
|
||||
ls -al $conf_dir
|
||||
ok
|
||||
/example.gitolite.rc/
|
||||
/example.conf/
|
||||
/VERSION/
|
||||
" or die;
|
||||
try "
|
||||
# check $hooks_dir got the hooks
|
||||
find $hooks_dir -type f
|
||||
ok
|
||||
/\Q$hooks_dir/common/gitolite-hooked\E/
|
||||
/\Q$hooks_dir/common/update\E/
|
||||
/\Q$hooks_dir/common/update.secondary.sample\E/
|
||||
/\Q$hooks_dir/common/post-receive.mirrorpush\E/
|
||||
/\Q$hooks_dir/common/gl-pre-git.hub-sample\E/
|
||||
/\Q$hooks_dir/gitolite-admin/post-update\E/
|
||||
" or die;
|
||||
try "
|
||||
# check version string
|
||||
cat $conf_dir/VERSION
|
||||
ok
|
||||
/\Q$verstr\E/
|
||||
" or die;
|
||||
}
|
||||
|
||||
sub clean {
|
||||
chdir($ENV{HOME});
|
||||
system("rm -rf .ssh*");
|
||||
system("rm -rf .gito* gitolite-admin projects.list repositories *back.tar share share2 bin bin2 glt-adc td");
|
||||
mkdir "td";
|
||||
|
||||
system("mkdir -p .ssh; chmod go-w .ssh");
|
||||
|
||||
system("ssh-keygen -q -N '' -f .ssh/id_rsa");
|
||||
|
||||
# set up our identity (impacts some tests; don't change this!)
|
||||
system('git config --global user.name "gitolite tester"');
|
||||
system('git config --global user.email "tester@example.com"');
|
||||
}
|
||||
|
||||
sub cd_g {
|
||||
chdir($ENV{HOME});
|
||||
chdir("gitolite");
|
||||
}
|
||||
|
||||
sub setup {
|
||||
chdir($ENV{HOME});
|
||||
try "cp .ssh/id_rsa.pub tester.pub";
|
||||
try "gl-setup -q tester.pub";
|
||||
}
|
||||
|
||||
sub get_version {
|
||||
chdir($ENV{HOME});
|
||||
chdir("gitolite");
|
||||
try "git describe --tags --long --dirty=-dt 2>/dev/null";
|
||||
return ((lines())[0]);
|
||||
}
|
Loading…
Reference in a new issue