stderr = p.stderr.getvalue()
self.fail("command failed:\n%s", stderr)
+ def test_cs_snaps_set_insensitive(self):
+ """
+ That setting a charmap fails for an empty directory with snaps.
+ """
+
+ attrs = {
+ "ceph.dir.casesensitive": False,
+ "ceph.dir.normalization": "nfc",
+ "ceph.dir.encoding": "utf8",
+ }
+
+ self.mount_a.run_shell_payload("mkdir -p foo/dir; mkdir foo/.snap/one; rmdir foo/dir")
+ for attr, v in attrs.items():
+ try:
+ self.mount_a.setfattr("foo/", attr, v, helpfulexception=True)
+ except DirectoryNotEmptyError:
+ pass
+ else:
+ self.fail("should fail")
+ try:
+ self.check_cs("foo")
+ except NoSuchAttributeError:
+ pass
+ else:
+ self.fail("should fail")
+
+ def test_cs_parent_snaps_set_insensitive(self):
+ """
+ That setting a charmap succeeds for an empty directory with parent snaps.
+ """
+
+ attrs = {
+ "ceph.dir.casesensitive": False,
+ "ceph.dir.normalization": "nfc",
+ "ceph.dir.encoding": "utf8",
+ }
+
+ self.mount_a.run_shell_payload("mkdir -p foo/{trash,bar}; mkdir foo/.snap/one; rmdir foo/trash;")
+ for attr, v in attrs.items():
+ try:
+ self.mount_a.setfattr("foo/bar", attr, v, helpfulexception=True)
+ except DirectoryNotEmptyError:
+ pass
+ else:
+ self.fail("should fail")
+ try:
+ self.check_cs("foo/bar")
+ except NoSuchAttributeError:
+ pass
+ else:
+ self.fail("should fail")
def test_cs_remount(self):
"""