diff options
Diffstat (limited to 'node_modules/gulp-sym/test')
| -rw-r--r-- | node_modules/gulp-sym/test/fixtures/links/.gitkeep | 0 | ||||
| -rw-r--r-- | node_modules/gulp-sym/test/fixtures/test | 1 | ||||
| -rw-r--r-- | node_modules/gulp-sym/test/fixtures/test_dir/.gitkeep | 0 | ||||
| -rw-r--r-- | node_modules/gulp-sym/test/index.js | 283 | 
4 files changed, 284 insertions, 0 deletions
diff --git a/node_modules/gulp-sym/test/fixtures/links/.gitkeep b/node_modules/gulp-sym/test/fixtures/links/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/gulp-sym/test/fixtures/links/.gitkeep diff --git a/node_modules/gulp-sym/test/fixtures/test b/node_modules/gulp-sym/test/fixtures/test new file mode 100644 index 000000000..95d09f2b1 --- /dev/null +++ b/node_modules/gulp-sym/test/fixtures/test @@ -0,0 +1 @@ +hello world
\ No newline at end of file diff --git a/node_modules/gulp-sym/test/fixtures/test_dir/.gitkeep b/node_modules/gulp-sym/test/fixtures/test_dir/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/gulp-sym/test/fixtures/test_dir/.gitkeep diff --git a/node_modules/gulp-sym/test/index.js b/node_modules/gulp-sym/test/index.js new file mode 100644 index 000000000..2e4508e53 --- /dev/null +++ b/node_modules/gulp-sym/test/index.js @@ -0,0 +1,283 @@ +var expect = require('chai').expect +  , fs = require('fs') +  , p = require('path') +  , gutil = require('gulp-util') +  , symlink = require('../') +  , file, dir +  , rm = require('rimraf') +  , async = require('async') + +describe('gulp-symlink', function() { + +	before(function() { + +		file = new gutil.File({ +			path: './test/fixtures/test', +			base: './test/fixtures/', +		}) +		dir = new gutil.File({ +			path: './test/fixtures/test_dir', +			base: './test/fixtures/', +		}) +	}) + +	it('should throw with no destination symlink', function(cb) { +		try { +			var stream = symlink() +		} catch(e) { +			expect(e).not.to.be.null +			expect(e.message).to.contain('Missing destination link') +			cb() +		} +	}) + +	it('should symlink file', function(cb) { +		var dest = './test/fixtures/links/test' +      , stream = symlink(dest) + +    stream.on('data', function(newFile){ +			expect(newFile).to.equal(file) +    }) + +		stream.once('end', function() { +			 +			fs.readFile(dest, function(err, f) { +				expect(err).to.be.null +				expect(f.toString()).to.equal(fs.readFileSync(file.path).toString()) + +				fs.lstat(dest, function(err, stats) { +					expect(stats.isSymbolicLink()).to.be.true +					cb() +				}) + +			}) +			 +		}) + +		stream.write(file) +		stream.end() +	}) + +	it('should emit error because symlink exists', function(cb) { +		var dest = './test/fixtures/links/test' +		  , stream = symlink(dest) + +		stream.on('data', function(newFile){  +			expect(newFile).to.equal(file) +		}) +		 +		stream.once('end', function() { +			cb() +		}) + +		stream.on('error', function(e) { +			expect(e).not.to.be.null +			expect(e.message).to.contain('Destination file exists') +		}) + +		stream.write(file) +		stream.end() + +	}) + +	it('should overwrite symlink', function(cb) { +		var dest = './test/fixtures/links/test' +		  , stream = symlink(dest, {force: true}) + +		stream.on('data', function(newDir){ }) + +		stream.once('end', function() { +			fs.readFile(dest, function(err, f) { +				expect(err).to.be.null +				expect(f.toString()).to.equal(fs.readFileSync(file.path).toString()) + +				fs.lstat(dest, function(err, stats) { +					expect(stats.isSymbolicLink()).to.be.true +					 +					rm(dest, function() { +						cb() +					}) +				}) + +			}) +		})	 + +		stream.write(file) +		stream.end() + +	}) + +	it('should symlink through File instance', function(cb) { + +		var dest = './test/fixtures/links/test' +      , stream = symlink(new gutil.File({cwd: process.cwd(), path: dest})) + +		stream.on('data', function(newFile){ }) + +		stream.once('end', function() { +			fs.readFile(dest, function(err, f) { +				expect(err).to.be.null +				expect(f.toString()).to.equal(fs.readFileSync(file.path).toString()) + +				fs.lstat(dest, function(err, stats) { +					expect(stats.isSymbolicLink()).to.be.true +					 +					rm(dest, function() { +						cb() +					}) +				}) + +			}) +		})	 + +		stream.write(file) +		stream.end() + +	}) + +	it('should symlink a directory', function(cb) { +		var dest = './test/fixtures/links/test' +      , stream = symlink(dest) + +    stream.on('data', function(newDir){ }) + +		stream.once('end', function() { +			 +			fs.exists(dest, function(exists) { +				expect(exists).to.be.true + +				fs.lstat(dest, function(err, stats) { +					expect(stats.isSymbolicLink()).to.be.true + +					fs.stat(dest, function(err, stats) { +						expect(stats.isDirectory()).to.be.true + +						rm(dest, function() { +							cb() +						}) +					}) +				}) + +			}) +			 +		}) + +		stream.write(dir) +		stream.end() +	}) + +	it('should symlink within a non-existent directory', function(cb) { +		var dest = './test/fixtures/links/test/directory/symlink' +		//testing function call +		var stream = symlink(function(file) { +			return p.resolve(file.path, '../../fixtures/links/test/directory/symlink')  +	  }) + +    stream.on('data', function(newFile){ +			expect(newFile).to.equal(file) +    }) + +		stream.once('end', function() { +			 +			fs.readFile(dest, function(err, f) { +				expect(err).to.be.null +				expect(f.toString()).to.equal(fs.readFileSync(file.path).toString()) + +				fs.lstat(dest, function(err, stats) { +					expect(stats.isSymbolicLink()).to.be.true + +					rm('./test/fixtures/links/test', function() { +						cb() +					}) +				}) + +			}) +			 +		}) + +		stream.write(file) +		stream.end() +	}) + +	it('should symlink 2 sources to 2 different destinations [array]', function(cb) { + +		var dests = ['./test/fixtures/links/test', './test/fixtures/links/test_dir'] + +		var stream = symlink(dests) + +		stream.on('data', function(data) { +		}) + +		stream.on('end', function() { + +			for(var j in dests) +				expect(fs.existsSync(dests[j])).to.be.true + +			async.map(dests, rm, cb) +		}) + +		stream.write(file) +		stream.write(dir) +		stream.end() +	}) + + +	it('should symlink 2 sources to 2 different destinations [function]', function(cb) { + +		var dests = ['./test/fixtures/links/test', './test/fixtures/links/test_dir'] +		var i = 0 +		var stream = symlink(function(source) { +			i++ //make sure this is called 2 times +			return p.resolve(source.path, '../../fixtures/links', p.basename(source.path)) +		}) + +		stream.on('data', function(data) { +		}) + +		stream.on('end', function() { + +			for(var j in dests) +				expect(fs.existsSync(dests[j])).to.be.true + +			expect(i).to.equal(2) + +			async.map(dests, rm, cb) +		}) + +		stream.write(file) +		stream.write(dir) +		stream.end() +	}) + +	//Do we really want 100% coverage? + +	it('should emit an error on symlink creation', function(cb) { + +		fs.mkdirSync('./test/fixtures/badlinks', 600) + +		var dest = './test/fixtures/badlinks/test' +      , stream = symlink(dest) + +    stream.on('data', function(newDir){ }) + +		stream.once('end', function() { +			rm.sync('./test/fixtures/badlinks') + +			//windows fs.mkdirSync has wrong rights, I'm cheating there... +			if(require('os').platform() == 'win32') +				cb() +		}) + +		stream.on('error', function(e) { +			expect(e).not.to.be.null +			expect(e.message).to.contain('EACCES') +			cb() + +		}) + +		stream.write(dir) +		stream.end() + +	}) + +})  | 
