diff options
author | isaacs <i@izs.me> | 2010-12-05 11:05:30 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-12-05 15:27:01 -0800 |
commit | dc2b4b2a819307b2168376083f08d1bd818001f5 (patch) | |
tree | b608ac4f0c11bb680c092afcaab132f8ca660f5c | |
parent | 6525c0452299f2fd71869d93a5bcc6062cbb98d1 (diff) | |
download | node-new-dc2b4b2a819307b2168376083f08d1bd818001f5.tar.gz |
test-fs-realpath: move absDir fetching to separate function
-rw-r--r-- | test/simple/test-fs-realpath.js | 266 |
1 files changed, 140 insertions, 126 deletions
diff --git a/test/simple/test-fs-realpath.js b/test/simple/test-fs-realpath.js index bc8e4ada03..162c7af41c 100644 --- a/test/simple/test-fs-realpath.js +++ b/test/simple/test-fs-realpath.js @@ -9,6 +9,28 @@ function tmp(p) { return path.join(common.tmpDir, p); } +var fixturesAbsDir; +var tmpAbsDir; +function getAbsPaths(cb) { + var failed = false; + var did = 0; + var expect = 2; + bashRealpath(common.fixturesDir, function(er, path) { + if (failed) return; + if (er) return cb(failed = er); + fixturesAbsDir = path; + did++; + if (did === expect) cb(); + }); + bashRealpath(common.tmpDir, function(er, path) { + if (failed) return; + if (er) return cb(failed = er); + tmpAbsDir = path; + did++; + if (did === expect) cb(); + }); +} + function asynctest(testBlock, args, callback, assertBlock) { async_expected++; testBlock.apply(testBlock, args.concat(function(err) { @@ -36,10 +58,10 @@ function bashRealpath(path, callback) { function test_simple_relative_symlink(callback) { console.log('test_simple_relative_symlink'); - var entry = common.fixturesDir + '/cycles/symlink', + var entry = common.tmpDir + '/symlink', expected = common.fixturesDir + '/cycles/root.js'; [ - [entry, 'root.js'] + [entry, '../fixtures/cycles/root.js'] ].forEach(function(t) { try {fs.unlinkSync(t[0]);}catch (e) {} fs.symlinkSync(t[1], t[0]); @@ -48,7 +70,7 @@ function test_simple_relative_symlink(callback) { var result = fs.realpathSync(entry); assert.equal(result, expected, 'got ' + common.inspect(result) + ' expected ' + - common.inspect(expected)); + common.inspect(expected)); asynctest(fs.realpath, [entry], callback, function(err, result) { assert.equal(result, expected, 'got ' + @@ -60,30 +82,27 @@ function test_simple_relative_symlink(callback) { function test_simple_absolute_symlink(callback) { console.log('test_simple_absolute_symlink'); - bashRealpath(common.fixturesDir, function(err, fixturesAbsDir) { - if (err) return callback(err); - var entry = fixturesAbsDir + '/cycles/symlink', - expected = fixturesAbsDir + '/nested-index/one/index.js'; - [ - [entry, expected] - ].forEach(function(t) { - try {fs.unlinkSync(t[0]);} catch (e) {} - fs.symlinkSync(t[1], t[0]); - unlink.push(t[0]); - }); - var result = fs.realpathSync(entry); + var entry = fixturesAbsDir + '/cycles/symlink', + expected = fixturesAbsDir + '/nested-index/one/index.js'; + [ + [entry, expected] + ].forEach(function(t) { + try {fs.unlinkSync(t[0]);} catch (e) {} + fs.symlinkSync(t[1], t[0]); + unlink.push(t[0]); + }); + var result = fs.realpathSync(entry); + assert.equal(result, expected, + 'got ' + + common.inspect(result) + + ' expected ' + + common.inspect(expected)); + asynctest(fs.realpath, [entry], callback, function(err, result) { assert.equal(result, expected, 'got ' + common.inspect(result) + ' expected ' + common.inspect(expected)); - asynctest(fs.realpath, [entry], callback, function(err, result) { - assert.equal(result, expected, - 'got ' + - common.inspect(result) + - ' expected ' + - common.inspect(expected)); - }); }); } @@ -213,76 +232,70 @@ function test_deep_symlink_mix(callback) { // todo: check to see that common.fixturesDir is not rooted in the // same directory as our test symlink. // obtain our current realpath using bash (so we can test ourselves) - bashRealpath(common.fixturesDir, function(err, fixturesAbsDir) { - if (err) return callback(err); - /* - /tmp/node-test-realpath-f1 -> ../tmp/node-test-realpath-d1/foo - /tmp/node-test-realpath-d1 -> ../node-test-realpath-d2 - /tmp/node-test-realpath-d2/foo -> ../node-test-realpath-f2 - /tmp/node-test-realpath-f2 - -> /node/test/fixtures/nested-index/one/realpath-c - /node/test/fixtures/nested-index/one/realpath-c - -> /node/test/fixtures/nested-index/two/realpath-c - /node/test/fixtures/nested-index/two/realpath-c -> ../../cycles/root.js - /node/test/fixtures/cycles/root.js (hard) - */ - var entry = tmp('node-test-realpath-f1'); - try { fs.unlinkSync(tmp('node-test-realpath-d2/foo')); } catch (e) {} - try { fs.rmdirSync(tmp('node-test-realpath-d2')); } catch (e) {} - fs.mkdirSync(tmp('node-test-realpath-d2'), 0700); - try { - [ - [entry, '../tmp/node-test-realpath-d1/foo'], - [tmp('node-test-realpath-d1'), '../tmp/node-test-realpath-d2'], - [tmp('node-test-realpath-d2/foo'), '../node-test-realpath-f2'], - [tmp('node-test-realpath-f2'), fixturesAbsDir + - '/nested-index/one/realpath-c'], - [fixturesAbsDir + '/nested-index/one/realpath-c', fixturesAbsDir + - '/nested-index/two/realpath-c'], - [fixturesAbsDir + '/nested-index/two/realpath-c', - '../../cycles/root.js'] - ].forEach(function(t) { - //common.debug('setting up '+t[0]+' -> '+t[1]); - try { fs.unlinkSync(t[0]); } catch (e) {} - fs.symlinkSync(t[1], t[0]); - unlink.push(t[0]); - }); - } finally { - unlink.push(tmp('node-test-realpath-d2')); - } - var expected = fixturesAbsDir + '/cycles/root.js'; - assert.equal(fs.realpathSync(entry), expected); - asynctest(fs.realpath, [entry], callback, function(err, result) { - assert.equal(result, expected, - 'got ' + - common.inspect(result) + - ' expected ' + - common.inspect(expected)); - return true; + /* + /tmp/node-test-realpath-f1 -> ../tmp/node-test-realpath-d1/foo + /tmp/node-test-realpath-d1 -> ../node-test-realpath-d2 + /tmp/node-test-realpath-d2/foo -> ../node-test-realpath-f2 + /tmp/node-test-realpath-f2 + -> /node/test/fixtures/nested-index/one/realpath-c + /node/test/fixtures/nested-index/one/realpath-c + -> /node/test/fixtures/nested-index/two/realpath-c + /node/test/fixtures/nested-index/two/realpath-c -> ../../cycles/root.js + /node/test/fixtures/cycles/root.js (hard) + */ + var entry = tmp('node-test-realpath-f1'); + try { fs.unlinkSync(tmp('node-test-realpath-d2/foo')); } catch (e) {} + try { fs.rmdirSync(tmp('node-test-realpath-d2')); } catch (e) {} + fs.mkdirSync(tmp('node-test-realpath-d2'), 0700); + try { + [ + [entry, '../tmp/node-test-realpath-d1/foo'], + [tmp('node-test-realpath-d1'), '../tmp/node-test-realpath-d2'], + [tmp('node-test-realpath-d2/foo'), '../node-test-realpath-f2'], + [tmp('node-test-realpath-f2'), fixturesAbsDir + + '/nested-index/one/realpath-c'], + [fixturesAbsDir + '/nested-index/one/realpath-c', fixturesAbsDir + + '/nested-index/two/realpath-c'], + [fixturesAbsDir + '/nested-index/two/realpath-c', + '../../cycles/root.js'] + ].forEach(function(t) { + //common.debug('setting up '+t[0]+' -> '+t[1]); + try { fs.unlinkSync(t[0]); } catch (e) {} + fs.symlinkSync(t[1], t[0]); + unlink.push(t[0]); }); + } finally { + unlink.push(tmp('node-test-realpath-d2')); + } + var expected = fixturesAbsDir + '/cycles/root.js'; + assert.equal(fs.realpathSync(entry), expected); + asynctest(fs.realpath, [entry], callback, function(err, result) { + assert.equal(result, expected, + 'got ' + + common.inspect(result) + + ' expected ' + + common.inspect(expected)); + return true; }); } function test_non_symlinks(callback) { console.log('test_non_symlinks'); - bashRealpath(common.fixturesDir, function(err, fixturesAbsDir) { - if (err) return callback(err); - var p = fixturesAbsDir.lastIndexOf('/'); - var entrydir = fixturesAbsDir.substr(0, p); - var entry = fixturesAbsDir.substr(p + 1) + '/cycles/root.js'; - var expected = fixturesAbsDir + '/cycles/root.js'; - var origcwd = process.cwd(); - process.chdir(entrydir); - assert.equal(fs.realpathSync(entry), expected); - asynctest(fs.realpath, [entry], callback, function(err, result) { - process.chdir(origcwd); - assert.equal(result, expected, - 'got ' + - common.inspect(result) + - ' expected ' + - common.inspect(expected)); - return true; - }); + var p = fixturesAbsDir.lastIndexOf('/'); + var entrydir = fixturesAbsDir.substr(0, p); + var entry = fixturesAbsDir.substr(p + 1) + '/cycles/root.js'; + var expected = fixturesAbsDir + '/cycles/root.js'; + var origcwd = process.cwd(); + process.chdir(entrydir); + assert.equal(fs.realpathSync(entry), expected); + asynctest(fs.realpath, [entry], callback, function(err, result) { + process.chdir(origcwd); + assert.equal(result, expected, + 'got ' + + common.inspect(result) + + ' expected ' + + common.inspect(expected)); + return true; }); } @@ -308,46 +321,44 @@ assert.equal(upone, uponeActual, // realpath(root+'/a/link/c/x.txt') ==> root+'/a/b/c/x.txt' function test_abs_with_kids(cb) { console.log('test_abs_with_kids'); - bashRealpath(common.fixturesDir, function(err, fixturesAbsDir) { - var root = fixturesAbsDir + '/node-test-realpath-abs-kids'; - function cleanup() { - ['/a/b/c/x.txt', - '/a/link' - ].forEach(function(file) { - try {fs.unlinkSync(root + file)} catch (ex) {} - }); - ['/a/b/c', - '/a/b', - '/a', - '' - ].forEach(function(folder) { - try {fs.rmdirSync(root + folder)} catch (ex) {} - }); - } - function setup() { - cleanup(); - ['', - '/a', - '/a/b', - '/a/b/c' - ].forEach(function(folder) { - console.log('mkdir ' + root + folder); - fs.mkdirSync(root + folder, 0700); - }); - fs.writeFileSync(root + '/a/b/c/x.txt', 'foo'); - fs.symlinkSync(root + '/a/b', root + '/a/link'); - } - setup(); - var linkPath = root + '/a/link/c/x.txt'; - var expectPath = root + '/a/b/c/x.txt'; - var actual = fs.realpathSync(linkPath); - // console.log({link:linkPath,expect:expectPath,actual:actual},'sync'); - assert.equal(actual, expectPath); - asynctest(fs.realpath, [linkPath], cb, function(er, actual) { - // console.log({link:linkPath,expect:expectPath,actual:actual},'async'); - assert.equal(actual, expectPath); - cleanup(); + var root = fixturesAbsDir + '/node-test-realpath-abs-kids'; + function cleanup() { + ['/a/b/c/x.txt', + '/a/link' + ].forEach(function(file) { + try {fs.unlinkSync(root + file)} catch (ex) {} + }); + ['/a/b/c', + '/a/b', + '/a', + '' + ].forEach(function(folder) { + try {fs.rmdirSync(root + folder)} catch (ex) {} }); + } + function setup() { + cleanup(); + ['', + '/a', + '/a/b', + '/a/b/c' + ].forEach(function(folder) { + console.log('mkdir ' + root + folder); + fs.mkdirSync(root + folder, 0700); + }); + fs.writeFileSync(root + '/a/b/c/x.txt', 'foo'); + fs.symlinkSync(root + '/a/b', root + '/a/link'); + } + setup(); + var linkPath = root + '/a/link/c/x.txt'; + var expectPath = root + '/a/b/c/x.txt'; + var actual = fs.realpathSync(linkPath); + // console.log({link:linkPath,expect:expectPath,actual:actual},'sync'); + assert.equal(actual, expectPath); + asynctest(fs.realpath, [linkPath], cb, function(er, actual) { + // console.log({link:linkPath,expect:expectPath,actual:actual},'async'); + assert.equal(actual, expectPath); + cleanup(); }); } @@ -374,7 +385,10 @@ function runNextTest(err) { ' subtests completed OK for fs.realpath'); else test(runNextTest); } -runNextTest(); +getAbsPaths(function(er) { + if (er) throw er; + runNextTest(); +}); assert.equal('/', fs.realpathSync('/')); |