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
						
					
					
				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()
 | 
						|
  })
 | 
						|
})
 |