From 8d0f0b049c45aba8ab190952a9611ebc4021258e Mon Sep 17 00:00:00 2001 From: Paulo Bittencourt Date: Sun, 29 Sep 2024 16:03:48 -0400 Subject: [PATCH] fix: Print dotenv file path when there is an error reading file (#1842) --- task_test.go | 12 ++++++++++++ taskfile/dotenv.go | 3 ++- testdata/dotenv/parse_error/.env-with-error | 2 ++ testdata/dotenv/parse_error/Taskfile.yml | 8 ++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 testdata/dotenv/parse_error/.env-with-error create mode 100644 testdata/dotenv/parse_error/Taskfile.yml diff --git a/task_test.go b/task_test.go index 4e31de42..bfd3c554 100644 --- a/task_test.go +++ b/task_test.go @@ -1657,6 +1657,18 @@ func TestDotenvHasEnvVarInPath(t *testing.T) { tt.Run(t) } +func TestTaskDotenvParseErrorMessage(t *testing.T) { + e := task.Executor{ + Dir: "testdata/dotenv/parse_error", + } + + path, _ := filepath.Abs(filepath.Join(e.Dir, ".env-with-error")) + expected := fmt.Sprintf("error reading env file %s:", path) + + err := e.Setup() + require.ErrorContains(t, err, expected) +} + func TestTaskDotenv(t *testing.T) { tt := fileContentTest{ Dir: "testdata/dotenv_task/default", diff --git a/taskfile/dotenv.go b/taskfile/dotenv.go index 3971a9d2..cabb4016 100644 --- a/taskfile/dotenv.go +++ b/taskfile/dotenv.go @@ -1,6 +1,7 @@ package taskfile import ( + "fmt" "os" "github.com/joho/godotenv" @@ -37,7 +38,7 @@ func Dotenv(c *compiler.Compiler, tf *ast.Taskfile, dir string) (*ast.Vars, erro envs, err := godotenv.Read(dotEnvPath) if err != nil { - return nil, err + return nil, fmt.Errorf("error reading env file %s: %w", dotEnvPath, err) } for key, value := range envs { if ok := env.Exists(key); !ok { diff --git a/testdata/dotenv/parse_error/.env-with-error b/testdata/dotenv/parse_error/.env-with-error new file mode 100644 index 00000000..3286e292 --- /dev/null +++ b/testdata/dotenv/parse_error/.env-with-error @@ -0,0 +1,2 @@ +#intentional parse error +SOME_VAR diff --git a/testdata/dotenv/parse_error/Taskfile.yml b/testdata/dotenv/parse_error/Taskfile.yml new file mode 100644 index 00000000..37623e77 --- /dev/null +++ b/testdata/dotenv/parse_error/Taskfile.yml @@ -0,0 +1,8 @@ +version: '3' + +dotenv: ['.env-with-error'] + +tasks: + default: + cmd: "true" +