diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 70e6bea37..77a1a56fe 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -1333,8 +1333,17 @@ func Test_edit_complete_very_long_name()
   call assert_equal(5000, &columns)
   set noswapfile
   let dirname = getcwd() . "/Xdir"
-  let longdirname = dirname . repeat('/' . repeat('d', 255), 4)
-  let longfilename = longdirname . '/' . repeat('a', 255)
+  if has('osx')
+    " On macOS, NAME_MAX is 255 and PATH_MAX is 1024.  Observe those
+    " limitations, or mkdir() and write() will fail due to ENAMETOOLONG.
+    " No component of a pathname is allowed to exceed NAME_MAX bytes.
+    let longdirname = dirname . repeat('/' . repeat('d', 254), 4)
+    let longdirname = longdirname[0:767] " ((PATH_MAX - 1) - NAME_MAX) bytes
+    let longfilename = longdirname . '/' . repeat('a', 254)
+  else
+    let longdirname = dirname . repeat('/' . repeat('d', 255), 4)
+    let longfilename = longdirname . '/' . repeat('a', 255)
+  endif
   call mkdir(longdirname, 'p')
   call writefile(['Totum', 'Table'], longfilename)
   new
