public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-functions:master commit in: /
Date: Sat, 18 May 2024 14:04:39 +0000 (UTC)	[thread overview]
Message-ID: <1716027274.730f6a6388342cdbe2a80fe78cfce30b8c952cab.sam@gentoo> (raw)

commit:     730f6a6388342cdbe2a80fe78cfce30b8c952cab
Author:     Kerin Millar <kfm <AT> plushkava <DOT> net>
AuthorDate: Sat May 18 10:04:13 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat May 18 10:14:34 2024 +0000
URL:        https://gitweb.gentoo.org/proj/gentoo-functions.git/commit/?id=730f6a63

test-functions: Fix a spurious test failure

The second-to-last commit added a test case for the die() function but
also made it so that the exit status of each test is always compared to
the expected value with the -eq operator. This turns out be
insufficiently inflexible. For example, cd may return 2 in bash but 1 in
another shell.

Address this by requiring for each operand slice defined by a callback
function to begin with an operator name, and by having the
iterate_tests() function use the operator at the time of invoking the
test utility.

Signed-off-by: Kerin Millar <kfm <AT> plushkava.net>

 test-functions | 373 +++++++++++++++++++++++++++++----------------------------
 1 file changed, 188 insertions(+), 185 deletions(-)

diff --git a/test-functions b/test-functions
index e087a3c..4360eb2 100755
--- a/test-functions
+++ b/test-functions
@@ -26,14 +26,14 @@ cleanup_tmpdir() {
 
 test_chdir() {
 	set -- \
-		1  grandchild  \
-		1         var  \
-		0          -L  \
-		0          -p  \
-		0          -e  \
-		0          -@  \
-		0           -  \
-		0       child
+		ge  1  grandchild  \
+		ge  1         var  \
+		eq  0          -L  \
+		eq  0          -p  \
+		eq  0          -e  \
+		eq  0          -@  \
+		eq  0           -  \
+		eq  0       child
 
 	if ! mkdir -p -- -L -p -e -@ - child child/grandchild; then
 		bailout "Couldn't set up all test directories"
@@ -51,11 +51,12 @@ test_chdir() {
 		&& cd - >/dev/null
 	}
 
-	iterate_tests 2 "$@"
+	iterate_tests 3 "$@"
 }
 
 test_chdir_noop() {
-	set -- 0 ''
+	set -- \
+		eq  0  ''
 
 	callback() {
 		shift
@@ -65,15 +66,15 @@ test_chdir_noop() {
 		|| { cd - >/dev/null; false; }
 	}
 
-	iterate_tests 2 "$@"
+	iterate_tests 3 "$@"
 }
 
 test_die() {
 	set -- \
-		1     0 \
-		2     2 \
-		126 126 \
-		255 255
+		eq    1    0 \
+		eq    2    2 \
+		eq  126  126 \
+		eq  255  255
 
 	callback() {
 		test_description="( exit "$2" ); die"
@@ -87,7 +88,7 @@ test_die() {
 		fi
 	}
 
-	iterate_tests 2 "$@"
+	iterate_tests 3 "$@"
 }
 
 test_ebegin() {
@@ -111,60 +112,60 @@ test_ebegin() {
 
 test_is_older_than() {
 	set -- \
-		1  N/A           N/A \
-		1  newer         N/A \
-		1  newer-empty   N/A \
-		1  newer/file    N/A \
-		1  non-existent  N/A \
-		0  newer         newer \
-		1  newer         newer-empty \
-		0  newer         newer/file \
-		1  newer         non-existent \
-		1  newer         older \
-		1  newer         older-empty \
-		1  newer         older/file \
-		0  newer-empty   newer \
-		1  newer-empty   newer-empty \
-		0  newer-empty   newer/file \
-		1  newer-empty   non-existent \
-		1  newer-empty   older \
-		1  newer-empty   older-empty \
-		1  newer-empty   older/file \
-		1  newer/file    newer \
-		1  newer/file    newer-empty \
-		1  newer/file    newer/file \
-		1  newer/file    non-existent \
-		1  newer/file    older \
-		1  newer/file    older-empty \
-		1  newer/file    older/file \
-		0  non-existent  newer \
-		0  non-existent  newer-empty \
-		0  non-existent  newer/file \
-		1  non-existent  non-existent \
-		0  non-existent  older \
-		0  non-existent  older-empty \
-		0  non-existent  older/file \
-		0  older         newer \
-		0  older         newer-empty \
-		0  older         newer/file \
-		1  older         non-existent \
-		0  older         older \
-		1  older         older-empty \
-		0  older         older/file \
-		0  older-empty   newer \
-		0  older-empty   newer-empty \
-		0  older-empty   newer/file \
-		1  older-empty   non-existent \
-		0  older-empty   older \
-		1  older-empty   older-empty \
-		0  older-empty   older/file \
-		0  older/file    newer \
-		0  older/file    newer-empty \
-		0  older/file    newer/file \
-		1  older/file    non-existent \
-		1  older/file    older \
-		1  older/file    older-empty \
-		1  older/file    older/file
+		ge  1  N/A           N/A \
+		ge  1  newer         N/A \
+		ge  1  newer-empty   N/A \
+		ge  1  newer/file    N/A \
+		ge  1  non-existent  N/A \
+		eq  0  newer         newer \
+		ge  1  newer         newer-empty \
+		eq  0  newer         newer/file \
+		ge  1  newer         non-existent \
+		ge  1  newer         older \
+		ge  1  newer         older-empty \
+		ge  1  newer         older/file \
+		eq  0  newer-empty   newer \
+		ge  1  newer-empty   newer-empty \
+		eq  0  newer-empty   newer/file \
+		ge  1  newer-empty   non-existent \
+		ge  1  newer-empty   older \
+		ge  1  newer-empty   older-empty \
+		ge  1  newer-empty   older/file \
+		ge  1  newer/file    newer \
+		ge  1  newer/file    newer-empty \
+		ge  1  newer/file    newer/file \
+		ge  1  newer/file    non-existent \
+		ge  1  newer/file    older \
+		ge  1  newer/file    older-empty \
+		ge  1  newer/file    older/file \
+		eq  0  non-existent  newer \
+		eq  0  non-existent  newer-empty \
+		eq  0  non-existent  newer/file \
+		ge  1  non-existent  non-existent \
+		eq  0  non-existent  older \
+		eq  0  non-existent  older-empty \
+		eq  0  non-existent  older/file \
+		eq  0  older         newer \
+		eq  0  older         newer-empty \
+		eq  0  older         newer/file \
+		ge  1  older         non-existent \
+		eq  0  older         older \
+		ge  1  older         older-empty \
+		eq  0  older         older/file \
+		eq  0  older-empty   newer \
+		eq  0  older-empty   newer-empty \
+		eq  0  older-empty   newer/file \
+		ge  1  older-empty   non-existent \
+		eq  0  older-empty   older \
+		ge  1  older-empty   older-empty \
+		eq  0  older-empty   older/file \
+		eq  0  older/file    newer \
+		eq  0  older/file    newer-empty \
+		eq  0  older/file    newer/file \
+		ge  1  older/file    non-existent \
+		ge  1  older/file    older \
+		ge  1  older/file    older-empty \
+		ge  1  older/file    older/file
 
 	# The mtimes need to be explicitly assigned. Empirical evidence has
 	# shown that executing mkdir(1) sequentially, with a single operand
@@ -184,24 +185,24 @@ test_is_older_than() {
 		is_older_than "$@"
 	}
 
-	iterate_tests 3 "$@"
+	iterate_tests 4 "$@"
 }
 
 test_get_bootparam() {
 	cmdline="foo gentoo=bar,baz quux"
 	set -- \
-		1  "${cmdline}"                   N/A \
-		1  "${cmdline}"                   '' \
-		1  "gentoo="                      '' \
-		1  "${cmdline}"                   foo \
-		0  "${cmdline}"                   bar \
-		0  "foo gentoo=gentoo=1,bar baz"  bar \
-		0  "foo gentoo=bar,gentoo=1 baz"  bar \
-		0  "${cmdline}"                   baz \
-		1  "${cmdline}"                   bar,baz \
-		0  "foo gentoo=bar,gentoo=1 baz"  gentoo=1 \
-		0  "foo gentoo=gentoo=1,bar baz"  gentoo=1 \
-		1  "${cmdline}"                   quux
+		ge  1  "${cmdline}"                   N/A \
+		ge  1  "${cmdline}"                   '' \
+		ge  1  "gentoo="                      '' \
+		ge  1  "${cmdline}"                   foo \
+		eq  0  "${cmdline}"                   bar \
+		eq  0  "foo gentoo=gentoo=1,bar baz"  bar \
+		eq  0  "foo gentoo=bar,gentoo=1 baz"  bar \
+		eq  0  "${cmdline}"                   baz \
+		ge  1  "${cmdline}"                   bar,baz \
+		eq  0  "foo gentoo=bar,gentoo=1 baz"  gentoo=1 \
+		eq  0  "foo gentoo=gentoo=1,bar baz"  gentoo=1 \
+		ge  1  "${cmdline}"                   quux
 
 	callback() {
 		cmdline=$2
@@ -210,16 +211,16 @@ test_get_bootparam() {
 		printf '%s\n' "${cmdline}" | get_bootparam "$@"
 	}
 
-	iterate_tests 3 "$@"
+	iterate_tests 4 "$@"
 }
 
 test_esyslog() {
 	set -- \
-		1  0  N/A    N/A   N/A \
-		1  0  debug  N/A   N/A \
-		0  0  debug  user  N/A \
-		0  0  debug  user  '' \
-		0  1  debug  user  message
+		ge  1  0  N/A    N/A   N/A \
+		ge  1  0  debug  N/A   N/A \
+		eq  0  0  debug  user  N/A \
+		eq  0  0  debug  user  '' \
+		eq  0  1  debug  user  message
 
 	logger() {
 		# esyslog() ignores empty messages. By overriding logger(1), it
@@ -242,54 +243,54 @@ test_esyslog() {
 		esac
 	}
 
-	iterate_tests 5 "$@"
+	iterate_tests 6 "$@"
 }
 
 test_is_identifier() {
 	set -- \
-		1   ''   \
-		1    _   \
-		1    0   \
-		1   0a   \
-		1   0Z   \
-		1    9   \
-		1   9a   \
-		1   9Z   \
-		1   /a   \
-		1   /Z   \
-		1   .a   \
-		1   .Z   \
-		1   [a   \
-		1   [Z   \
-		1  '`a'  \
-		1  '`Z'  \
-		1  '{a'  \
-		1  '{Z'  \
-		1  '|a'  \
-		1  '|Z'  \
-		1   a/   \
-		1   Z/   \
-		1   a.   \
-		1   Z.   \
-		1   a[   \
-		1   Z[   \
-		1  'a`'  \
-		1  'Z`'  \
-		1  'a{'  \
-		1  'Z{'  \
-		1  'a|'  \
-		1  'Z|'  \
-		0    a   \
-		0    Z   \
-		0   __   \
-		0   _a   \
-		0   _Z   \
-		0   a_   \
-		0   Z_   \
-		0  a_a   \
-		0  a_Z   \
-		0  Z_a   \
-		0  Z_Z
+		ge  1   ''   \
+		ge  1    _   \
+		ge  1    0   \
+		ge  1   0a   \
+		ge  1   0Z   \
+		ge  1    9   \
+		ge  1   9a   \
+		ge  1   9Z   \
+		ge  1   /a   \
+		ge  1   /Z   \
+		ge  1   .a   \
+		ge  1   .Z   \
+		ge  1  '[a'   \
+		ge  1  '[Z'  \
+		ge  1  '`a'  \
+		ge  1  '`Z'  \
+		ge  1  '{a'  \
+		ge  1  '{Z'  \
+		ge  1  '|a'  \
+		ge  1  '|Z'  \
+		ge  1   a/   \
+		ge  1   Z/   \
+		ge  1   a.   \
+		ge  1   Z.   \
+		ge  1  'a['  \
+		ge  1  'Z['  \
+		ge  1  'a`'  \
+		ge  1  'Z`'  \
+		ge  1  'a{'  \
+		ge  1  'Z{'  \
+		ge  1  'a|'  \
+		ge  1  'Z|'  \
+		eq  0    a   \
+		eq  0    Z   \
+		eq  0   __   \
+		eq  0   _a   \
+		eq  0   _Z   \
+		eq  0   a_   \
+		eq  0   Z_   \
+		eq  0  a_a   \
+		eq  0  a_Z   \
+		eq  0  Z_a   \
+		eq  0  Z_Z
 
 		callback() {
 			shift
@@ -297,24 +298,24 @@ test_is_identifier() {
 			is_identifier "$@"
 		}
 
-		iterate_tests 2 "$@"
+		iterate_tests 3 "$@"
 }
 
 test_is_int() {
 	set -- \
-		1  N/A \
-		1  ' ' \
-		1  ' 1 ' \
-		1  '' \
-		1  +1 \
-		1  +008 \
-		1  -008 \
-		1  008 \
-		1  x \
-		0  0 \
-		0  1 \
-		0  -1 \
-		0  123456789
+		ge  1  N/A \
+		ge  1  ' ' \
+		ge  1  ' 1 ' \
+		ge  1  '' \
+		ge  1  +1 \
+		ge  1  +008 \
+		ge  1  -008 \
+		ge  1  008 \
+		ge  1  x \
+		eq  0  0 \
+		eq  0  1 \
+		eq  0  -1 \
+		eq  0  123456789
 
 		callback() {
 			shift
@@ -322,19 +323,19 @@ test_is_int() {
 			is_int "$@"
 		}
 
-		iterate_tests 2 "$@"
+		iterate_tests 3 "$@"
 }
 
 test_is_visible() {
 	set -- \
-		1  '' \
-		1  ' ' \
-		1  "$(printf '\t')" \
-		1  "$(printf '\a')" \
-		0  . \
-		0  ' . ' \
-		0  "$(printf '\t.\t')" \
-		0  "$(printf '\a.\a')"
+		ge  1  '' \
+		ge  1  ' ' \
+		ge  1  "$(printf '\t')" \
+		ge  1  "$(printf '\a')" \
+		eq  0  . \
+		eq  0  ' . ' \
+		eq  0  "$(printf '\t.\t')" \
+		eq  0  "$(printf '\a.\a')"
 
 		callback() {
 			shift
@@ -342,35 +343,35 @@ test_is_visible() {
 			_is_visible "$@"
 		}
 
-		iterate_tests 2 "$@"
+		iterate_tests 3 "$@"
 }
 
 test_yesno() {
 	set -- \
-		0  yes \
-		0  YES \
-		0  Yes \
-		0  true \
-		0  TRUE \
-		0  true \
-		0  on \
-		0  ON \
-		0  On \
-		0  1 \
-		1  no \
-		1  NO \
-		1  No \
-		1  false \
-		1  FALSE \
-		1  False \
-		1  off \
-		1  OFF \
-		1  Off \
-		1  0 \
-		1  not_a_nameref \
-		1  not-a-valid-nameref \
-		1  '_"; set -- yes # code injection' \
-		0  truthful_nameref
+		eq  0  yes \
+		eq  0  YES \
+		eq  0  Yes \
+		eq  0  true \
+		eq  0  TRUE \
+		eq  0  true \
+		eq  0  on \
+		eq  0  ON \
+		eq  0  On \
+		eq  0  1 \
+		ge  1  no \
+		ge  1  NO \
+		ge  1  No \
+		ge  1  false \
+		ge  1  FALSE \
+		ge  1  False \
+		ge  1  off \
+		ge  1  OFF \
+		ge  1  Off \
+		ge  1  0 \
+		ge  1  not_a_nameref \
+		ge  1  not-a-valid-nameref \
+		ge  1  '_"; set -- yes # code injection' \
+		eq  0  truthful_nameref
 
 		# shellcheck disable=2034
 		truthful_nameref=yes
@@ -381,7 +382,7 @@ test_yesno() {
 			yesno "$@"
 		}
 
-		iterate_tests 2 "$@"
+		iterate_tests 3 "$@"
 }
 
 iterate_tests() {
@@ -393,7 +394,7 @@ iterate_tests() {
 	i=0
 	while [ "$((i += 1))" -le "${total}" ]; do
 		code="callback"
-		j=0
+		j=1
 		while [ "$((j += 1))" -le "${slice_width}" ]; do
 			if eval "[ \"\$${j}\" = N/A ]"; then
 				break
@@ -402,12 +403,14 @@ iterate_tests() {
 			fi
 		done
 		eval "${code}"
-		if [ "$?" -eq "$1" ]; then
+		retval=$?
+		if [ "${retval}" -"$1" "$2" ]; then
 			passed=$((passed + 1))
 		else
 			printf 'not '
 		fi
-		printf 'ok %d - %s (expecting %s)\n' "$((testnum += 1))" "${test_description}" "$1"
+		printf 'ok %d - %s (test %d -%s %d)\n' \
+			"$((testnum += 1))" "${test_description}" "${retval}" "$1" "$2"
 		shift "${slice_width}"
 	done
 	return "$(( passed < total ))"


             reply	other threads:[~2024-05-18 14:04 UTC|newest]

Thread overview: 295+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-18 14:04 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-14 12:59 [gentoo-commits] proj/gentoo-functions:master commit in: / Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-10-14 12:59 Sam James
2025-05-13  0:30 Sam James
2025-05-13  0:30 Sam James
2025-05-13  0:30 Sam James
2025-05-13  0:30 Sam James
2025-05-13  0:30 Sam James
2024-10-05  7:25 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-10-05  4:15 Sam James
2024-08-11 10:23 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-11 10:11 Sam James
2024-08-05 20:39 Sam James
2024-08-05 20:39 Sam James
2024-08-05  2:03 Sam James
2024-08-05  2:02 Sam James
2024-08-05  2:02 Sam James
2024-08-05  2:02 Sam James
2024-08-05  2:02 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-08-02 23:14 Sam James
2024-07-08  3:00 Sam James
2024-07-08  2:31 Sam James
2024-07-08  2:31 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-07-07  5:55 Sam James
2024-06-25  4:06 Sam James
2024-06-25  4:06 Sam James
2024-06-25  4:06 Sam James
2024-06-25  4:06 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-06-21 13:14 Sam James
2024-05-24  6:05 Sam James
2024-05-24  1:18 Sam James
2024-05-24  1:18 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-22  1:12 Sam James
2024-05-19 15:27 Sam James
2024-05-19 15:27 Sam James
2024-05-19 15:27 Sam James
2024-05-19 15:27 Sam James
2024-05-18 16:07 Sam James
2024-05-18 16:06 Sam James
2024-05-18 16:06 Sam James
2024-05-18 15:34 Sam James
2024-05-18 15:32 Sam James
2024-05-18 15:32 Sam James
2024-05-18 14:04 Sam James
2024-05-18 14:04 Sam James
2024-05-18 14:04 Sam James
2024-05-18 14:04 Sam James
2024-05-18 14:04 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-17  4:03 Sam James
2024-05-15 10:28 Sam James
2024-05-15 10:28 Sam James
2024-05-14  0:18 Sam James
2024-05-14  0:15 Sam James
2024-05-14  0:12 Sam James
2024-05-14  0:12 Sam James
2024-05-14  0:08 Sam James
2024-05-14  0:08 Sam James
2024-05-14  0:05 Sam James
2024-05-14  0:05 Sam James
2024-05-14  0:05 Sam James
2024-05-14  0:05 Sam James
2024-05-14  0:05 Sam James
2024-02-16 21:35 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-11 16:47 Sam James
2023-06-10  7:23 Sam James
2023-06-10  7:23 Sam James
2023-06-10  6:04 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-10  4:22 Sam James
2023-06-09 11:17 Sam James
2023-06-09 11:11 Sam James
2023-06-09 11:02 Sam James
2023-06-09 11:02 Sam James
2023-06-09 11:02 Sam James
2023-06-09 11:02 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-06-07 11:13 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-19 16:14 Sam James
2023-02-17  7:44 Sam James
2023-02-17  7:44 Sam James
2023-02-17  7:44 Sam James
2023-02-17  1:33 Sam James
2023-02-17  1:33 Sam James
2023-02-17  1:33 Sam James
2023-02-15  8:18 Sam James
2023-02-15  7:48 Sam James
2023-02-15  7:46 Sam James
2023-02-15  7:46 Sam James
2023-02-15  7:46 Sam James
2023-02-15  7:46 Sam James
2023-02-15  7:46 Sam James
2023-02-15  7:46 Sam James
2023-02-15  2:24 Sam James
2023-02-15  2:24 Sam James
2023-02-15  2:24 Sam James
2023-02-14  3:40 Sam James
2023-02-14  3:40 Sam James
2023-02-14  3:40 Sam James
2023-02-14  3:40 Sam James
2023-02-14  0:09 Sam James
2023-02-14  0:09 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-13 21:37 Sam James
2023-02-12 18:53 Sam James
2023-02-12 18:53 Sam James
2023-02-12  6:53 Sam James
2023-02-12  6:53 Sam James
2023-02-12  6:53 Sam James
2023-02-11  1:43 Sam James
2023-02-11  1:43 Sam James
2023-02-10  6:09 Sam James
2023-02-10  6:09 Sam James
2023-02-10  6:09 Sam James
2023-02-09  3:54 Sam James
2023-02-09  3:54 Sam James
2023-02-08  3:37 Sam James
2023-02-08  1:06 Sam James
2023-02-08  0:03 Sam James
2023-02-08  0:03 Sam James
2023-02-07 23:47 Sam James
2023-02-07 23:42 Sam James
2023-02-07 23:42 Sam James
2023-02-07 23:42 Sam James
2023-02-07 23:42 Sam James
2023-02-07  1:08 Sam James
2023-02-07  1:08 Sam James
2023-02-06 13:47 Sam James
2023-02-06  4:32 Sam James
2023-02-06  4:23 Sam James
2023-02-06  4:19 Sam James
2023-02-06  4:10 Sam James
2023-02-06  4:10 Sam James
2023-02-06  3:59 Sam James
2023-02-06  3:59 Sam James
2023-02-06  3:59 Sam James
2022-07-30  5:48 Sam James
2022-07-29  2:03 Sam James
2022-07-29  2:03 Sam James
2022-07-29  2:03 Sam James
2021-08-30 21:14 Mike Gilbert
2021-08-30 21:14 Mike Gilbert
2020-11-19 18:20 Mike Gilbert
2020-11-19 18:20 Mike Gilbert
2020-11-19 18:20 Mike Gilbert
2020-01-26 23:19 Mike Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1716027274.730f6a6388342cdbe2a80fe78cfce30b8c952cab.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox