Add a manual test helper script, foreachzone
This makes it possible, on a system with /usr/{lib,share}/zoneinfo/, to systematically run a command with TZ set to each system-supported zone. For example, it can be used to verify that a corelib/time/ test passes regardless of the valid setting of TZ. Change-Id: I6ea9a64d8bcb745aea80ab9ae431602d3e3265a1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
9f11574a7d
commit
462d3547f7
30
tests/manual/corelib/time/foreachzone
Executable file
30
tests/manual/corelib/time/foreachzone
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
# Usage: foreachzone command [args...]
|
||||
#
|
||||
# The command is run with eval, so can include embedded shell
|
||||
# metacharacters such as | and ||. It is run in a sub-shell, so can
|
||||
# change environment or cd to a different directory without
|
||||
# complicating later runs of the same command.
|
||||
#
|
||||
# It is run repeatedly, with the TZ environment variable set to each
|
||||
# timezone name in turn, excluding the copies of zoneinfo/ under its
|
||||
# posix/ and right/ sub-dirs. Symbolic links are included (as long as
|
||||
# they point to valid zone data).
|
||||
#
|
||||
# For example, in the top level of a build tree,
|
||||
# foreachzone ninja tst_qdate_check
|
||||
# will run all the QDate tests in every time zone (this may take some
|
||||
# time).
|
||||
|
||||
DIR=/usr/share/zoneinfo
|
||||
[ -d "$DIR" ] || DIR=/usr/lib/zoneinfo
|
||||
|
||||
find $DIR -type d \( -name posix -o -name right \) -prune -o \( -type f -o -type l \) -print \
|
||||
| while read f
|
||||
do
|
||||
# To filter out symlinks in zoneinfo/ itself, uncomment this line:
|
||||
# echo "$f" | grep -wq 'zoneinfo/.*/' || [ ! -h "$f" ] || continue
|
||||
# To skip all symlinks, omit the -L here:
|
||||
file -L "$f" | grep -wq 'timezone data .*, version' || continue
|
||||
( export TZ=${f#*/zoneinfo/}; eval "$@" )
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user