diff --git a/sumdb/dirhash/hash.go b/sumdb/dirhash/hash.go
index ef5df6f..350403f 100644
--- a/sumdb/dirhash/hash.go
+++ b/sumdb/dirhash/hash.go
@@ -90,7 +90,10 @@
 		}
 		if info.IsDir() {
 			return nil
+		} else if file == dir {
+			return fmt.Errorf("%s is not a directory", dir)
 		}
+
 		rel := file
 		if dir != "." {
 			rel = file[len(dir)+1:]
diff --git a/sumdb/dirhash/hash_test.go b/sumdb/dirhash/hash_test.go
index ed463c1..f3c504d 100644
--- a/sumdb/dirhash/hash_test.go
+++ b/sumdb/dirhash/hash_test.go
@@ -105,31 +105,49 @@
 }
 
 func TestDirFiles(t *testing.T) {
-	dir, err := ioutil.TempDir("", "dirfiles-test-")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer os.RemoveAll(dir)
-	if err := ioutil.WriteFile(filepath.Join(dir, "xyz"), []byte("data for xyz"), 0666); err != nil {
-		t.Fatal(err)
-	}
-	if err := ioutil.WriteFile(filepath.Join(dir, "abc"), []byte("data for abc"), 0666); err != nil {
-		t.Fatal(err)
-	}
-	if err := os.Mkdir(filepath.Join(dir, "subdir"), 0777); err != nil {
-		t.Fatal(err)
-	}
-	if err := ioutil.WriteFile(filepath.Join(dir, "subdir", "xyz"), []byte("data for subdir xyz"), 0666); err != nil {
-		t.Fatal(err)
-	}
-	prefix := "foo/bar@v2.3.4"
-	out, err := DirFiles(dir, prefix)
-	if err != nil {
-		t.Fatalf("DirFiles: %v", err)
-	}
-	for _, file := range out {
-		if !strings.HasPrefix(file, prefix) {
-			t.Errorf("Dir file = %s, want prefix %s", file, prefix)
+	t.Run("valid directory with files", func(t *testing.T) {
+		dir, err := ioutil.TempDir("", "dirfiles-test-")
+		if err != nil {
+			t.Fatal(err)
 		}
-	}
+		defer os.RemoveAll(dir)
+		if err := ioutil.WriteFile(filepath.Join(dir, "xyz"), []byte("data for xyz"), 0666); err != nil {
+			t.Fatal(err)
+		}
+		if err := ioutil.WriteFile(filepath.Join(dir, "abc"), []byte("data for abc"), 0666); err != nil {
+			t.Fatal(err)
+		}
+		if err := os.Mkdir(filepath.Join(dir, "subdir"), 0777); err != nil {
+			t.Fatal(err)
+		}
+		if err := ioutil.WriteFile(filepath.Join(dir, "subdir", "xyz"), []byte("data for subdir xyz"), 0666); err != nil {
+			t.Fatal(err)
+		}
+		prefix := "foo/bar@v2.3.4"
+		out, err := DirFiles(dir, prefix)
+		if err != nil {
+			t.Fatalf("DirFiles: %v", err)
+		}
+		for _, file := range out {
+			if !strings.HasPrefix(file, prefix) {
+				t.Errorf("Dir file = %s, want prefix %s", file, prefix)
+			}
+		}
+	})
+
+	t.Run("invalid directory", func(t *testing.T) {
+		path := filepath.Join(t.TempDir(), "not-a-directory.txt")
+		if err := os.WriteFile(path, []byte("This is a file."), 0644); err != nil {
+			t.Fatal(err)
+		}
+		defer os.RemoveAll(path)
+
+		out, err := DirFiles(path, "")
+		if err == nil {
+			t.Errorf("DirFiles(...) = %v, expected an error", err)
+		}
+		if len(out) > 0 {
+			t.Errorf("DirFiles(...) = unexpected files %s", out)
+		}
+	})
 }
