From: Igor Zinkovsky Date: Fri, 9 Sep 2011 06:24:45 +0000 (-0700) Subject: fix test-fs-chmod test X-Git-Tag: v0.5.6~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=85357abba1126b80840de50696a34ef73b55db89;p=platform%2Fupstream%2Fnodejs.git fix test-fs-chmod test --- diff --git a/test/simple/test-fs-chmod.js b/test/simple/test-fs-chmod.js index ea1b354..c40d4fc 100644 --- a/test/simple/test-fs-chmod.js +++ b/test/simple/test-fs-chmod.js @@ -19,27 +19,45 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. -// libuv-broken - - var common = require('../common'); var assert = require('assert'); var path = require('path'); var fs = require('fs'); var got_error = false; var success_count = 0; +var mode_async; +var mode_sync; +var is_windows = process.platform === 'win32'; + +// On Windows chmod is only able to manipulate read-only bit +if (is_windows) { + mode_async = 0400; // read-only + mode_sync = 0600; // read-write +} else { + mode_async = 0777; + mode_sync = 0644; +} var file = path.join(common.fixturesDir, 'a.js'); -fs.chmod(file, '0777', function(err) { +fs.chmod(file, mode_async.toString(), function(err) { if (err) { got_error = true; } else { console.log(fs.statSync(file).mode); - assert.equal(0777, fs.statSync(file).mode & 0777); - fs.chmodSync(file, 0644); - assert.equal(0644, fs.statSync(file).mode & 0777); + if (is_windows) { + assert.ok((fs.statSync(file).mode & 0777) & mode_async); + } else { + assert.equal(mode_async, fs.statSync(file).mode & 0777); + } + + fs.chmodSync(file, mode_sync); + if (is_windows) { + assert.ok((fs.statSync(file).mode & 0777) & mode_sync); + } else { + assert.equal(mode_sync, fs.statSync(file).mode & 0777); + } success_count++; } }); @@ -50,15 +68,24 @@ fs.open(file, 'a', function(err, fd) { console.error(err.stack); return; } - fs.fchmod(fd, '0777', function(err) { + fs.fchmod(fd, mode_async.toString(), function(err) { if (err) { got_error = true; } else { console.log(fs.fstatSync(fd).mode); - assert.equal(0777, fs.fstatSync(fd).mode & 0777); - fs.fchmodSync(fd, 0644); - assert.equal(0644, fs.fstatSync(fd).mode & 0777); + if (is_windows) { + assert.ok((fs.fstatSync(fd).mode & 0777) & mode_async); + } else { + assert.equal(mode_async, fs.fstatSync(fd).mode & 0777); + } + + fs.fchmodSync(fd, mode_sync); + if (is_windows) { + assert.ok((fs.fstatSync(fd).mode & 0777) & mode_sync); + } else { + assert.equal(mode_sync, fs.fstatSync(fd).mode & 0777); + } success_count++; } });