summaryrefslogtreecommitdiffstats
path: root/_testing/travis/autoinstall-perl-prereqs.zsh
diff options
context:
space:
mode:
authorAilin Nemui2014-06-16 04:11:29 +0200
committerAilin Nemui2014-06-24 18:28:59 +0200
commitca374a4a1acec99b19486549071ef6c9968b749a (patch)
treeec4f7f7e66b423c392b5dbb46e424ec56a43247c /_testing/travis/autoinstall-perl-prereqs.zsh
parent525b2128888f1e3ca2088a54cc086b102dbfe690 (diff)
downloadscripts.irssi.org-ca374a4a1acec99b19486549071ef6c9968b749a.tar.bz2
Add travis testing to Irssi scripts.
Diffstat (limited to '_testing/travis/autoinstall-perl-prereqs.zsh')
-rwxr-xr-x_testing/travis/autoinstall-perl-prereqs.zsh48
1 files changed, 48 insertions, 0 deletions
diff --git a/_testing/travis/autoinstall-perl-prereqs.zsh b/_testing/travis/autoinstall-perl-prereqs.zsh
new file mode 100755
index 0000000..11c9824
--- /dev/null
+++ b/_testing/travis/autoinstall-perl-prereqs.zsh
@@ -0,0 +1,48 @@
+#!/bin/zsh
+
+. ./_testing/_get_files_arr.zsh
+
+local -a modlist
+modlist=($(scan-perl-prereqs $filelist))
+
+sudo apt-file update >/dev/null 2>&1
+
+local -a ubu_pkgs
+local -a cpan_mods
+for mod ($modlist) {
+ mod=${mod%\~*}
+ if [[ $mod != Irssi* && $mod != feature ]] {
+ if { ! perl -M$mod -E1 2>/dev/null } {
+ local -a ubu_pkg
+ ubu_pkg=($(apt-file -l search "/perl5/${mod//:://}.pm"))
+ if [[ $#ubu_pkg -gt 0 ]] { ubu_pkgs+=($ubu_pkg) } \
+ else { cpan_mods+=($mod) }
+ }
+ }
+}
+
+if [[ $#ubu_pkgs -gt 0 ]] { sudo apt-get install -qq $ubu_pkgs }
+
+typeset -A broken_tests
+typeset -A broken_mods
+
+broken_tests=($(perl -MYAML::Tiny=LoadFile -e'print "$_ 1 " for @{LoadFile(+shift)->{cpan}{broken_tests}}' _testing/config.yml))
+broken_mods=($(perl -MYAML::Tiny=LoadFile -e'print "$_ 1 " for @{LoadFile(+shift)->{cpan}{broken_modules}}' _testing/config.yml))
+
+for mod ($cpan_mods) {
+ if { ! perl -M$mod -E1 2>/dev/null } {
+ local skip_test=
+ if [[ -n $broken_tests[$mod] ]] {
+ skip_test=--notest
+ echo Skipping broken test on $mod
+ }
+ if [[ -n $broken_mods[$mod] ]] {
+ echo SKIPPING AUTOINSTALL OF BROKEN MODULE $mod
+ } \
+ else {
+ echo Auto-installing $mod
+ sudo cpanm -q --skip-satisfied $skip_test $mod
+ }
+ }
+}
+exit 0