@@ -1492,7 +1492,18 @@ def _new_swd(cls):
 
     @classmethod
     def get_stats(cls, *paths):
-        return dict((path, os.stat(path)) for path in paths)
+        def _single_path_stats(path):
+            all_stats = os.stat(path)
+            stats = dict(
+                (name[3:], getattr(all_stats, name)) for name in dir(all_stats)
+                # skip access (read) time, includes _ns.
+                if name.startswith('st_') and not name.startswith('st_atime'))
+            # st_*time has a second-granularity so it can't be
+            # reliably used to prove that contents have changed or not
+            with open(path, 'rb') as f:  # pylint: disable=invalid-name
+                stats.update(checksum=hashlib.sha256(f.read()).hexdigest())
+            return stats
+        return dict((path, _single_path_stats(path)) for path in paths)
 
     def test_it(self):
         webroot = os.path.join(os.getcwd(), 'public_html')