Fix #13327. utimensat now has the atime and mtime arguments set as optional,
defaulting to None like the other utimes family members. It now accepts
keyword arguments because, unlike other other functions in the family,
it has a `flags` value at the end of the argument list (which
retains its 0 default).
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index cb33477..cdd1108 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -815,11 +815,16 @@
         try:
             now = time.time()
             posix.utimensat(f, support.TESTFN, None, None)
+            posix.utimensat(f, support.TESTFN)
+            posix.utimensat(f, support.TESTFN, flags=os.AT_SYMLINK_NOFOLLOW)
             self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, (None, None), (None, None))
             self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, (now, 0), None)
             self.assertRaises(TypeError, posix.utimensat, f, support.TESTFN, None, (now, 0))
             posix.utimensat(f, support.TESTFN, (int(now), int((now - int(now)) * 1e9)),
                     (int(now), int((now - int(now)) * 1e9)))
+            posix.utimensat(dirfd=f, path=support.TESTFN,
+                            atime=(int(now), int((now - int(now)) * 1e9)),
+                            mtime=(int(now), int((now - int(now)) * 1e9)))
         finally:
             posix.close(f)