func (S) TestSetEnvVar(c *C) { os.Setenv("PIPE_NEW_VAR", "") os.Setenv("PIPE_OLD_VAR", "old") defer os.Setenv("PIPE_OLD_VAR", "") p := pipe.Script( pipe.SetEnvVar("PIPE_NEW_VAR", "new"), pipe.System("echo $PIPE_OLD_VAR $PIPE_NEW_VAR"), pipe.SetEnvVar("PIPE_NEW_VAR", "after"), func(s *pipe.State) error { count := 0 prefix := "PIPE_NEW_VAR=" for _, kv := range s.Env { if strings.HasPrefix(kv, prefix) { count++ } } if count != 1 { return fmt.Errorf("found %d environment variables", count) } return nil }, ) output, err := pipe.Output(p) c.Assert(err, IsNil) c.Assert(string(output), Equals, "old new\n") c.Assert(os.Getenv("PIPE_NEW_VAR"), Equals, "") }
func (S) TestLineIsolatesEnv(c *C) { p := pipe.Line( pipe.SetEnvVar("PIPE_VAR", "outer"), pipe.Line( pipe.SetEnvVar("PIPE_VAR", "inner"), ), pipe.System("echo $PIPE_VAR"), ) output, err := pipe.Output(p) c.Assert(err, IsNil) c.Assert(string(output), Equals, "outer\n") }