# all files / examples/ reader.js

85.71% Statements 36/42
75% Branches 3/4
80% Functions 8/10
85.71% Lines 36/42

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    691×
    1×
    1×
    1×
    1×

    1×
    1×
    1×
    1×

    1×

    378×

    1×
    1×
    1×
    1×
    1×

    1×
    17×
    17×

    17×

    1×

    1×
    1×
    1×

    1×
    1×
    1×
    1×
    1×
    1×

    1×

    1×

    1×
    1×
    1×

    1×

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