You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					69 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					69 lines
				
				1.4 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								var fstream = require('../fstream.js')
							 | 
						||
| 
								 | 
							
								var tap = require('tap')
							 | 
						||
| 
								 | 
							
								var fs = require('fs')
							 | 
						||
| 
								 | 
							
								var path = require('path')
							 | 
						||
| 
								 | 
							
								var dir = path.dirname(__dirname)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tap.test('reader test', function (t) {
							 | 
						||
| 
								 | 
							
								  var children = -1
							 | 
						||
| 
								 | 
							
								  var gotReady = false
							 | 
						||
| 
								 | 
							
								  var ended = false
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var r = fstream.Reader({
							 | 
						||
| 
								 | 
							
								    path: dir,
							 | 
						||
| 
								 | 
							
								    filter: function () {
							 | 
						||
| 
								 | 
							
								      // return this.parent === r
							 | 
						||
| 
								 | 
							
								      return this.parent === r || this === r
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.on('ready', function () {
							 | 
						||
| 
								 | 
							
								    gotReady = true
							 | 
						||
| 
								 | 
							
								    children = fs.readdirSync(dir).length
							 | 
						||
| 
								 | 
							
								    console.error('Setting expected children to ' + children)
							 | 
						||
| 
								 | 
							
								    t.equal(r.type, 'Directory', 'should be a directory')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.on('entry', function (entry) {
							 | 
						||
| 
								 | 
							
								    children--
							 | 
						||
| 
								 | 
							
								    if (!gotReady) {
							 | 
						||
| 
								 | 
							
								      t.fail('children before ready!')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    t.equal(entry.dirname, r.path, 'basename is parent dir')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.on('error', function (er) {
							 | 
						||
| 
								 | 
							
								    t.fail(er)
							 | 
						||
| 
								 | 
							
								    t.end()
							 | 
						||
| 
								 | 
							
								    process.exit(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.on('end', function () {
							 | 
						||
| 
								 | 
							
								    t.equal(children, 0, 'should have seen all children')
							 | 
						||
| 
								 | 
							
								    ended = true
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var closed = false
							 | 
						||
| 
								 | 
							
								  r.on('close', function () {
							 | 
						||
| 
								 | 
							
								    t.ok(ended, 'saw end before close')
							 | 
						||
| 
								 | 
							
								    t.notOk(closed, 'close should only happen once')
							 | 
						||
| 
								 | 
							
								    closed = true
							 | 
						||
| 
								 | 
							
								    t.end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tap.test('reader error test', function (t) {
							 | 
						||
| 
								 | 
							
								  // assumes non-root on a *nix system
							 | 
						||
| 
								 | 
							
								  var r = fstream.Reader({ path: '/etc/shadow' })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.once('error', function (er) {
							 | 
						||
| 
								 | 
							
								    t.ok(true)
							 | 
						||
| 
								 | 
							
								    t.end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  r.on('end', function () {
							 | 
						||
| 
								 | 
							
								    t.fail('reader ended without error')
							 | 
						||
| 
								 | 
							
								    t.end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |