diff --git a/src/libutil/tests/tests.cc b/src/libutil/tests/tests.cc
index 0fb4411e8..1b016430d 100644
--- a/src/libutil/tests/tests.cc
+++ b/src/libutil/tests/tests.cc
@@ -86,12 +86,10 @@ namespace nix {
      * dirOf
      * --------------------------------------------------------------------------*/
 
-    // XXX: according to the doc of `dirOf`, dirOf("/") and dirOf("/foo")
-    // should both return "" but it actually returns "/" in both cases
-    TEST(dirOf, DISABLED_returnsEmptyStringForRoot) {
+    TEST(dirOf, returnsEmptyStringForRoot) {
         auto p = dirOf("/");
 
-        ASSERT_EQ(p, "");
+        ASSERT_EQ(p, "/");
     }
 
     TEST(dirOf, returnsFirstPathComponent) {
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index 8770add64..38a0f7a5c 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -58,8 +58,8 @@ Path canonPath(const Path & path, bool resolveSymlinks = false);
 
 /* Return the directory part of the given canonical path, i.e.,
    everything before the final `/'.  If the path is the root or an
-   immediate child thereof (e.g., `/foo'), this means an empty string
-   is returned. */
+   immediate child thereof (e.g., `/foo'), this means `/'
+   is returned.*/
 Path dirOf(const Path & path);
 
 /* Return the base name of the given canonical path, i.e., everything