Skip to content

Commit

Permalink
testsuite/travis: rework tests with ex. init config
Browse files Browse the repository at this point in the history
Use make for test config setup rather direct commands in travis
configuration.
  • Loading branch information
xdelaruelle committed Oct 25, 2017
1 parent 5db7d8a commit 1416a52
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 53 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
/contrib/rpm/environment-modules.spec
/contrib/scripts/add.modules
/contrib/modulefiles/modules
/testsuite/example/.modulespath
/testsuite/example/modulerc
/compat
/doc/build
/doc/source/version.py
Expand Down
11 changes: 6 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ matrix:
# run tests in code coverage mode on first installation variant
# for each Tcl releases
- env: CONFIGURE_OPTS='--with-tclsh=tclsh8.4 --disable-compat-version --prefix=/tmp/modules' MAKE_TESTCOVERAGE='y'
EXTRA_SCRIPT='install -d /tmp/modules/init && install -D -t /tmp/modules/init testsuite/example/modulerc'
EXTRA_SCRIPT_PRETEST='make install-testmodulerc' EXTRA_SCRIPT_POSTTEST='make uninstall-testconfig'
addons:
apt:
sources:
Expand All @@ -38,7 +38,7 @@ matrix:
- r-base-core
# install configuration file before test to trigger specific behaviors on initialization parts
- env: CONFIGURE_OPTS='--with-tclsh=tclsh8.5 --disable-compat-version --prefix=/tmp/modules' MAKE_TESTCOVERAGE='y'
EXTRA_SCRIPT='install -d /tmp/modules/init && install -D -t /tmp/modules/init testsuite/example/modulerc testsuite/example/.modulespath'
EXTRA_SCRIPT_PRETEST='make install-testmodulerc && make install-testmodspath' EXTRA_SCRIPT_POSTTEST='make uninstall-testconfig'
addons:
apt:
sources:
Expand Down Expand Up @@ -83,7 +83,7 @@ matrix:
- r-base-core

- env: CONFIGURE_OPTS='--with-tclsh=tclsh8.4 --prefix=/tmp/modules --enable-compat-version --with-loadedmodules=null:dot'
EXTRA_SCRIPT='install -d /tmp/modules/init && install -D -t /tmp/modules/init testsuite/example/modulerc'
EXTRA_SCRIPT_PRETEST='make install-testmodulerc' EXTRA_SCRIPT_POSTTEST='make uninstall-testconfig'
addons:
apt:
sources:
Expand All @@ -109,7 +109,7 @@ matrix:
- autopoint
- tcl8.4-dev
- env: CONFIGURE_OPTS='--with-tclsh=tclsh8.5 --prefix=/tmp/modules --enable-compat-version --with-loadedmodules=null:dot'
EXTRA_SCRIPT='install -d /tmp/modules/init && install -D -t /tmp/modules/init testsuite/example/modulerc testsuite/example/.modulespath'
EXTRA_SCRIPT_PRETEST='make install-testmodulerc && make install-testmodspath' EXTRA_SCRIPT_POSTTEST='make uninstall-testconfig'
addons:
apt:
sources:
Expand Down Expand Up @@ -241,9 +241,10 @@ before_install: |
script:
- $CMD_PREFIX ./configure $CONFIGURE_OPTS
- $CMD_PREFIX make
- if [ -n "$EXTRA_SCRIPT" ]; then $CMD_PREFIX $EXTRA_SCRIPT; fi
- if [ -n "$EXTRA_SCRIPT_PRETEST" ]; then $CMD_PREFIX eval $EXTRA_SCRIPT_PRETEST; fi
- if [ "$MAKE_TESTCOVERAGE" = 'y' ]; then $CMD_PREFIX make testcoverage; fi
- if [ "$MAKE_TESTCOVERAGE" != 'y' ]; then $CMD_PREFIX make test; fi
- if [ -n "$EXTRA_SCRIPT_POSTTEST" ]; then $CMD_PREFIX eval $EXTRA_SCRIPT_POSTTEST; fi
- $CMD_PREFIX make install
- $CMD_PREFIX make testinstall
- $CMD_PREFIX make uninstall
Expand Down
27 changes: 25 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.PHONY: doc pkgdoc initdir install uninstall dist dist-tar dist-gzip \
dist-bzip2 srpm clean distclean test testinstall instrument testcoverage
.PHONY: doc pkgdoc initdir install install-testmodulerc install-testmodspath \
uninstall-testconfig uninstall dist dist-tar dist-gzip dist-bzip2 srpm \
clean distclean test testinstall instrument testcoverage

# definitions for code coverage
NAGELFAR_RELEASE := nagelfar125
Expand Down Expand Up @@ -98,6 +99,7 @@ define translate-in-script
sed -e 's|@prefix@|$(prefix)|g' \
-e 's|@libexecdir@|$(libexecdir)|g' \
-e 's|@initdir@|$(initdir)|g' \
-e 's|@modulefilesdir@|$(modulefilesdir)|g' \
-e 's|@TCLSHDIR@/tclsh|$(TCLSH)|g' \
-e 's|@TCLSH@|$(TCLSH)|g' \
-e 's|@MODULES_RELEASE@|$(MODULES_RELEASE)|g' \
Expand Down Expand Up @@ -144,6 +146,26 @@ contrib/scripts/add.modules: contrib/scripts/add.modules.in
$(COMPAT_DIR)/modulecmd $(COMPAT_DIR)/ChangeLog:
make -C $(COMPAT_DIR) $(@F)

