Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 579688 | Differences between
and this patch

Collapse All | Expand All

(-)a/test-functions (-1 / +115 lines)
Line 0 Link Here
0
- 
1
#!/bin/bash
2
3
# Presently, only the is_older_than() function is tested.
4
# Requires mktemp(1) and touch(1) from GNU coreutils.
5
6
bailout() {
7
	printf 'Bail out! %s.\n' "$1"
8
	exit 1
9
}
10
11
printf 'TAP version 14\n'
12
13
if ! source ./functions.sh; then
14
	bailout "Couldn't source ./functions.sh"
15
fi
16
17
unset -v dir
18
trap '[[ ${dir} ]] && rm -rf -- "${dir}"' EXIT
19
20
dir=$(mktemp -d) \
21
&& CDPATH= cd -- "${dir}" \
22
|| bailout "Couldn't create or change to the temp dir"
23
24
# The mtimes need to be explicitly assigned. Empirical evidence has shown
25
# theat executing mkdir(1) sequentially, with a single operand each time,
26
# does not guarantee the order of the resulting mtimes. As such, the
27
# implementation of touch(1) from coreutils is required.
28
export TZ=UTC
29
tstamp=197001010000
30
for age in older newer; do
31
	mkdir "${age}"{,-empty} \
32
	&& touch -m -t "${tstamp%0}1" "${age}"/file \
33
	&& touch -m -t "${tstamp}" "${age}"{,-empty} \
34
	|| bailout "Couldn't create or adjust the mtimes of the sample files"
35
	tstamp=197001010100 # add an hour
36
done
37
38
tests=(
39
	1  ''            ''
40
	0  newer         newer
41
	1  newer         newer-empty
42
	0  newer         newer/file
43
	1  newer         non-existent
44
	1  newer         older
45
	1  newer         older-empty
46
	1  newer         older/file
47
	0  newer-empty   newer
48
	1  newer-empty   newer-empty
49
	0  newer-empty   newer/file
50
	1  newer-empty   non-existent
51
	1  newer-empty   older
52
	1  newer-empty   older-empty
53
	1  newer-empty   older/file
54
	1  newer/file    newer
55
	1  newer/file    newer-empty
56
	1  newer/file    newer/file
57
	1  newer/file    non-existent
58
	1  newer/file    older
59
	1  newer/file    older-empty
60
	1  newer/file    older/file
61
	0  non-existent  newer
62
	0  non-existent  newer-empty
63
	0  non-existent  newer/file
64
	1  non-existent  non-existent
65
	0  non-existent  older
66
	0  non-existent  older-empty
67
	0  non-existent  older/file
68
	0  older         newer
69
	0  older         newer-empty
70
	0  older         newer/file
71
	1  older         non-existent
72
	0  older         older
73
	1  older         older-empty
74
	0  older         older/file
75
	0  older-empty   newer
76
	0  older-empty   newer-empty
77
	0  older-empty   newer/file
78
	1  older-empty   non-existent
79
	0  older-empty   older
80
	1  older-empty   older-empty
81
	0  older-empty   older/file
82
	0  older/file    newer
83
	0  older/file    newer-empty
84
	0  older/file    newer/file
85
	1  older/file    non-existent
86
	1  older/file    older
87
	1  older/file    older-empty
88
	1  older/file    older/file
89
)
90
91
total=$(( ${#tests[@]} / 3 ))
92
passed=0
93
94
printf '1..%d\n' "${total}"
95
96
for ((i = 0; i < total; i++)); do
97
	set -- "${tests[@]:i*3:3}"
98
	if [[ $2 && $3 ]]; then
99
		desc="is_older_than $2 $3 (expecting $1)"
100
		is_older_than "$2" "$3"
101
	else
102
		desc="is_older_than (expecting $1)"
103
		is_older_than
104
	fi
105
	if (( $? == $1 )); then
106
		(( ++passed ))
107
	else
108
		printf 'not '
109
	fi
110
	printf 'ok %d - %s\n' "$((i + 1))" "${desc}"
111
done
112
113
printf >&2 '%d/%d tests passed.\n' "${passed}" "${total}"
114
115
exit "$(( passed < total ))"

Return to bug 579688