Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!-- Any copyright is dedicated to the Public Domain.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test the IOUtils file I/O API</title>
<link rel="stylesheet" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
<script src="file_ioutils_test_fixtures.js"></script>
<script>
"use strict";
const { Assert } = ChromeUtils.importESModule(
);
const ATTR = "bogus.attr";
const VALUE = new TextEncoder().encode("bogus");
add_task(async function test_macXAttr() {
const tmpDir = PathUtils.join(PathUtils.tempDir, "ioutils-macos-xattr.tmp.d");
await createDir(tmpDir);
const path = PathUtils.join(tmpDir, "file.tmp");
ok(!await IOUtils.exists(path), "File should not exist");
await IOUtils.writeUTF8(path, "");
ok(
!await IOUtils.hasMacXAttr(path, ATTR),
"File does not have an extended attribute at creation"
);
info("Testing getting an attribute that does not exist");
await Assert.rejects(
IOUtils.getMacXAttr(path, ATTR),
/NotFoundError: Could not get extended attribute `bogus.attr' from `.*': the file does not have the attribute/,
"IOUtils::getMacXAttr rejects when the attribute does not exist"
);
info("Testing setting an attribute");
await IOUtils.setMacXAttr(path, ATTR, VALUE);
ok(
await IOUtils.hasMacXAttr(path, ATTR),
"File has extended attribute after setting"
);
{
info("Testing getting an attribute")
const value = await IOUtils.getMacXAttr(path, ATTR);
Assert.deepEqual(
Array.from(value),
Array.from(VALUE),
"Attribute value should match"
);
}
info("Testing removing an attribute");
await IOUtils.delMacXAttr(path, ATTR);
await Assert.rejects(
IOUtils.getMacXAttr(path, ATTR),
/NotFoundError: Could not get extended attribute `bogus.attr' from `.*': the file does not have the attribute/,
"IOUtils::delMacXAttr removes the attribute"
);
ok(
!await IOUtils.hasMacXAttr(path, ATTR),
"File does not have extended attribute after removing"
);
info("Testing removing an attribute that does not exist");
await Assert.rejects(
IOUtils.delMacXAttr(path, ATTR),
/NotFoundError: Could not delete extended attribute `bogus.attr' from `.*': the file does not have the attribute/,
"IOUtils::delMacXAttr rejects when the attribute does not exist"
);
await cleanup(tmpDir);
});
</script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
</body>
</html>