44 isDevelopment ,
55 isHostedAppsMode ,
66 isShopify ,
7+ isTerminalInteractive ,
78 isUnitTest ,
89 analyticsDisabled ,
910 cloudEnvironment ,
@@ -14,12 +15,62 @@ import {
1415import { fileExists } from '../fs.js'
1516import { exec } from '../system.js'
1617
17- import { expect , describe , vi , test } from 'vitest'
18+ import { afterEach , expect , describe , vi , test } from 'vitest'
1819
1920vi . mock ( '../fs.js' )
2021vi . mock ( '../system.js' )
2122vi . mock ( '../environment.js' )
2223
24+ describe ( 'isTerminalInteractive' , ( ) => {
25+ const originalIsTTY = process . stdout . isTTY
26+ const originalEnv = { ...process . env }
27+
28+ afterEach ( ( ) => {
29+ process . stdout . isTTY = originalIsTTY
30+ process . env . TERM = originalEnv . TERM
31+ if ( originalEnv . CI === undefined ) {
32+ delete process . env . CI
33+ } else {
34+ process . env . CI = originalEnv . CI
35+ }
36+ } )
37+
38+ test ( 'returns true when stdout is a TTY, TERM is not dumb, and not in CI' , ( ) => {
39+ process . stdout . isTTY = true
40+ delete process . env . CI
41+ process . env . TERM = 'xterm-256color'
42+ expect ( isTerminalInteractive ( ) ) . toBe ( true )
43+ } )
44+
45+ test ( 'returns false when stdout is not a TTY' , ( ) => {
46+ process . stdout . isTTY = false
47+ delete process . env . CI
48+ process . env . TERM = 'xterm-256color'
49+ expect ( isTerminalInteractive ( ) ) . toBe ( false )
50+ } )
51+
52+ test ( 'returns false when TERM is dumb' , ( ) => {
53+ process . stdout . isTTY = true
54+ delete process . env . CI
55+ process . env . TERM = 'dumb'
56+ expect ( isTerminalInteractive ( ) ) . toBe ( false )
57+ } )
58+
59+ test ( 'returns false when CI env var is set' , ( ) => {
60+ process . stdout . isTTY = true
61+ process . env . CI = 'true'
62+ process . env . TERM = 'xterm-256color'
63+ expect ( isTerminalInteractive ( ) ) . toBe ( false )
64+ } )
65+
66+ test ( 'returns false when CI env var is empty string (still set)' , ( ) => {
67+ process . stdout . isTTY = true
68+ process . env . CI = ''
69+ process . env . TERM = 'xterm-256color'
70+ expect ( isTerminalInteractive ( ) ) . toBe ( false )
71+ } )
72+ } )
73+
2374describe ( 'isUnitTest' , ( ) => {
2475 test ( 'returns true when SHOPIFY_UNIT_TEST is truthy' , ( ) => {
2576 // Given
0 commit comments