Welcome to the Linux Foundation Forum!

assert stream run the code, why ?

Hello,

In a single module, i run 2 streams one to UpperCase the entries of the __dirname and a second reverse them. Running the program works fine.

In a separate file i run 2 tests (one for each transform stream), the tests pass BUT it run the program as well, i don t understand that ??

see the main file (running node myfile.js works)

const fs = require('fs')
const { pipeline, Transform, Readable } = require('stream')

const createUppercase = () => {
    return new Transform({
        objectMode: true,
        transform(chunk, enc, next) {
            // console.log(chunk)
            next(null, chunk.name.toUpperCase())
        }
    })
}

const createReverse = () => {
    return new Transform({
        objectMode: true,
        transform(chunk, enc, next) {
            // console.log(chunk)
            next(null, chunk.name.split("").reverse().join(""))
        }
    })
}

module.exports = { createUppercase, createReverse }

// upper case the dir entries
const cu = createUppercase()
fs.opendir(__dirname, (e,d) => {
    pipeline(d, cu, e => console.error("pipe error first: ", e))
})
cu.on('data', d => console.log(d))

// reverse the dir entries
const cr = createReverse()
fs.opendir(__dirname, (e,d) => {
    pipeline(d, cr, e => console.error("pipe error second: ", e))
})
cr.on('data', d => console.log(d))

see the tests file

const { pipeline, Readable } = require('stream')
const assert = require('assert')

const { createUppercase, createReverse } = require('./repeat')

const test = createUppercase()
const t = Readable.from([{name:'aaa'}, {name:'bbb'}])
t.pipe(test)
test.once('data', d => {
    assert.equal(d, 'AAA')
    test.once('data', d => {
        assert.equal(d, 'BBB')
        console.log('test upper passed')
    })
})

const testR = createReverse()
const rr = Readable.from([{name:'qwerty'}, {name: 'asdfgh'}])
rr.pipe(testR)
testR.once('data', d => {
    assert.strictEqual(d, 'ytrewq')
    testR.once('data', d => {
        assert.strictEqual(d, 'hgfdsa')
        console.log('test reverse passed')
    })
})

running the test (node test.js) output the following
as you can see the tests pass, but the code is executed as well ..... ??? does someone have an idea why ? Thank you.

test upper passed
test reverse passed
TRY
.GIT
LABS
REPEAT.JS
CLIENT.JS
COURS
TEST.JS
NODESHELLCMD.ODT
yrt
tig.
sbal
sj.taeper
sj.tneilc
sruoc
sj.tset
tdo.dmCllehSedon
pipe error first:  undefined
pipe error second:  undefined

Comments

Categories

Upcoming Training