@@ -402,6 +402,7 @@ t.test('progress', t => {
402
402
403
403
const flat = {}
404
404
405
+
// Test flatten function behavior
405
406
mockDefs().progress.flatten('progress', {}, flat)
406
407
t.strictSame(flat, { progress: false })
407
408
@@ -417,6 +418,59 @@ t.test('progress', t => {
417
418
mockDefs().progress.flatten('progress', { progress: true }, flat)
418
419
t.strictSame(flat, { progress: false })
419
420
421
+
// Ensures consistency between default and flatOptions behavior
422
+
t.test('default value consistency', t => {
423
+
// Test case 1: Both TTYs, normal terminal, not CI
424
+
setEnv({ tty: true, term: 'xterm' })
425
+
const def1 = mockDefs({ 'ci-info': { isCI: false, name: null } }).progress
426
+
t.equal(def1.default, true, 'default should be true when both TTYs, normal terminal, and not CI')
427
+
428
+
// Test case 2: No TTYs, not CI
429
+
setEnv({ tty: false, term: 'xterm' })
430
+
const def2 = mockDefs({ 'ci-info': { isCI: false, name: null } }).progress
431
+
t.equal(def2.default, false, 'default should be false when no TTYs')
432
+
433
+
// Test case 3: Both TTYs but dumb terminal, not CI
434
+
setEnv({ tty: true, term: 'dumb' })
435
+
const def3 = mockDefs({ 'ci-info': { isCI: false, name: null } }).progress
436
+
t.equal(def3.default, false, 'default should be false in dumb terminal')
437
+
438
+
// Test case 4: Mixed TTY states, not CI
439
+
mockGlobals(t, {
440
+
'process.stderr.isTTY': true,
441
+
'process.stdout.isTTY': false,
442
+
'process.env.TERM': 'xterm',
443
+
})
444
+
const def4 = mockDefs({ 'ci-info': { isCI: false, name: null } }).progress
445
+
t.equal(def4.default, false, 'default should be false when only one TTY')
446
+
447
+
// Test case 5: Good TTY environment but in CI
448
+
setEnv({ tty: true, term: 'xterm' })
449
+
const def5 = mockDefs({ 'ci-info': { isCI: true, name: 'github-actions' } }).progress
450
+
t.equal(def5.default, false, 'default should be false in CI even with good TTY environment')
451
+
452
+
t.end()
453
+
})
454
+
455
+
// Test that flatten behavior is independent of CI detection
456
+
t.test('flatten function ignores CI detection', t => {
457
+
const flatObj = {}
458
+
459
+
// Test that CI doesn't affect flatten behavior when user explicitly enables
460
+
setEnv({ tty: true, term: 'xterm' })
461
+
const defsCI = mockDefs({ 'ci-info': { isCI: true, name: 'github-actions' } })
462
+
defsCI.progress.flatten('progress', { progress: true }, flatObj)
463
+
t.equal(flatObj.progress, true, 'flatten should enable progress in CI if user explicitly sets true and TTY is available')
464
+
465
+
// Test that non-CI doesn't guarantee flatten success if TTY is bad
466
+
setEnv({ tty: false, term: 'xterm' })
467
+
const defsNoCI = mockDefs({ 'ci-info': { isCI: false, name: null } })
468
+
defsNoCI.progress.flatten('progress', { progress: true }, flatObj)
469
+
t.equal(flatObj.progress, false, 'flatten should disable progress outside CI if TTY is not available')
470
+
471
+
t.end()
472
+
})
473
+
420
474
t.end()
421
475
})
422
476
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4