# example configs for test rules
testsuite/example/.modulespath: testsuite/example/.modulespath.in
$(translate-in-script)

testsuite/example/modulerc: testsuite/example/modulerc.in
$(translate-in-script)

install-testmodulerc: testsuite/example/modulerc
make -C init install-testconfig DESTDIR=$(DESTDIR)
cp $^ $(DESTDIR)$(initdir)/

install-testmodspath: testsuite/example/.modulespath
make -C init install-testconfig DESTDIR=$(DESTDIR)
cp $^ $(DESTDIR)$(initdir)/

uninstall-testconfig:
rm -f $(DESTDIR)$(initdir)/modulerc
rm -f $(DESTDIR)$(initdir)/.modulespath
make -C init uninstall-testconfig DESTDIR=$(DESTDIR)

ifeq ($(compatversion),y)
install: modulecmd.tcl ChangeLog README contrib/scripts/add.modules \
$(COMPAT_DIR)/modulecmd $(COMPAT_DIR)/ChangeLog
Expand Down Expand Up @@ -256,6 +278,7 @@ ifeq ($(wildcard .git) $(wildcard NEWS.rst),.git NEWS.rst)
endif
rm -f modulecmd.tcl
rm -f contrib/scripts/add.modules
rm -f testsuite/example/.modulespath testsuite/example/modulerc
rm -f modules-*.tar modules-*.tar.gz modules-*.tar.bz2
rm -f modules-*.srpm
make -C init clean
Expand Down
20 changes: 19 additions & 1 deletion init/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: install uninstall clean
.PHONY: install install-testconfig uninstall-testconfig uninstall clean

SH_LIKE = sh ksh bash zsh profile.sh bash_completion
CSH_LIKE = csh tcsh tcsh_completion profile.csh
Expand All @@ -7,6 +7,7 @@ OTHER = perl.pm python.py ruby.rb lisp tcl fish cmake r.R
# example modulefiles to install
EXAMPLE_MODFILES_SRCDIR := ../contrib/modulefiles
EXAMPLE_MODFILES = dot module-git module-info modules null use.own
EXAMPLE_TESTCONFIG_MODFILES = null

# source definitions shared across the Makefiles of this project
ifneq ($(wildcard ../Makefile.inc),../Makefile.inc)
Expand Down Expand Up @@ -103,6 +104,23 @@ profile-compat.sh: profile-compat.sh.in
$(EXAMPLE_MODFILES_SRCDIR)/modules: $(EXAMPLE_MODFILES_SRCDIR)/modules.in ../version.inc
$(translate-in-script)

# example configs for test rules
install-testconfig:
mkdir -p $(DESTDIR)$(initdir)
mkdir -p $(DESTDIR)$(modulefilesdir)
mkdir -p $(DESTDIR)$(prefix)/test/modulefiles $(DESTDIR)$(prefix)/test/etc
cp $(addprefix $(EXAMPLE_MODFILES_SRCDIR)/,$(EXAMPLE_TESTCONFIG_MODFILES)) $(DESTDIR)$(modulefilesdir)/

