Skip to content

Commit 03a5551

Browse files
committed
fix: correct Node.FilenameAndLastDir return order across implementations
1 parent af52020 commit 03a5551

File tree

5 files changed

+45
-6
lines changed

5 files changed

+45
-6
lines changed

Diff for: taskfile/node.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type Node interface {
2222
Remote() bool
2323
ResolveEntrypoint(entrypoint string) (string, error)
2424
ResolveDir(dir string) (string, error)
25-
FilenameAndLastDir() (string, string)
25+
FilenameAndLastDir() (lastDir string, file string) // TODO the return order is implemented opposite to the naming
2626
}
2727

2828
func NewRootNode(

Diff for: taskfile/node_git.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,5 @@ func (node *GitNode) ResolveDir(dir string) (string, error) {
121121
}
122122

123123
func (node *GitNode) FilenameAndLastDir() (string, string) {
124-
return filepath.Base(node.path), filepath.Base(filepath.Dir(node.path))
124+
return filepath.Base(filepath.Dir(node.filepath)), filepath.Base(node.filepath)
125125
}

Diff for: taskfile/node_git_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,19 @@ func TestGitNode_FilenameAndDir(t *testing.T) {
6767

6868
node, err := NewGitNode("https://github.com/foo/bar.git//directory/Taskfile.yml?ref=main", "", false)
6969
assert.NoError(t, err)
70-
filename, dir := node.FilenameAndLastDir()
70+
dir, filename := node.FilenameAndLastDir()
7171
assert.Equal(t, "Taskfile.yml", filename)
7272
assert.Equal(t, "directory", dir)
7373

7474
node, err = NewGitNode("https://github.com/foo/bar.git//Taskfile.yml?ref=main", "", false)
7575
assert.NoError(t, err)
76-
filename, dir = node.FilenameAndLastDir()
76+
dir, filename = node.FilenameAndLastDir()
7777
assert.Equal(t, "Taskfile.yml", filename)
7878
assert.Equal(t, ".", dir)
7979

8080
node, err = NewGitNode("https://github.com/foo/bar.git//multiple/directory/Taskfile.yml?ref=main", "", false)
8181
assert.NoError(t, err)
82-
filename, dir = node.FilenameAndLastDir()
82+
dir, filename = node.FilenameAndLastDir()
8383
assert.Equal(t, "Taskfile.yml", filename)
8484
assert.Equal(t, "directory", dir)
8585
}

Diff for: taskfile/node_http.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net/http"
77
"net/url"
88
"path/filepath"
9+
"strings"
910
"time"
1011

1112
"github.com/go-task/task/v3/errors"
@@ -119,6 +120,7 @@ func (node *HTTPNode) ResolveDir(dir string) (string, error) {
119120
}
120121

121122
func (node *HTTPNode) FilenameAndLastDir() (string, string) {
122-
dir, filename := filepath.Split(node.entrypoint)
123+
path := strings.TrimPrefix(node.url.Path, "/")
124+
dir, filename := filepath.Split(path)
123125
return filepath.Base(dir), filename
124126
}

Diff for: taskfile/node_http_test.go

+37
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,40 @@ func TestHTTPNode_redaction(t *testing.T) {
4242
assert.Equal(t, "https://user:[email protected]/common.yaml", location)
4343
})
4444
}
45+
46+
func TestHTTPNode_FilenameAndDir(t *testing.T) {
47+
t.Parallel()
48+
49+
l := logger.NewTestLogger(t)
50+
tests := map[string]struct {
51+
entrypoint string
52+
filename string
53+
dir string
54+
}{
55+
"file at root": {
56+
entrypoint: "https://example.com/Taskfile.yaml",
57+
filename: "Taskfile.yaml",
58+
dir: ".",
59+
},
60+
"file in folder": {
61+
entrypoint: "https://example.com/taskfiles/Taskfile.yaml",
62+
filename: "Taskfile.yaml",
63+
dir: "taskfiles",
64+
},
65+
"nested structure": {
66+
entrypoint: "https://raw.githubusercontent.com/my-org/my-repo/main/Taskfile.yaml",
67+
filename: "Taskfile.yaml",
68+
dir: "main",
69+
},
70+
}
71+
for name, tt := range tests {
72+
t.Run(name, func(t *testing.T) {
73+
t.Parallel()
74+
node, err := NewHTTPNode(l, tt.entrypoint, "", false, time.Second)
75+
require.NoError(t, err)
76+
dir, filename := node.FilenameAndLastDir()
77+
assert.Equal(t, tt.filename, filename)
78+
assert.Equal(t, tt.dir, dir)
79+
})
80+
}
81+
}

0 commit comments

Comments
 (0)