Skip to content

Commit d04eb75

Browse files
committed
ts: fix testsuite run when id cmd cannot resolve group
Update testsuite to cope with user group whose name cannot be resolved. Fixes #476.
1 parent 39923ad commit d04eb75

File tree

8 files changed

+77
-2
lines changed

8 files changed

+77
-2
lines changed

testsuite/modules.00-init/005-init_ts.exp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,8 @@ set domainname [auto_execok domainname]
800800
set domainname_warn "$error_msgs: Command 'domainname' cannot be found"
801801

802802
# display result of id command
803-
send_user "\tid output is '[exec id]'\n"
803+
set idoutput [exec id]
804+
send_user "\tid output is '$idoutput'\n"
804805

805806
# get current working directory
806807
set ORIG_CWD [pwd]
@@ -809,12 +810,28 @@ set ORIG_CWD [pwd]
809810
set username [exec id -u -n]
810811
set userid [exec id -u]
811812
send_user "\tCurrent username is '$username'\n"
813+
set group_name_fetch_failed 0
812814
if {[catch {
813815
# correctly split groups in case some contain a space character (like on Cygwin/MSYS platforms)
814816
set usergroups [lsort [split [string range [exec id -G -n -z] 0 end-1] \0]]
815817
} errMsg]} {
816818
# fallback to a more generic groups retrieval (in case '-z' option not supported on id)
817-
set usergroups [lsort [exec id -G -n]]
819+
if {[catch {
820+
set usergroups [lsort [exec id -G -n]]
821+
} errMsg]} {
822+
set group_name_fetch_failed 1
823+
# fallback in case all group names could not be resolved by 'id' command
824+
# it happens especially when running testsuite through mockbuild
825+
foreach grpinfo [split [string range [lindex [split $idoutput] 2] 7 end] ,] {
826+
if {[set idx [string first ( $grpinfo]] != -1} {
827+
set grp [string range $grpinfo $idx+1 end-1]
828+
} else {
829+
set grp $grpinfo
830+
}
831+
lappend usergroups $grp
832+
}
833+
set usergroups [lsort $usergroups]
834+
}
818835
}
819836
# filter specific volatile groups
820837
set usergroups [lsearch -all -inline -not -glob $usergroups com.apple.sharepoint.group.*]

testsuite/modules.20-locate/112-hide-user-group.exp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ setenv_path_var MODULEPATH $mp
4141

4242
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.hide
4343

44+
if {$group_name_fetch_failed} {
45+
send_user "\tSkip user group tests, as group name fetch failed\n"
46+
} else {
47+
4448

4549
set ans [list]
4650
lappend ans [list set __MODULES_LMALTNAME hide1/5.0&as|hide1/latest]
@@ -247,6 +251,8 @@ testouterr_cmd sh {load hide1@5:} $ans $tserr4
247251
testouterr_cmd sh {avail -t hide1@5:} OK $tserr1
248252
unsetenv_var TESTSUITE_HIDE_ALLOW_USER_GROUP_ERR_SET3
249253

254+
}
255+
250256

251257
#
252258
# Cleanup

testsuite/modules.20-locate/117-forbid-user-group.exp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ setenv_path_var MODULEPATH $mp
4444

4545
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.hide
4646

47+
if {$group_name_fetch_failed} {
48+
send_user "\tSkip user group tests, as group name fetch failed\n"
49+
} else {
50+
4751

4852
set ans [list]
4953
lappend ans [list set __MODULES_LMALTNAME hide1/5.0&as|hide1/latest]
@@ -132,6 +136,8 @@ testouterr_cmd sh {load hide1@5:} $ans $tserr3
132136
testouterr_cmd sh {avail -t hide1@5:} OK $tserr1
133137
unsetenv_var TESTSUITE_FORBID_ALLOW_USER_GROUP_ERR_SET2
134138

139+
}
140+
135141

136142
#
137143
# Cleanup

testsuite/modules.20-locate/119-hide-cascading.exp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ setenv_path_var MODULEPATH $mp
4444
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.hide
4545

4646

47+
if {$group_name_fetch_failed} {
48+
send_user "\tSkip user group tests, as group name fetch failed\n"
49+
} else {
50+
4751
setenv_var TESTSUITE_HIDE1_CASC_SET1 1
4852
testouterr_cmd sh {avail -t hide1@4:} OK {}
4953
testouterr_cmd sh {load hide1@4:} ERR $err_path'hide1@4:'
@@ -380,6 +384,8 @@ testouterr_cmd sh {whatis hide4} ERR $err_path'hide4'
380384
testouterr_cmd_re sh {whatis hide4/.1.0} ERR [err_unablelocate hide4/.1.0]
381385
unsetenv_var TESTSUITE_HIDE4_CASC3_SET1
382386

387+
}
388+
383389

384390
#
385391
# Cleanup

testsuite/modules.50-cmds/287-info-usergroups.exp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ set mpre [regsub -all "\(\[.+?\]\)" $mp {\\\1}]
2929
# setup specific environment
3030
setenv_path_var MODULEPATH $mp
3131

32+
if {$group_name_fetch_failed} {
33+
send_user "\tSkip user group tests, as group name fetch failed\n"
34+
} else {
3235

3336
# modulefile usage
3437
set ans [list]
@@ -130,6 +133,8 @@ unsetenv_var TESTSUITE_INFO_GROUP_IN_RC
130133
unsetenv_var TESTSUITE_ENABLE_SITECONFIG_WINDOWS_PLATFORM
131134
}
132135

136+
}
137+
133138

