@@ -44,17 +44,49 @@ describe("RuntimeFlags", () => {
4444
4545 it . effect ( "layer accepts partial test overrides and fills defaults from Config definitions" , ( ) =>
4646 Effect . gen ( function * ( ) {
47- const flags = yield * readFlags . pipe ( Effect . provide ( RuntimeFlags . layer ( { disableDefaultPlugins : true } ) ) )
47+ const flags = yield * readFlags . pipe (
48+ Effect . provide ( RuntimeFlags . layer ( { disableDefaultPlugins : true , bashDefaultTimeoutMs : 1_000 } ) ) ,
49+ )
4850
4951 expect ( flags . pure ) . toBe ( false )
5052 expect ( flags . disableDefaultPlugins ) . toBe ( true )
5153 expect ( flags . disableClaudeCodeSkills ) . toBe ( false )
5254 expect ( flags . enableExa ) . toBe ( false )
55+ expect ( flags . bashDefaultTimeoutMs ) . toBe ( 1_000 )
5356 expect ( flags . enableExperimentalModels ) . toBe ( false )
5457 expect ( flags . client ) . toBe ( "cli" )
5558 } ) ,
5659 )
5760
61+ for ( const input of [
62+ { name : "absent" , config : { } , expected : undefined } ,
63+ {
64+ name : "valid positive integer" ,
65+ config : { OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "1234" } ,
66+ expected : 1234 ,
67+ } ,
68+ {
69+ name : "invalid string" ,
70+ config : { OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "nope" } ,
71+ expected : undefined ,
72+ } ,
73+ { name : "zero" , config : { OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "0" } , expected : undefined } ,
74+ { name : "negative" , config : { OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "-1" } , expected : undefined } ,
75+ {
76+ name : "non-integer" ,
77+ config : { OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "1.5" } ,
78+ expected : undefined ,
79+ } ,
80+ ] ) {
81+ it . effect ( `parses bashDefaultTimeoutMs from config: ${ input . name } ` , ( ) =>
82+ Effect . gen ( function * ( ) {
83+ const flags = yield * readFlags . pipe ( Effect . provide ( fromConfig ( input . config ) ) )
84+
85+ expect ( flags . bashDefaultTimeoutMs ) . toBe ( input . expected )
86+ } ) ,
87+ )
88+ }
89+
5890 it . effect ( "layer ignores the active ConfigProvider for omitted test overrides" , ( ) =>
5991 Effect . gen ( function * ( ) {
6092 const flags = yield * readFlags . pipe (
@@ -66,6 +98,7 @@ describe("RuntimeFlags", () => {
6698 OPENCODE_DISABLE_DEFAULT_PLUGINS : "true" ,
6799 OPENCODE_EXPERIMENTAL : "true" ,
68100 OPENCODE_ENABLE_EXA : "true" ,
101+ OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS : "1234" ,
69102 OPENCODE_CLIENT : "desktop" ,
70103 } ) ,
71104 ) ,
@@ -76,6 +109,7 @@ describe("RuntimeFlags", () => {
76109 expect ( flags . disableDefaultPlugins ) . toBe ( false )
77110 expect ( flags . disableClaudeCodeSkills ) . toBe ( false )
78111 expect ( flags . enableExa ) . toBe ( false )
112+ expect ( flags . bashDefaultTimeoutMs ) . toBeUndefined ( )
79113 expect ( flags . client ) . toBe ( "cli" )
80114 } ) ,
81115 )
0 commit comments