From 33b1a3944bc02ad4951f16a18b00c4dbcc712b08 Mon Sep 17 00:00:00 2001 From: Jeremy Mickelson Date: Tue, 5 May 2020 16:26:45 -0600 Subject: [PATCH] When exiting a namespace, just revert that namespace call, not all the way to the root. --- grift/grift.go | 3 ++- grift/grift_test.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/grift/grift.go b/grift/grift.go index 0155cf4..d00c1d1 100644 --- a/grift/grift.go +++ b/grift/grift.go @@ -22,8 +22,9 @@ type Grift func(c *Context) error // Namespace will place all tasks within the given prefix. func Namespace(name string, s func()) error { + saved := namespace defer func() { - namespace = "" + namespace = saved }() namespace = applyNamespace(name) diff --git a/grift/grift_test.go b/grift/grift_test.go index 0f3d833..26ab978 100644 --- a/grift/grift_test.go +++ b/grift/grift_test.go @@ -151,6 +151,12 @@ func Test_Namespace(t *testing.T) { Add("a", func(c *Context) error { return nil }) + Add("b", func(c *Context) error { + return nil + }) + Add("c", func(c *Context) error { + return nil + }) Add("d", func(c *Context) error { return nil }) @@ -169,9 +175,12 @@ func Test_Namespace(t *testing.T) { }) + Add("h", func(c *Context) error { + return nil + }) }) - r.Equal([]string{"a:a", "a:d", "a:e:g", "b"}, List()) + r.Equal([]string{"a:a", "a:c", "a:d", "a:e:g", "a:h", "b"}, List()) reset() }