Пример #1
0
 def _assert_dirs_equal_cmp(self, diff):
     self.assert_equal(diff.left_only, [])
     self.assert_equal(diff.right_only, [])
     self.assert_equal(diff.diff_files, [])
     self.assert_equal(diff.funny_files, [])
     for filename in diff.common:
         path1 = os.path.join(diff.left, filename)
         path2 = os.path.join(diff.right, filename)
         s1 = os.lstat(path1)
         s2 = os.lstat(path2)
         # Assume path2 is on FUSE if st_dev is different
         fuse = s1.st_dev != s2.st_dev
         attrs = ['st_mode', 'st_uid', 'st_gid', 'st_rdev']
         if has_lchflags:
             attrs.append('st_flags')
         if not fuse or not os.path.isdir(path1):
             # dir nlink is always 1 on our fuse fileystem
             attrs.append('st_nlink')
         d1 = [filename] + [getattr(s1, a) for a in attrs]
         d2 = [filename] + [getattr(s2, a) for a in attrs]
         if not os.path.islink(path1) or utime_supports_fd:
             # Older versions of llfuse does not support ns precision properly
             if fuse and not have_fuse_mtime_ns:
                 d1.append(round(st_mtime_ns(s1), -4))
                 d2.append(round(st_mtime_ns(s2), -4))
             d1.append(round(st_mtime_ns(s1), st_mtime_ns_round))
             d2.append(round(st_mtime_ns(s2), st_mtime_ns_round))
         d1.append(get_all(path1, follow_symlinks=False))
         d2.append(get_all(path2, follow_symlinks=False))
         self.assert_equal(d1, d2)
     for sub_diff in diff.subdirs.values():
         self._assert_dirs_equal_cmp(sub_diff)
Пример #2
0
 def _assert_dirs_equal_cmp(self, diff):
     self.assert_equal(diff.left_only, [])
     self.assert_equal(diff.right_only, [])
     self.assert_equal(diff.diff_files, [])
     self.assert_equal(diff.funny_files, [])
     for filename in diff.common:
         path1 = os.path.join(diff.left, filename)
         path2 = os.path.join(diff.right, filename)
         s1 = os.lstat(path1)
         s2 = os.lstat(path2)
         # Assume path2 is on FUSE if st_dev is different
         fuse = s1.st_dev != s2.st_dev
         attrs = ['st_mode', 'st_uid', 'st_gid', 'st_rdev']
         if not fuse or not os.path.isdir(path1):
             # dir nlink is always 1 on our fuse fileystem
             attrs.append('st_nlink')
         d1 = [filename] + [getattr(s1, a) for a in attrs]
         d2 = [filename] + [getattr(s2, a) for a in attrs]
         if not os.path.islink(path1) or utime_supports_fd:
             # Older versions of llfuse does not support ns precision properly
             if fuse and not have_fuse_mtime_ns:
                 d1.append(round(st_mtime_ns(s1), -4))
                 d2.append(round(st_mtime_ns(s2), -4))
             d1.append(round(st_mtime_ns(s1), st_mtime_ns_round))
             d2.append(round(st_mtime_ns(s2), st_mtime_ns_round))
         d1.append(get_all(path1, follow_symlinks=False))
         d2.append(get_all(path2, follow_symlinks=False))
         self.assert_equal(d1, d2)
     for sub_diff in diff.subdirs.values():
         self._assert_dirs_equal_cmp(sub_diff)
Пример #3
0
 def stat_attrs(self, st, path):
     item = {
         b'mode': st.st_mode,
         b'uid': st.st_uid, b'user': uid2user(st.st_uid),
         b'gid': st.st_gid, b'group': gid2group(st.st_gid),
         b'mtime': st_mtime_ns(st),
     }
     if self.numeric_owner:
         item[b'user'] = item[b'group'] = None
     xattrs = xattr.get_all(path, follow_symlinks=False)
     if xattrs:
         item[b'xattrs'] = StableDict(xattrs)
     return item
Пример #4
0
 def stat_attrs(self, st, path):
     item = {
         b"mode": st.st_mode,
         b"uid": st.st_uid,
         b"user": uid2user(st.st_uid),
         b"gid": st.st_gid,
         b"group": gid2group(st.st_gid),
         b"mtime": st_mtime_ns(st),
     }
     if self.numeric_owner:
         item[b"user"] = item[b"group"] = None
     xattrs = xattr.get_all(path, follow_symlinks=False)
     if xattrs:
         item[b"xattrs"] = xattrs
     return item
Пример #5
0
 def stat_attrs(self, st, path):
     item = {
         b'mode': st.st_mode,
         b'uid': st.st_uid, b'user': uid2user(st.st_uid),
         b'gid': st.st_gid, b'group': gid2group(st.st_gid),
         b'mtime': int_to_bigint(st_mtime_ns(st))
     }
     if self.numeric_owner:
         item[b'user'] = item[b'group'] = None
     xattrs = xattr.get_all(path, follow_symlinks=False)
     if xattrs:
         item[b'xattrs'] = StableDict(xattrs)
     if has_lchflags and st.st_flags:
         item[b'bsdflags'] = st.st_flags
     acl_get(path, item, st, self.numeric_owner)
     return item
Пример #6
0
 def stat_attrs(self, st, path):
     item = {
         b'mode': st.st_mode,
         b'uid': st.st_uid, b'user': uid2user(st.st_uid),
         b'gid': st.st_gid, b'group': gid2group(st.st_gid),
         b'mtime': st_mtime_ns(st),
     }
     if self.numeric_owner:
         item[b'user'] = item[b'group'] = None
     xattrs = xattr.get_all(path, follow_symlinks=False)
     if xattrs:
         item[b'xattrs'] = StableDict(xattrs)
     if has_lchflags and st.st_flags:
         item[b'bsdflags'] = st.st_flags
     item[b'acl'] = acl_get(path, item, self.numeric_owner)
     return item
Пример #7
0
 def stat_attrs(self, st, path):
     item = {
         b"mode": st.st_mode,
         b"uid": st.st_uid,
         b"user": uid2user(st.st_uid),
         b"gid": st.st_gid,
         b"group": gid2group(st.st_gid),
         b"mtime": st_mtime_ns(st),
     }
     if self.numeric_owner:
         item[b"user"] = item[b"group"] = None
     xattrs = xattr.get_all(path, follow_symlinks=False)
     if xattrs:
         item[b"xattrs"] = StableDict(xattrs)
     if has_lchflags and st.st_flags:
         item[b"bsdflags"] = st.st_flags
     item[b"acl"] = acl_get(path, item, self.numeric_owner)
     return item