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.
		
		
		
		
		
			
		
			
				
					76 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					76 lines
				
				1.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const test = require('tap').test
							 | 
						||
| 
								 | 
							
								const boot = require('..')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('pretty print', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(19)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const app = boot()
							 | 
						||
| 
								 | 
							
								  app
							 | 
						||
| 
								 | 
							
								    .use(first)
							 | 
						||
| 
								 | 
							
								    .use(duplicate, { count: 3 })
							 | 
						||
| 
								 | 
							
								    .use(second).after(afterUse).after(after)
							 | 
						||
| 
								 | 
							
								    .use(duplicate, { count: 2 })
							 | 
						||
| 
								 | 
							
								    .use(third).after(after)
							 | 
						||
| 
								 | 
							
								    .use(duplicate, { count: 1 })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const linesExpected = [/bound root \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├── first \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ └─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ {3}└─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ {5}└── duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├── second \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├─┬ bound _after \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ └── afterInsider \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├── bound _after \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ └─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /│ {3}└── duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├── third \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /├── bound _after \d+ ms/,
							 | 
						||
| 
								 | 
							
								    /└─┬ duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    / {2}└── duplicate \d+ ms/,
							 | 
						||
| 
								 | 
							
								    ''
							 | 
						||
| 
								 | 
							
								  ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  app.on('preReady', function show () {
							 | 
						||
| 
								 | 
							
								    const print = app.prettyPrint()
							 | 
						||
| 
								 | 
							
								    const lines = print.split('\n')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t.equal(lines.length, linesExpected.length)
							 | 
						||
| 
								 | 
							
								    lines.forEach((l, i) => {
							 | 
						||
| 
								 | 
							
								      t.match(l, linesExpected[i])
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function first (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function second (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function third (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function after (err, cb) {
							 | 
						||
| 
								 | 
							
								    cb(err)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function afterUse (err, cb) {
							 | 
						||
| 
								 | 
							
								    app.use(afterInsider)
							 | 
						||
| 
								 | 
							
								    cb(err)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function afterInsider (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function duplicate (instance, opts, cb) {
							 | 
						||
| 
								 | 
							
								    if (opts.count > 0) {
							 | 
						||
| 
								 | 
							
								      instance.use(duplicate, { count: opts.count - 1 })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    setTimeout(cb, 20)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 |