From aa9d71413c6eb904b089bc837cde63ed83e75e8d Mon Sep 17 00:00:00 2001 From: Andrew Osheroff Date: Fri, 20 Dec 2019 15:51:46 +0100 Subject: [PATCH] Added failing xattrs test --- test/xattrs.js | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/xattrs.js diff --git a/test/xattrs.js b/test/xattrs.js new file mode 100644 index 0000000..b2e8db9 --- /dev/null +++ b/test/xattrs.js @@ -0,0 +1,65 @@ +const p = require('path') +const fs = require('fs') +const tape = require('tape') +const xattr = require('fs-xattr') + +const Fuse = require('../') +const mnt = require('./fixtures/mnt') +const stat = require('./fixtures/stat') +const { unmount } = require('./helpers') + +tape('xattr reasonable defaults', async function (t) { + const attrs = new Map() + const ops = { + force: true, + readdir: function (path, cb) { + if (path === '/') return process.nextTick(cb, null, ['test']) + return process.nextTick(cb, Fuse.ENOENT) + }, + getattr: function (path, cb) { + if (path === '/') return process.nextTick(cb, null, stat({ mode: 'dir', size: 4096 })) + if (path === '/test') return process.nextTick(cb, null, stat({ mode: 'file', size: 11 })) + return process.nextTick(cb, Fuse.ENOENT) + }, + getxattr: function (path, name, value, size, position, cb) { + console.log('in getxattr here') + return process.nextTick(cb, 0, null) + }, + setxattr: function (path, name, value, size, position, flags, cb) { + attrs.set(name, value) + return process.nextTick(cb, 0) + }, + listxattr: function (path, list, size, cb) { + const list = [ ...attrs ].map(([k, v]) => k) + return process.nextTick(cb, 0, list) + }, + removexattr: function (path, name, cb) { + attrs.delete(name) + return process.nextTick(cb, 0) + } + } + const fuse = new Fuse(mnt, ops, { debug: true }) + const file = p.join(mnt, 'test') + try { + await new Promise((resolve, reject) => { + fuse.mount(function (err) { + if (err) return reject(err) + return resolve() + }) + }) + let attr = await xattr.get(file, 'attr') + t.same(attr, null) + await xattr.set(file, 'attr', 'value') + let list = await xattr.list(file) + t.same(firstList, ['attr']) + await xattr.set(file, 'other_attr', 'value2') + await xattr.remove(file, 'attr', 'value') + list = await xattr.list(file) + t.same(attrList, ['other_attr']) + } catch (err) { + t.fail(err) + } + unmount(fuse, function () { + t.end() + }) +})