diff --git a/test/test_realpath.c b/test/test_realpath.c
index 5f4dcb84ac5592caf2dd93cfe87f6fe2271ca9ad..ad71421dcc742a0d1422c64f60a274da0fd1d6ae 100644
--- a/test/test_realpath.c
+++ b/test/test_realpath.c
@@ -1,6 +1,6 @@
-
 /*
  * Copyright (c) 2019 Christian Cornelssen
+ * Copyright (c) 2024 Frederick H. G. Wright II <fw@fwright.net>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -28,49 +28,66 @@ typedef char * (*strfunc_t)(const char *, char *);
 typedef struct { char *realpath; } rpv_t;
 typedef struct { strfunc_t realpath; } rpf_t;
 
-#include <stdlib.h>
+#include <assert.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
-#include <assert.h>
+#include <unistd.h>
 
-int main() {
-    /* Test with direct function call */
-    const char *p = realpath(".", NULL);	/* bus error up to 10.5 */
-    if (!p) return 1;
-    printf("cwd = %s\n", p);
-    printf("realpath(path, NULL) supported.\n");
+#include <sys/param.h>
 
-    /* Test with name (reference) only */
-    {
-        strfunc_t f = realpath;
-        const char *q = f(".", NULL);
-        if (!q) return 1;
-        assert (!strcmp(q, p));
-        printf("f = realpath, f(path, NULL) supported.\n");
-        free((void*)q);
-    }
+int
+main(int argc, char *argv[])
+{
+  int verbose = 0;
+  const char *p, *q;
+  strfunc_t f;
+  rpf_t rpf = { realpath };
+  rpv_t rpv;
+  char buf[PATH_MAX], cwd[MAXPATHLEN];
 
-    /* Test with function macro disabler */
-    {
-        const char *q = (realpath)(".", NULL);
-        if (!q) return 1;
-        assert (!strcmp(q, p));
-        printf("(realpath)(path, NULL) supported.\n");
-        free((void*)q);
-    }
+  if (argc > 1 && !strcmp(argv[1], "-v")) verbose = 1;
 
-    /* Test with same-named fields */
-    {
-        rpf_t rpf = { realpath };
-	rpv_t rpv;
-        rpv.realpath = rpf.realpath(".", NULL);
-        if (!rpv.realpath) return 1;
-        assert (!strcmp(rpv.realpath, p));
-        printf("rpv.realpath = rpf.realpath(path, NULL) supported.\n");
-        free((void*)rpv.realpath);
-    }
+  (void) getcwd(cwd, sizeof(cwd));
+  if (verbose) {
+    printf("Starting realpath test.\n");
+    printf("cwd = %s\n", cwd);
+  }
 
-    free((void*)p);
-    return 0;
-}
+  /* Test traditional version with supplied buffer */
+  p = realpath(".", buf);
+  assert(p && "realpath(path, buf) returned NULL");
+  if (verbose) printf("realpath(path, buf) supported.\n");
 
+  /* Test with direct function call */
+  q = realpath(".", NULL);
+  assert(q && "realpath(path, NULL) returned NULL");
+  assert (!strcmp(q, p) && "realpath(path, NULL) miscompared");
+  if (verbose) printf("realpath(path, NULL) supported.\n");
+  free((void*)q);
+
+  /* Test with name (reference) only */
+  f = realpath;
+  q = f(".", NULL);
+  assert(q && "realpath, f(path, NULL) returned NULL");
+  assert (!strcmp(q, p) && "realpath, f(path, NULL) miscompared");
+  if (verbose) printf("f = realpath, f(path, NULL) supported.\n");
+  free((void*)q);
+
+  /* Test with function macro disabler */
+  q = (realpath)(".", NULL);
+  assert(q && "(realpath)(path, NULL) returned NULL");
+  assert (!strcmp(q, p) && "(realpath)(path, NULL) miscompared");
+  if (verbose) printf("(realpath)(path, NULL) supported.\n");
+  free((void*)q);
+
+  /* Test with same-named fields */
+  rpv.realpath = rpf.realpath(".", NULL);
+  assert(rpv.realpath && "rpf.realpath(path, NULL) returned NULL");
+  assert (!strcmp(rpv.realpath, p) && "rpf.realpath(path, NULL) miscompared");
+  if (verbose) printf("rpv.realpath = rpf.realpath(path, NULL) supported.\n");
+  free((void*)rpv.realpath);
+
+  printf("realpath test succeeded.\n");
+  return 0;
+}