uninstall-testconfig:
rmdir $(DESTDIR)$(prefix)/test/modulefiles $(DESTDIR)$(prefix)/test/etc $(DESTDIR)$(prefix)/test
rm -f $(addprefix $(DESTDIR)$(modulefilesdir)/,$(EXAMPLE_TESTCONFIG_MODFILES))
ifeq ($(wildcard $(DESTDIR)$(modulefilesdir)/*),)
rmdir $(DESTDIR)$(modulefilesdir)
endif
ifeq ($(wildcard $(DESTDIR)$(initdir)/*),)
rmdir $(DESTDIR)$(initdir)
endif

install: all
mkdir -p $(DESTDIR)$(initdir)
mkdir -p $(DESTDIR)$(initdir)/ksh-functions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# limited by the maximum variable size of your shell.
#
# # location of version files
#/usr/share/Modules/$MODULE_VERSION/modulefiles # Module pkg modulefiles (if versioning)
/usr/share/Modules/modulefiles # Module pkg modulefiles (if no versioning)
/etc/modulefiles:/usr/share/modulefiles # General module files
#/usr/share/Modules/your_contribs # Edit for your requirements
#@prefix@/$MODULE_VERSION/modulefiles # Module pkg modulefiles (if versioning)
@modulefilesdir@ # Module pkg modulefiles (if no versioning)
@prefix@/test/modulefiles:@prefix@/test/etc # General module files
#@prefix@/your_contribs # Edit for your requirements
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
# and modulefiles you want to load by default for all users. It should
# contains a lines of module command like 'module use path' and
# 'module load mod'
module use --append /usr/share/Modules/modulefiles
module use --append @modulefilesdir@
module load null
92 changes: 52 additions & 40 deletions testsuite/modules.70-maint/120-autoinit.exp
Original file line number Diff line number Diff line change
Expand Up @@ -40,39 +40,41 @@ if {[info exists env(TCLSH)]} {
}

# compare init config files to determine if we can guess expected setup
set fid [open $env(TESTSUITEDIR)/example/.modulespath r]
set exmodspathdata [split [read $fid] "\n"]
close $fid
set fid [open $env(TESTSUITEDIR)/example/modulerc r]
set exmodrcdata [split [read $fid] "\n"]
close $fid
if {[file readable $install_initdir/.modulespath]} {
set fid [open $install_initdir/.modulespath r]
set insmodspathdata [split [read $fid] "\n"]
set insmodspath [file readable $install_initdir/.modulespath]
set modspath_exinstalled 0
if {[file readable $env(TESTSUITEDIR)/example/.modulespath]} {
set fid [open $env(TESTSUITEDIR)/example/.modulespath r]
set exmodspathdata [split [read $fid] "\n"]
close $fid
set insmodspath 1
} else {
set insmodspathdata ""
set insmodspath 0
if {$insmodspath} {
set fid [open $install_initdir/.modulespath r]
set insmodspathdata [split [read $fid] "\n"]
close $fid
} else {
set insmodspathdata ""
}
if {$exmodspathdata eq $insmodspathdata} {
set modspath_exinstalled 1
}
}
if {[file readable $install_initdir/modulerc]} {
set fid [open $install_initdir/modulerc r]
set insmodrcdata [split [read $fid] "\n"]
set insmodrc 1

set insmodrc [file readable $install_initdir/modulerc]
set modrc_exinstalled 0
if {[file readable $env(TESTSUITEDIR)/example/modulerc]} {
set fid [open $env(TESTSUITEDIR)/example/modulerc r]
set exmodrcdata [split [read $fid] "\n"]
close $fid
} else {
set insmodrcdata ""
set insmodrc 0
}
if {$exmodspathdata eq $insmodspathdata} {
set modspath_exinstalled 1
} else {
set modspath_exinstalled 0
}
if {$exmodrcdata eq $insmodrcdata} {
set modrc_exinstalled 1
} else {
set modrc_exinstalled 0
if {$insmodrc} {
set fid [open $install_initdir/modulerc r]
set insmodrcdata [split [read $fid] "\n"]
set insmodrc 1
close $fid
} else {
set insmodrcdata ""
}
if {$exmodrcdata eq $insmodrcdata} {
set modrc_exinstalled 1
}
}

set err_lisp "$error_msgs: lisp mode autoinit not yet implemented"
Expand Down Expand Up @@ -183,15 +185,15 @@ if {(!$insmodspath || $modspath_exinstalled) && (!$insmodrc || $modrc_exinstalle
lappend ans [list set MODULEPATH_modshare "(.*)"]
lappend ans [list set LOADEDMODULES ""]
lappend ans [list set MODULESHOME $moduleshome]
lappend ans [list set MODULEPATH "/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles"]
lappend ans [list set MODULEPATH "$install_modulefilesdir:$install_prefix/test/modulefiles:$install_prefix/test/etc"]
} elseif {!$insmodspath && $modrc_exinstalled} {
lappend ans [list set _LMFILES__modshare "/usr/share/Modules/modulefiles/null:1"]
lappend ans [list set _LMFILES__modshare "$install_modulefilesdir/null:1"]
lappend ans [list set LOADEDMODULES_modshare "null:1"]
lappend ans [list set MODULEPATH_modshare "/usr/share/Modules/modulefiles:1"]
lappend ans [list set _LMFILES_ "/usr/share/Modules/modulefiles/null"]
lappend ans [list set MODULEPATH_modshare "$install_modulefilesdir:1"]
lappend ans [list set _LMFILES_ "$install_modulefilesdir/null"]
lappend ans [list set LOADEDMODULES "null"]
lappend ans [list set MODULESHOME $moduleshome]
lappend ans [list set MODULEPATH "/usr/share/Modules/modulefiles"]
lappend ans [list set MODULEPATH "$install_modulefilesdir"]
}

test_cmd_re $shell "autoinit" $ans
Expand All @@ -216,12 +218,22 @@ unset path_list
unset modulecmd_path
unset moduleshome

unset fid
unset exmodspathdata
unset exmodrcdata
unset insmodspathdata
if {[info exists fid]} {
unset fid
}
if {[info exists exmodspathdata]} {
unset exmodspathdata
}
if {[info exists exmodrcdata]} {
unset exmodrcdata
}
if {[info exists insmodspathdata]} {
unset insmodspathdata
}
unset insmodspath
unset insmodrcdata
if {[info exists insmodrcdata]} {
unset insmodrcdata
}
unset insmodrc
unset modspath_exinstalled
unset modrc_exinstalled
Expand Down

0 comments on commit 1416a52

Please sign in to comment.