summaryrefslogtreecommitdiff
path: root/test/parallel/test-fs-readdir-ucs2.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2016-03-08 20:58:45 -0800
committerJames M Snell <jasnell@gmail.com>2016-03-25 14:21:27 -0700
commit060e5f0c0064e578c2150f13e3f91ac15fdeed92 (patch)
tree50783508a123991a024a9a85a2994d5ef2a83c5d /test/parallel/test-fs-readdir-ucs2.js
parent4d4f3535a9fd7486d7a94d825ac8e92a65bf9121 (diff)
downloadandroid-node-v8-060e5f0c0064e578c2150f13e3f91ac15fdeed92.tar.gz
android-node-v8-060e5f0c0064e578c2150f13e3f91ac15fdeed92.tar.bz2
android-node-v8-060e5f0c0064e578c2150f13e3f91ac15fdeed92.zip
fs: Buffer and encoding enhancements to fs API
This makes several changes: 1. Allow path/filename to be passed in as a Buffer on fs methods 2. Add `options.encoding` to fs.readdir, fs.readdirSync, fs.readlink, fs.readlinkSync and fs.watch. 3. Documentation updates For 1... it's now possible to do: ```js fs.open(Buffer('/fs/foo/bar'), 'w+', (err, fd) => { }); ``` For 2... ```js fs.readdir('/fs/foo/bar', {encoding:'hex'}, (err,list) => { }); fs.readdir('/fs/foo/bar', {encoding:'buffer'}, (err, list) => { }); ``` encoding can also be passed as a string ```js fs.readdir('/fs/foo/bar', 'hex', (err,list) => { }); ``` The default encoding is set to UTF8 so this addresses the discrepency that existed previously between fs.readdir and fs.watch handling filenames differently. Fixes: https://github.com/nodejs/node/issues/2088 Refs: https://github.com/nodejs/node/issues/3519 PR-URL: https://github.com/nodejs/node/pull/5616 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'test/parallel/test-fs-readdir-ucs2.js')
-rw-r--r--test/parallel/test-fs-readdir-ucs2.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/parallel/test-fs-readdir-ucs2.js b/test/parallel/test-fs-readdir-ucs2.js
new file mode 100644
index 0000000000..578723117a
--- /dev/null
+++ b/test/parallel/test-fs-readdir-ucs2.js
@@ -0,0 +1,31 @@
+'use strict';
+
+const common = require('../common');
+const path = require('path');
+const fs = require('fs');
+const assert = require('assert');
+
+if (process.platform !== 'linux') {
+ console.log('1..0 # Skipped: Test is linux specific.');
+ return;
+}
+
+common.refreshTmpDir();
+const filename = '\uD83D\uDC04';
+const root = Buffer.from(`${common.tmpDir}${path.sep}`);
+const filebuff = Buffer.from(filename, 'ucs2');
+const fullpath = Buffer.concat([root, filebuff]);
+
+fs.closeSync(fs.openSync(fullpath, 'w+'));
+
+fs.readdir(common.tmpDir, 'ucs2', (err, list) => {
+ if (err) throw err;
+ assert.equal(1, list.length);
+ const fn = list[0];
+ assert.deepStrictEqual(filebuff, Buffer.from(fn, 'ucs2'));
+ assert.strictEqual(fn, filename);
+});
+
+process.on('exit', () => {
+ fs.unlinkSync(fullpath);
+});