From 193c6b239e10db6ca31a5f326926b05c51924831 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 16 Oct 2015 21:07:21 -0700 Subject: [PATCH] test: fix flaky test for symlinks If the symlink portion of the test was being skipped due to a combination of OS support and user privileges, then an assertion would always fail. This fixes that problem, improves assertion error reporting and renames the test to make it clear that it is a test for links and not just symlinks. Fixes: https://github.com/nodejs/node/issues/3311 --- .../{test-fs-symlink.js => test-fs-link.js} | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) rename test/parallel/{test-fs-symlink.js => test-fs-link.js} (65%) diff --git a/test/parallel/test-fs-symlink.js b/test/parallel/test-fs-link.js similarity index 65% rename from test/parallel/test-fs-symlink.js rename to test/parallel/test-fs-link.js index 199add4a1ba724..082c39a7752ba2 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-link.js @@ -1,21 +1,21 @@ 'use strict'; -var common = require('../common'); -var assert = require('assert'); -var path = require('path'); -var fs = require('fs'); -var exec = require('child_process').exec; +const common = require('../common'); +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); +const exec = require('child_process').exec; var completed = 0; -var expected_async = 4; +var expected_async; var linkTime; var fileTime; common.refreshTmpDir(); -var runtest = function(skip_symlinks) { +const runTest = function() { if (!skip_symlinks) { // test creating and reading symbolic link - var linkData = path.join(common.fixturesDir, '/cycles/root.js'); - var linkPath = path.join(common.tmpDir, 'symlink1.js'); + const linkData = path.join(common.fixturesDir, '/cycles/root.js'); + const linkPath = path.join(common.tmpDir, 'symlink1.js'); fs.symlink(linkData, linkPath, function(err) { if (err) throw err; @@ -42,36 +42,36 @@ var runtest = function(skip_symlinks) { } // test creating and reading hard link - var srcPath = path.join(common.fixturesDir, 'cycles', 'root.js'); - var dstPath = path.join(common.tmpDir, 'link1.js'); + const srcPath = path.join(common.fixturesDir, 'cycles', 'root.js'); + const dstPath = path.join(common.tmpDir, 'link1.js'); fs.link(srcPath, dstPath, function(err) { if (err) throw err; console.log('hard link done'); - var srcContent = fs.readFileSync(srcPath, 'utf8'); - var dstContent = fs.readFileSync(dstPath, 'utf8'); + const srcContent = fs.readFileSync(srcPath, 'utf8'); + const dstContent = fs.readFileSync(dstPath, 'utf8'); assert.equal(srcContent, dstContent); completed++; }); }; +var skip_symlinks = false; +var expected_async = 4; if (common.isWindows) { // On Windows, creating symlinks requires admin privileges. // We'll only try to run symlink test if we have enough privileges. exec('whoami /priv', function(err, o) { if (err || o.indexOf('SeCreateSymbolicLinkPrivilege') == -1) { expected_async = 1; - runtest(true); - } else { - runtest(false); + skip_symlinks = true; } }); -} else { - runtest(false); } +runTest(); process.on('exit', function() { assert.equal(completed, expected_async); - assert(linkTime !== fileTime); + if (! skip_symlinks) { + assert.notStrictEqual(linkTime, fileTime); + } }); -