134139
#
135140
# Cleanup

testsuite/modules.50-cmds/440-module-tag.exp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@ lappend ans [list set __MODULES_LMTAG tag/5.0&foo]
310310
testouterr_cmd sh {load tag/5.0} $ans {}
311311
unsetenv_var TESTSUITE_MODULE_TAG_SET6
312312

313+
if {$group_name_fetch_failed} {
314+
send_user "\tSkip user group tests, as group name fetch failed\n"
315+
} else {
316+
313317
setenv_var TESTSUITE_MODULE_TAG_SET7 1
314318
set tserr "$mp:
315319
tag/5.0
@@ -335,6 +339,8 @@ lappend ans [list set __MODULES_LMTAG tag/5.0&foo]
335339
testouterr_cmd sh {load tag/5.0} $ans {}
336340
unsetenv_var TESTSUITE_MODULE_TAG_SET8
337341

342+
}
343+
338344
unsetenv_var MODULES_ADVANCED_VERSION_SPEC
339345

340346
# use module-tag in modulefile

testsuite/modules.70-maint/220-config.exp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,13 @@ append tserr "\n\n$state_header"
392392
if {[auto_execok uname] eq {} || [auto_execok domainname] eq {}} {
393393
append tserr "(\nWARNING: Command '\\S+' cannot be found)+"
394394
}
395+
if {$group_name_fetch_failed} {
396+
if {$install_libtclenvmodules eq {y}} {
397+
append tserr "(\nWARNING: couldn't find name for group id \"\\S+\": Success)+"
398+
} else {
399+
append tserr "(\nWARNING: .*\n .*/id: cannot find name for group ID \\S+)+"
400+
}
401+
}
395402
foreach param $statelist {
396403
append tserr "\n$param\\s+.*"
397404
}
@@ -420,6 +427,14 @@ foreach param [lsort [array names configset]] {
420427
}
421428
append tserr "\n\n$state_header"
422429
append tserr "(\nWARNING: Command '\\S+' cannot be found)+"
430+
if {$group_name_fetch_failed} {
431+
if {$install_libtclenvmodules eq {y}} {
432+
append tserr "(\nWARNING: couldn't find name for group id \"\\S+\": Success)+"
433+
} else {
434+
append tserr "(\nWARNING: Command '\\S+' cannot be found)*"
435+
}
436+
}
437+
append tserr "(\nWARNING: Command '\\S+' cannot be found)*"
423438
foreach param $statelist {
424439
append tserr "\n$param\\s+.*"
425440
}
@@ -452,6 +467,13 @@ append tserr "\n\n$state_header"
452467
if {[auto_execok uname] eq {} || [auto_execok domainname] eq {}} {
453468
append tserr "(\nWARNING: Command '\\S+' cannot be found)+"
454469
}
470+
if {$group_name_fetch_failed} {
471+
if {$install_libtclenvmodules eq {y}} {
472+
append tserr "(\nWARNING: couldn't find name for group id \"\\S+\": Success)+"
473+
} else {
474+
append tserr "(\nWARNING: .*\n .*/id: cannot find name for group ID \\S+)+"
475+
}
476+
}
455477
foreach param $statelist {
456478
append tserr "\n$param\\s+.*"
457479
}

testsuite/modules.70-maint/390-state.exp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ set tserr "$vers_reportre\n\n$state_header"
3333
if {[auto_execok uname] eq {} || [auto_execok domainname] eq {}} {
3434
append tserr "(\nWARNING: Command '\\S+' cannot be found)+"
3535
}
36+
if {$group_name_fetch_failed} {
37+
if {$install_libtclenvmodules eq {y}} {
38+
append tserr "(\nWARNING: couldn't find name for group id \"\\S+\": Success)+"
39+
} else {
40+
append tserr "(\nWARNING: .*\n .*/id: cannot find name for group ID \\S+)+"
41+
}
42+
}
3643
foreach param $statelist {
3744
append tserr "\n$param\\s+.*"
3845
}

0 commit comments

Comments
 (0)