@@ -95,6 +95,58 @@ public void GetParameters_UpdateOmitsScope()
9595 Assert . DoesNotContain ( "-Scope" , parameters ) ;
9696 }
9797
98+ [ Theory ]
99+ [ InlineData ( OperationType . Install ) ]
100+ [ InlineData ( OperationType . Update ) ]
101+ [ InlineData ( OperationType . Uninstall ) ]
102+ public void GetParameters_PropagatesNonTerminatingErrorsToTheExitCode ( OperationType operation )
103+ {
104+ var manager = new PowerShell ( ) ;
105+ var package = BuildInstalledPackage ( manager ) ;
106+
107+ var parameters = manager . OperationHelper . GetParameters ( package , new InstallOptions ( ) , operation ) ;
108+
109+ var errorVariableIndex = parameters . ToList ( ) . IndexOf ( "-ErrorVariable" ) ;
110+ Assert . True ( errorVariableIndex >= 0 ) ;
111+ Assert . Equal ( PowerShellPkgOperationHelper . ErrorVariableName , parameters [ errorVariableIndex + 1 ] ) ;
112+ Assert . Equal (
113+ $ ";if(${ PowerShellPkgOperationHelper . ErrorVariableName } ){{exit(1)}}",
114+ parameters [ ^ 1 ]
115+ ) ;
116+ }
117+
118+ [ Theory ]
119+ [ InlineData ( "-ErrorVariable" ) ]
120+ [ InlineData ( "-ev" ) ]
121+ [ InlineData ( "-errorvariable:mine" ) ]
122+ public void GetParameters_YieldsToACustomErrorVariable ( string customParameter )
123+ {
124+ var manager = new PowerShell ( ) ;
125+ var package = BuildInstalledPackage ( manager ) ;
126+
127+ var options = new InstallOptions { CustomParameters_Update = [ customParameter , "mine" ] } ;
128+ var parameters = manager . OperationHelper . GetParameters ( package , options , OperationType . Update ) ;
129+
130+ Assert . DoesNotContain ( PowerShellPkgOperationHelper . ErrorVariableName , parameters ) ;
131+ Assert . DoesNotContain (
132+ $ ";if(${ PowerShellPkgOperationHelper . ErrorVariableName } ){{exit(1)}}",
133+ parameters
134+ ) ;
135+ }
136+
137+ [ Fact ]
138+ public void GetParameters_KeepsCustomParametersBoundToTheCmdlet ( )
139+ {
140+ var manager = new PowerShell ( ) ;
141+ var package = BuildInstalledPackage ( manager ) ;
142+
143+ var options = new InstallOptions { CustomParameters_Update = [ "-Proxy" , "http://proxy" ] } ;
144+ var parameters = manager . OperationHelper . GetParameters ( package , options , OperationType . Update ) ;
145+
146+ Assert . Equal ( "-Proxy" , parameters [ ^ 3 ] ) ;
147+ Assert . Equal ( "http://proxy" , parameters [ ^ 2 ] ) ;
148+ }
149+
98150 [ Fact ]
99151 public void Capabilities_ScopeAppliesToInstallOnly ( )
100152 {
0 commit comments