Index: test/testfileinfo.c
===================================================================
--- test/testfileinfo.c	(revision 1872894)
+++ test/testfileinfo.c	(working copy)
@@ -23,6 +23,8 @@
 #include "apr_lib.h"
 #include "testutil.h"
 
+#define ROOTNAME "/."
+#define PATHNAME "data"
 #define FILENAME "data/file_datafile.txt"
 #define NEWFILENAME "data/new_datafile.txt"
 #define NEWFILEDATA "This is new text in a new file."
@@ -148,7 +150,7 @@
     ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
 }
 
-static void test_stat_eq_finfo(abts_case *tc, void *data)
+static void test_stat_file_eq_finfo(abts_case *tc, void *data)
 {
     apr_file_t *thefile;
     apr_finfo_t finfo;
@@ -171,6 +173,62 @@
     finfo_equal(tc, &stat_finfo, &finfo);
 }
 
+static void test_stat_path_eq_finfo(abts_case *tc, void *data)
+{
+    apr_file_t *thefile;
+    apr_finfo_t finfo;
+    apr_finfo_t stat_finfo;
+    apr_status_t rv;
+
+#ifdef WIN32
+    /* APR_OPENINFO | APR_OPENLINK | APR_READCONTROL is only interesting on Windows */
+    rv = apr_file_open(&thefile, PATHNAME, 0x00700000, APR_FPROT_OS_DEFAULT, p);
+#else
+    rv = apr_file_open(&thefile, PATHNAME, APR_FOPEN_READ, APR_FPROT_OS_DEFAULT, p);
+#endif
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile);
+
+    /* Opening the file may have toggled the atime member (time last
+     * accessed), so fetch our apr_stat() after getting the fileinfo 
+     * of the open file...
+     */
+    rv = apr_stat(&stat_finfo, PATHNAME, APR_FINFO_LINK | APR_FINFO_NORM, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    apr_file_close(thefile);
+
+    finfo_equal(tc, &stat_finfo, &finfo);
+}
+
+static void test_stat_root_eq_finfo(abts_case *tc, void *data)
+{
+    apr_file_t *thefile;
+    apr_finfo_t finfo;
+    apr_finfo_t stat_finfo;
+    apr_status_t rv;
+
+#ifdef WIN32
+    /* APR_OPENINFO | APR_OPENLINK | APR_READCONTROL is only interesting on Windows */
+    rv = apr_file_open(&thefile, ROOTNAME, 0x00700000, APR_FPROT_OS_DEFAULT, p);
+#else
+    rv = apr_file_open(&thefile, ROOTNAME, APR_FOPEN_READ, APR_FPROT_OS_DEFAULT, p);
+#endif
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+    rv = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile);
+
+    /* Opening the file may have toggled the atime member (time last
+     * accessed), so fetch our apr_stat() after getting the fileinfo 
+     * of the open file...
+     */
+    rv = apr_stat(&stat_finfo, ROOTNAME, APR_FINFO_LINK | APR_FINFO_NORM, p);
+    ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
+
+    apr_file_close(thefile);
+
+    finfo_equal(tc, &stat_finfo, &finfo);
+}
+
 static void test_buffered_write_size(abts_case *tc, void *data)
 {
     const apr_size_t data_len = strlen(NEWFILEDATA);
@@ -254,7 +312,9 @@
 
     abts_run_test(suite, test_info_get, NULL);
     abts_run_test(suite, test_stat, NULL);
-    abts_run_test(suite, test_stat_eq_finfo, NULL);
+    abts_run_test(suite, test_stat_file_eq_finfo, NULL);
+    abts_run_test(suite, test_stat_path_eq_finfo, NULL);
+    abts_run_test(suite, test_stat_root_eq_finfo, NULL);
     abts_run_test(suite, test_buffered_write_size, NULL);
     abts_run_test(suite, test_mtime_set, NULL);
 
