[READ-ONLY] Mirror of https://github.com/sxzz/obug. A lightweight JavaScript debugging utility, forked from debug, featuring TypeScript and ESM support.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128import { assert, describe, it } from 'vitest'
const { createDebug, enable, disable } = (await import( /* @vite-ignore */ globalThis.process ? '../src/ansi.ts' : '../src/browser.ts')) as typeof import('../src/ansi')
describe('basic', () => { it('passes a basic sanity check', () => { const log = createDebug('test') log.enabled = true log.log = () => {}
assert.doesNotThrow(() => log('hello world')) })
it('honors global debug namespace enable calls', () => { assert.deepStrictEqual(createDebug('test:12345').enabled, false) assert.deepStrictEqual(createDebug('test:67890').enabled, false)
enable('test:12345') assert.deepStrictEqual(createDebug('test:12345').enabled, true) assert.deepStrictEqual(createDebug('test:67890').enabled, false) })
it('uses custom log function', () => { const log = createDebug('test') log.enabled = true
const messages = [] log.log = (...args: any[]) => messages.push(args)
log('using custom log function') log('using custom log function again') log('%O', 12345)
assert.deepStrictEqual(messages.length, 3) })
describe('extend namespace', () => { it('should extend namespace', () => { const log = createDebug('foo') log.enabled = true log.log = () => {}
const logBar = log.extend('bar') assert.deepStrictEqual(logBar.namespace, 'foo:bar') })
it('should extend namespace with custom delimiter', () => { const log = createDebug('foo') log.enabled = true log.log = () => {}
const logBar = log.extend('bar', '--') assert.deepStrictEqual(logBar.namespace, 'foo--bar') })
it('should extend namespace with empty delimiter', () => { const log = createDebug('foo') log.enabled = true log.log = () => {}
const logBar = log.extend('bar', '') assert.deepStrictEqual(logBar.namespace, 'foobar') })
it('should keep the log function between extensions', () => { const log = createDebug('foo') log.log = () => {}
const logBar = log.extend('bar') assert.deepStrictEqual(log.log, logBar.log) }) })
describe('rebuild namespaces string (disable)', () => { it('handle names, skips, and wildcards', () => { enable('test,abc*,-abc') const namespaces = disable() assert.deepStrictEqual(namespaces, 'test,abc*,-abc') })
it('handles empty', () => { enable('') const namespaces = disable() assert.deepStrictEqual(namespaces, '') })
it('handles all', () => { enable('*') const namespaces = disable() assert.deepStrictEqual(namespaces, '*') })
it('handles skip all', () => { enable('-*') const namespaces = disable() assert.deepStrictEqual(namespaces, '-*') })
it('names+skips same with new string', () => { enable('test,abc*,-abc') const namespaces = disable() assert.deepStrictEqual(namespaces, 'test,abc*,-abc') enable(namespaces) })
// it('handles re-enabling existing instances', () => { // debug.disable('*') // const inst = debug('foo') // const messages = [] // inst.log = (msg) => messages.push(msg.replace(/^[^@]*@([^@]+)@.*$/, '$1'))
// inst('@test@') // assert.deepStrictEqual(messages, []) // debug.enable('foo') // assert.deepStrictEqual(messages, []) // inst('@test2@') // assert.deepStrictEqual(messages, ['test2']) // inst('@test3@') // assert.deepStrictEqual(messages, ['test2', 'test3']) // debug.disable('*') // inst('@test4@') // assert.deepStrictEqual(messages, ['test2', 'test3']) // }) })})