parent
							
								
									cc6edc18b6
								
							
						
					
					
						commit
						1258c9ed10
					
				|  | @ -20,6 +20,7 @@ type Values = map[string]interface{} | |||
| 
 | ||||
| func (c *Context) createFuncMap() template.FuncMap { | ||||
| 	funcMap := template.FuncMap{ | ||||
| 		"execEnvs":         c.ExecEnvs, | ||||
| 		"exec":             c.Exec, | ||||
| 		"isFile":           c.IsFile, | ||||
| 		"readFile":         c.ReadFile, | ||||
|  | @ -48,7 +49,8 @@ func (c *Context) createFuncMap() template.FuncMap { | |||
| 	return funcMap | ||||
| } | ||||
| 
 | ||||
| func (c *Context) Exec(command string, args []interface{}, inputs ...string) (string, error) { | ||||
| // TODO: in the next major version, remove this function.
 | ||||
| func (c *Context) ExecEnvs(envs map[string]string, command string, args []interface{}, inputs ...string) (string, error) { | ||||
| 	var input string | ||||
| 	if len(inputs) > 0 { | ||||
| 		input = inputs[0] | ||||
|  | @ -66,6 +68,12 @@ func (c *Context) Exec(command string, args []interface{}, inputs ...string) (st | |||
| 
 | ||||
| 	cmd := exec.Command(command, strArgs...) | ||||
| 	cmd.Dir = c.basePath | ||||
| 	if envs != nil { | ||||
| 		cmd.Env = os.Environ() | ||||
| 		for k, v := range envs { | ||||
| 			cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", k, v)) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	g := errgroup.Group{} | ||||
| 
 | ||||
|  | @ -119,6 +127,10 @@ func (c *Context) Exec(command string, args []interface{}, inputs ...string) (st | |||
| 	return string(bytes), nil | ||||
| } | ||||
| 
 | ||||
| func (c *Context) Exec(command string, args []interface{}, inputs ...string) (string, error) { | ||||
| 	return c.ExecEnvs(nil, command, args, inputs...) | ||||
| } | ||||
| 
 | ||||
| func (c *Context) IsFile(filename string) (bool, error) { | ||||
| 	var path string | ||||
| 	if filepath.IsAbs(filename) { | ||||
|  |  | |||
|  | @ -267,3 +267,19 @@ func TestExec(t *testing.T) { | |||
| 	_, err = ctx.Exec("bash", []interface{}{"-c", "exit 1"}, "") | ||||
| 	require.Error(t, err, "Expected error to be returned when executing command with non-zero exit code") | ||||
| } | ||||
| 
 | ||||
| // TestExecEnvs tests that ExecEnvs returns the expected output.
 | ||||
| // TODO: in the next major version, this test should be removed.
 | ||||
| func TestExecEnvs(t *testing.T) { | ||||
| 	ctx := &Context{basePath: "."} | ||||
| 
 | ||||
| 	expected := "foo\n" | ||||
| 
 | ||||
| 	// test that the command is executed with environment variables
 | ||||
| 	output, err := ctx.ExecEnvs(map[string]string{"testkey": "foo"}, "bash", []interface{}{"-c", "printenv testkey"}, "") | ||||
| 
 | ||||
| 	require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables") | ||||
| 
 | ||||
| 	require.Equalf(t, expected, output, "Expected %s to be returned when executing command with environment variables", expected) | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue