--- a/environment/mapper.go Sun Oct 15 15:58:00 2017 -0500
+++ b/environment/mapper.go Mon Oct 16 09:45:11 2017 -0500
@@ -32,6 +32,14 @@
func (e *envMapper) Map(name string) string {
+ // We might have something like $(pwd), in which case we don't want + // to wrap the name in `{}`, which would cause it to be ${}(pwd) and + // cannot be evaluated by a run task. for _, item := range e.env {
if parts := strings.SplitN(item, "=", 2); parts[0] == name {
--- a/environment/mapper_test.go Sun Oct 15 15:58:00 2017 -0500
+++ b/environment/mapper_test.go Mon Oct 16 09:45:11 2017 -0500
@@ -84,3 +84,9 @@
_, err := Mapper("${FOO}", []string{"FOO=FOO${FOO}"})
Expect(err).To(MatchError("infinite environment mapping loop while expanding '${FOO}'"))
+func (e *environmentSuite) TestMapNestedCommandNotAltered(t sweet.T) { + result, err := Mapper("${FOO} $(./${BAR} $BAZ)", []string{"FOO=a", "BAR=b", "BAZ=c"}) + Expect(err).To(BeNil()) + Expect(result).To(Equal("a $(./b c)"))