Browse Source

test: fix test-fs-symlink-dir-junction-relative

* The test no longer relies on being invoked from a particular
    working directory to function properly.
  * fs.symlink() and fs.symlinkSync() are both tested.
  * The test now cleans up after itself.

This commit fixes https://github.com/iojs/io.js/issues/126

PR-URL: https://github.com/iojs/io.js/pull/129
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
archived-io.js-v0.12
Bert Belder 10 years ago
parent
commit
4efc02a582
  1. 62
      test/simple/test-fs-symlink-dir-junction-relative.js

62
test/simple/test-fs-symlink-dir-junction-relative.js

@ -19,50 +19,48 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE. // USE OR OTHER DEALINGS IN THE SOFTWARE.
// Test creating and resolving relative junction or symbolic link
var common = require('../common'); var common = require('../common');
var assert = require('assert'); var assert = require('assert');
var path = require('path'); var path = require('path');
var fs = require('fs'); var fs = require('fs');
var completed = 0; var completed = 0;
var expected_tests = 4; var expected_tests = 2;
// test creating and reading symbolic link
var linkData = path.join(common.fixturesDir, 'cycles');
var linkPath = path.join(common.tmpDir, 'cycles_link');
var relative = '../fixtures/cycles';
// Delete previously created link var linkPath1 = path.join(common.tmpDir, 'junction1');
try { var linkPath2 = path.join(common.tmpDir, 'junction2');
fs.unlinkSync(linkPath); var linkTarget = path.join(common.fixturesDir);
} catch (e) {} var linkData = '../fixtures';
console.log('linkData: ' + linkData); // Prepare.
console.log('linkPath: ' + linkPath); try { fs.mkdirSync(common.tmpDir); } catch (e) {}
console.log('relative target: ' + relative) try { fs.unlinkSync(linkPath1); } catch (e) {}
try { fs.unlinkSync(linkPath2); } catch (e) {}
fs.symlink(relative, linkPath, 'junction', function(err) { // Test fs.symlink()
fs.symlink(linkData, linkPath1, 'junction', function(err) {
if (err) throw err; if (err) throw err;
completed++; verifyLink(linkPath1);
});
fs.lstat(linkPath, function(err, stats) { // Test fs.symlinkSync()
if (err) throw err; fs.symlinkSync(linkData, linkPath2, 'junction');
assert.ok(stats.isSymbolicLink()); verifyLink(linkPath2);
completed++;
fs.readlink(linkPath, function(err, destination) { function verifyLink(linkPath) {
if (err) throw err; var stats = fs.lstatSync(linkPath);
assert.equal(path.resolve(destination), linkData); assert.ok(stats.isSymbolicLink());
completed++;
fs.unlink(linkPath, function(err) { var data1 = fs.readFileSync(linkPath + '/x.txt', 'ascii');
if (err) throw err; var data2 = fs.readFileSync(linkTarget + '/x.txt', 'ascii');
assert(!fs.existsSync(linkPath)); assert.strictEqual(data1, data2);
assert(fs.existsSync(linkData));
completed++; // Clean up.
}); fs.unlinkSync(linkPath);
});
}); completed++;
}); }
process.on('exit', function() { process.on('exit', function() {
assert.equal(completed, expected_tests); assert.equal(completed, expected_tests);

Loading…
Cancel
Save