spec: process.noAsar
authorCheng Zhao <zcbenz@gmail.com>
Tue, 1 Dec 2015 05:09:50 +0000 (13:09 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 1 Dec 2015 05:09:50 +0000 (13:09 +0800)
spec/asar-spec.coffee

index af39fa3ec5ea00f0f186f124c0531d5a4db9f493..b7a62f8eeaa29e669b6cf2eddae093f1e4036f41 100644 (file)
@@ -423,6 +423,41 @@ describe 'asar package', ->
         p = path.join fixtures, 'asar', 'unpack.asar', 'a.txt'
         assert.equal internalModuleReadFile(p).toString().trim(), 'a'
 
+    describe 'process.noAsar', ->
+      beforeEach ->
+        process.noAsar = true
+      afterEach ->
+        process.noAsar = false
+
+      it 'disables asar support in sync API', ->
+        file = path.join fixtures, 'asar', 'a.asar', 'file1'
+        dir = path.join fixtures, 'asar', 'a.asar', 'dir1'
+        assert.throws (-> fs.readFileSync file), /ENOTDIR/
+        assert.throws (-> fs.lstatSync file), /ENOTDIR/
+        assert.throws (-> fs.realpathSync file), /ENOTDIR/
+        assert.throws (-> fs.readdirSync dir), /ENOTDIR/
+
+      it 'disables asar support in async API', (done) ->
+        file = path.join fixtures, 'asar', 'a.asar', 'file1'
+        dir = path.join fixtures, 'asar', 'a.asar', 'dir1'
+        fs.readFile file, (error) ->
+          assert.equal error.code, 'ENOTDIR'
+          fs.lstat file, (error) ->
+            assert.equal error.code, 'ENOTDIR'
+            fs.realpath file, (error) ->
+              assert.equal error.code, 'ENOTDIR'
+              fs.readdir dir, (error) ->
+                assert.equal error.code, 'ENOTDIR'
+                done()
+
+      it 'treats *.asar as normal file', ->
+        originalFs = require 'original-fs'
+        asar = path.join fixtures, 'asar', 'a.asar'
+        content1 = fs.readFileSync asar
+        content2 = originalFs.readFileSync asar
+        assert.equal content1.compare(content2), 0
+        assert.throws (-> fs.readdirSync asar), /ENOTDIR/
+
   describe 'asar protocol', ->
     url = require 'url'