git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[Outreachy][PATCH 1/2] date: refactor 64 bit prereq code into reusable functions

From
Achu Luma <ach.lumap@gmail.com>
Date
Feb 5, 2024, 16:25 UTC
Message-ID
<20240205162506.1835-1-ach.lumap@gmail.com>

In a following commit we are going to port code from "t/helper/test-date.c" and "t/t0006-date.sh" to a new "t/unit-tests/t-date.c" file using the recently added unit test framework.

We cannot fully port all the code from "t/helper/test-date.c" though, as the test-tool date helper is still used by a number of "t/*.sh" tests. The TIME_IS_64BIT and TIME_T_IS_64BIT prereqs are especially used by "t5000-tar-tree.sh", "t5318-commit-graph.sh" and "t5328-commit-graph-64bit-time.sh" while checking those prereqs will be required in the new "t/unit-tests/t-date.c" file too.

To avoid duplicating in both "t/helper/test-date.c" and "t/unit-tests/t-date.c" the small amount of code checking these prereqs, let's move it into inline functions in "date.h".

The names of these new inline functions contain "TIME_IS_64BIT" or "TIME_T_IS_64BIT" as it will simplify the macros we will use when we will port code to "t/unit-tests/t-date.c" in a following commit.

Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Achu Luma <ach.lumap@gmail.com>
---
 date.h               | 6 ++++++
 t/helper/test-date.c | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/date.h b/date.h
index 6136212a19..fb70490a51 100644
--- a/date.h
+++ b/date.h
@@ -70,4 +70,10 @@ void datestamp(struct strbuf *out);
 timestamp_t approxidate_careful(const char *, int *);
 int date_overflows(timestamp_t date);
 time_t tm_to_time_t(const struct tm *tm);
+static inline int check_prereq_TIME_IS_64BIT(void) {
+	return sizeof(timestamp_t) == 8;
+}
+static inline int check_prereq_TIME_T_IS_64BIT(void) {
+	return sizeof(time_t) == 8;
+}
 #endif
diff --git a/t/helper/test-date.c b/t/helper/test-date.c
index 0683d46574..be0b8679c3 100644
--- a/t/helper/test-date.c
+++ b/t/helper/test-date.c
@@ -126,9 +126,9 @@ int cmd__date(int argc UNUSED, const char **argv)
 	else if (!strcmp(*argv, "getnanos"))
 		getnanos(argv+1);
 	else if (!strcmp(*argv, "is64bit"))
-		return sizeof(timestamp_t) == 8 ? 0 : 1;
+		return !check_prereq_TIME_IS_64BIT();
 	else if (!strcmp(*argv, "time_t-is64bit"))
-		return sizeof(time_t) == 8 ? 0 : 1;
+		return !check_prereq_TIME_T_IS_64BIT();
 	else
 		usage(usage_msg);
 	return 0;
--
2.43.0.windows.1
Next: Achu Luma
Message 1 of 10 in “date: refactor 64 bit prereq code into reusable functions”
  1. Achu LumaFeb 5, 2024
  2. [Outreachy][PATCH 2/2] Port helper/test-date.c to unit-tests/t-date.cAchu Luma, Feb 5, 2024
  3. Ghanshyam ThakkarMar 28, 2024
  4. Junio C HamanoMar 28, 2024
  5. Patrick SteinhardtMay 28, 2024
  6. Junio C HamanoMay 28, 2024
  7. Patrick SteinhardtMay 29, 2024
  8. Johannes SchindelinJun 27, 2024
  9. rsbecker@nexbridge.comFeb 5, 2024
  10. Christian CouderFeb 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.