Skip to content

Commit 6a4d922

Browse files
committed
chore: basic CI checks and lint fixes
1 parent f483e95 commit 6a4d922

23 files changed

+229
-62
lines changed

.github/workflows/ci.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
jobs:
12+
build-test:
13+
name: Build Test
14+
runs-on: "ubuntu-latest"
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- uses: actions/setup-go@v5
21+
with:
22+
go-version: "stable"
23+
cache: true
24+
25+
- name: Test Build
26+
run: go build ./...
27+
28+
lint:
29+
name: Lint
30+
runs-on: ubuntu-latest
31+
steps:
32+
- uses: actions/checkout@v4
33+
34+
- uses: actions/setup-go@v5
35+
with:
36+
go-version: "stable"
37+
cache: true
38+
39+
- name: golangci-lint
40+
uses: golangci/golangci-lint-action@v7
41+
with:
42+
# Optional: golangci-lint command line arguments.
43+
args: "--timeout=10m"
44+
45+
unittest:
46+
name: Unit Test
47+
runs-on: ubuntu-latest
48+
49+
steps:
50+
- uses: actions/checkout@v4
51+
52+
- name: Setup Go
53+
uses: actions/setup-go@v5
54+
with:
55+
go-version: "stable"
56+
cache: true
57+
58+
- name: Unit tests
59+
run: |
60+
go test ./... -coverprofile=coverage.out -covermode=atomic -p=1
61+
go tool cover -func coverage.out

.tool-versions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
golang 1.24.0

config/config.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package config
22

33
import (
4-
"github.com/mitchellh/mapstructure"
5-
"github.com/spf13/viper"
64
"os"
75
"strings"
6+
7+
"github.com/mitchellh/mapstructure"
8+
"github.com/spf13/viper"
89
)
910

1011
var (
@@ -46,10 +47,13 @@ func ParseConfigFromFileContent(content string) error {
4647
if err != nil {
4748
return err
4849
}
49-
f.Write([]byte(content))
50+
_, err = f.Write([]byte(content))
51+
if err != nil {
52+
return err
53+
}
5054
defer func() {
51-
f.Close()
52-
os.Remove(f.Name())
55+
_ = f.Close()
56+
_ = os.Remove(f.Name())
5357
}()
5458
return ParseConfigFromFile(f.Name())
5559
}

internal/controller/dataset/configmap.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func datasetConfigMapName(ds *datasetv1alpha1.Dataset) string {
1919

2020
func (r *DatasetReconciler) getConfigMap(ctx context.Context, ds *datasetv1alpha1.Dataset) (*corev1.ConfigMap, error) {
2121
cm := &corev1.ConfigMap{}
22-
err := r.Client.Get(ctx, client.ObjectKey{
22+
err := r.Get(ctx, client.ObjectKey{
2323
Namespace: ds.Namespace,
2424
Name: datasetConfigMapName(ds),
2525
}, cm)
@@ -75,7 +75,7 @@ func (r *DatasetReconciler) createConfigMap(ctx context.Context, ds *datasetv1al
7575
cm.Data[constants.DatasetJobCondaPipRequirementsTxtFilename] = *defaultOpts.requirementsTxt
7676
}
7777

78-
err := r.Client.Create(ctx, cm)
78+
err := r.Create(ctx, cm)
7979
if err != nil {
8080
return nil, err
8181
}
@@ -99,7 +99,7 @@ func (r *DatasetReconciler) updateConfigMap(ctx context.Context, cm *corev1.Conf
9999
cm.Data[constants.DatasetJobCondaPipRequirementsTxtFilename] = *defaultOpts.requirementsTxt
100100
}
101101

102-
err := r.Client.Update(ctx, cm)
102+
err := r.Update(ctx, cm)
103103
if err != nil {
104104
return nil, err
105105
}

internal/pkg/datasources/datasource_conda.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
"github.com/BaizeAI/dataset/internal/pkg/constants"
1717
"github.com/BaizeAI/dataset/internal/pkg/datasources/conda"
18+
"github.com/BaizeAI/dataset/internal/pkg/datasources/pip"
1819
"github.com/BaizeAI/dataset/pkg/log"
1920
"github.com/BaizeAI/dataset/pkg/utils"
2021
)
@@ -96,7 +97,7 @@ type CondaLoader struct {
9697

9798
loaderOptions CondaLoaderOptions
9899
mamba *conda.MambaCLI
99-
pip *conda.PipCLI
100+
pip *pip.PipCLI
100101
}
101102

102103
func NewCondaLoader(datasourceOption map[string]string, options Options, secrets Secrets) (*CondaLoader, error) {
@@ -111,7 +112,7 @@ func NewCondaLoader(datasourceOption map[string]string, options Options, secrets
111112
loader.loaderOptions = loaderOptions
112113

113114
loader.mamba = conda.NewMambaCLI()
114-
loader.pip = conda.NewPipCLIWithCondaEnv(loader.loaderOptions.envPrefix())
115+
loader.pip = pip.NewPipCLIWithCondaEnv(loader.loaderOptions.envPrefix())
115116
loader.tryReadFile()
116117

117118
return loader, nil

internal/pkg/datasources/datasource_conda_test.go

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ import (
1818
func TestCondaSync(t *testing.T) {
1919
t.Run("sync full", func(t *testing.T) {
2020
temDir, _ := os.MkdirTemp("", "test-data-*")
21-
defer os.RemoveAll(temDir)
22-
os.MkdirAll(temDir+"/test-env/conda/pkgs", 0700)
23-
os.MkdirAll(temDir+"/root", 0700)
24-
os.WriteFile(temDir+"/environment.yml", []byte("name: test-env\n"), 0600)
25-
os.WriteFile(temDir+"/requirements.txt", []byte("foo\nbar\nbaz\n"), 0600)
21+
defer func() {
22+
assert.NoError(t, os.RemoveAll(temDir))
23+
}()
24+
require.NoError(t, os.MkdirAll(temDir+"/test-env/conda/pkgs", 0700))
25+
require.NoError(t, os.MkdirAll(temDir+"/root", 0700))
26+
require.NoError(t, os.WriteFile(temDir+"/environment.yml", []byte("name: test-env\n"), 0600))
27+
require.NoError(t, os.WriteFile(temDir+"/requirements.txt", []byte("foo\nbar\nbaz\n"), 0600))
2628
condaLoader, err := NewCondaLoader(map[string]string{
2729
"name": "test-env",
2830
"pythonVersion": "999.999.999",
@@ -36,6 +38,7 @@ func TestCondaSync(t *testing.T) {
3638
}, Secrets{})
3739
assert.NoError(t, err)
3840
fakeConda := fakeCommand{
41+
t: t,
3942
cmd: "mamba",
4043
outputs: []out{
4144
{
@@ -81,8 +84,11 @@ func TestCondaSync(t *testing.T) {
8184
},
8285
},
8386
}
84-
defer fakeConda.Clean()
87+
defer func() {
88+
assert.NoError(t, fakeConda.Clean())
89+
}()
8590
fakePip := fakeCommand{
91+
t: t,
8692
cmd: "pip",
8793
path: path.Join(condaLoader.loaderOptions.envPrefix(), "bin"),
8894
outputs: []out{
@@ -95,8 +101,11 @@ func TestCondaSync(t *testing.T) {
95101
},
96102
}
97103
assert.NoError(t, err)
98-
defer fakePip.Clean()
104+
defer func() {
105+
assert.NoError(t, fakePip.Clean())
106+
}()
99107
fakeRclone := fakeCommand{
108+
t: t,
100109
cmd: "rclone",
101110
outputs: []out{
102111
{
@@ -113,7 +122,9 @@ func TestCondaSync(t *testing.T) {
113122
},
114123
},
115124
}
116-
defer fakeRclone.Clean()
125+
defer func() {
126+
assert.NoError(t, fakeRclone.Clean())
127+
}()
117128
fakeConda.WithContext(func() {
118129
fakePip.WithContext(func() {
119130
fakeRclone.WithContext(func() {
@@ -186,7 +197,9 @@ func TestNewCondaLoader(t *testing.T) {
186197
temDir, err := os.MkdirTemp("", "test-data-*")
187198
require.NoError(t, err)
188199
require.NotEmpty(t, temDir)
189-
defer os.RemoveAll(temDir)
200+
defer func() {
201+
assert.NoError(t, os.RemoveAll(temDir))
202+
}()
190203

191204
err = os.WriteFile(temDir+"/environment.yml", []byte("name: test-env\n"), 0600)
192205
require.NoError(t, err)

internal/pkg/datasources/datasource_git_test.go

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
910
)
1011

1112
func TestGitLoader(t *testing.T) {
@@ -18,6 +19,7 @@ func TestGitLoader(t *testing.T) {
1819
})
1920
assert.NoError(t, err)
2021
fakeGit := fakeCommand{
22+
t: t,
2123
cmd: "git",
2224
outputs: []out{
2325
{
@@ -42,9 +44,13 @@ func TestGitLoader(t *testing.T) {
4244
},
4345
},
4446
}
45-
defer fakeGit.Clean()
47+
defer func() {
48+
assert.NoError(t, fakeGit.Clean())
49+
}()
4650
gitDir, _ := os.MkdirTemp("", "git-*")
47-
defer os.RemoveAll(gitDir)
51+
defer func() {
52+
assert.NoError(t, os.RemoveAll(gitDir))
53+
}()
4854
assert.NoError(t, err)
4955
fakeGit.WithContext(func() {
5056
err = git.Sync("git://github.com/ndx-baize/baize.git", gitDir)
@@ -65,6 +71,7 @@ func TestGitLoader(t *testing.T) {
6571
}, Options{}, Secrets{})
6672
assert.NoError(t, err)
6773
fakeGit := fakeCommand{
74+
t: t,
6875
cmd: "git",
6976
outputs: []out{
7077
{
@@ -89,9 +96,13 @@ func TestGitLoader(t *testing.T) {
8996
},
9097
},
9198
}
92-
defer fakeGit.Clean()
99+
defer func() {
100+
assert.NoError(t, fakeGit.Clean())
101+
}()
93102
gitDir, _ := os.MkdirTemp("", "git-*")
94-
defer os.RemoveAll(gitDir)
103+
defer func() {
104+
assert.NoError(t, os.RemoveAll(gitDir))
105+
}()
95106
assert.NoError(t, err)
96107
fakeGit.WithContext(func() {
97108
err = git.Sync("git://github.com/ndx-baize/baize.git", gitDir)
@@ -111,6 +122,7 @@ func TestGitLoader(t *testing.T) {
111122
}, Options{}, Secrets{})
112123
assert.NoError(t, err)
113124
fakeGit := fakeCommand{
125+
t: t,
114126
cmd: "git",
115127
outputs: []out{
116128
{
@@ -150,10 +162,14 @@ func TestGitLoader(t *testing.T) {
150162
},
151163
},
152164
}
153-
defer fakeGit.Clean()
165+
defer func() {
166+
assert.NoError(t, fakeGit.Clean())
167+
}()
154168
gitDir, _ := os.MkdirTemp("", "git-*")
155-
defer os.RemoveAll(gitDir)
156-
os.Mkdir(gitDir+"/.git", 0755)
169+
defer func() {
170+
assert.NoError(t, os.RemoveAll(gitDir))
171+
}()
172+
require.NoError(t, os.Mkdir(gitDir+"/.git", 0755))
157173
assert.NoError(t, err)
158174
fakeGit.WithContext(func() {
159175
err = git.Sync("git://github.com/ndx-baize/baize.git", gitDir)
@@ -178,6 +194,7 @@ func TestGitLoader(t *testing.T) {
178194
git, err := NewGitLoader(map[string]string{}, Options{}, Secrets{})
179195
assert.NoError(t, err)
180196
fakeGit := fakeCommand{
197+
t: t,
181198
cmd: "git",
182199
outputs: []out{
183200
{
@@ -222,10 +239,14 @@ func TestGitLoader(t *testing.T) {
222239
},
223240
},
224241
}
225-
defer fakeGit.Clean()
242+
defer func() {
243+
assert.NoError(t, fakeGit.Clean())
244+
}()
226245
gitDir, _ := os.MkdirTemp("", "git-*")
227-
defer os.RemoveAll(gitDir)
228-
os.Mkdir(gitDir+"/.git", 0755)
246+
defer func() {
247+
assert.NoError(t, os.RemoveAll(gitDir))
248+
}()
249+
require.NoError(t, os.Mkdir(gitDir+"/.git", 0755))
229250
assert.NoError(t, err)
230251
fakeGit.WithContext(func() {
231252
err = git.Sync("git://github.com/ndx-baize/baize.git", gitDir)

internal/pkg/datasources/datasource_http_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func TestHTTPLoader(t *testing.T) {
2626
})
2727
assert.NoError(t, err)
2828
fakeHTTP := fakeCommand{
29+
t: t,
2930
cmd: "rclone",
3031
outputs: []out{
3132
{
@@ -45,9 +46,13 @@ func TestHTTPLoader(t *testing.T) {
4546
},
4647
},
4748
}
48-
defer fakeHTTP.Clean()
49+
defer func() {
50+
assert.NoError(t, fakeHTTP.Clean())
51+
}()
4952
gitDir, _ := os.MkdirTemp("", "httpLoader-*")
50-
defer os.RemoveAll(gitDir)
53+
defer func() {
54+
assert.NoError(t, os.RemoveAll(gitDir))
55+
}()
5156
assert.NoError(t, err)
5257
fakeHTTP.WithContext(func() {
5358
err = httpLoader.Sync("http://test.com", gitDir)

internal/pkg/datasources/datasource_huggingface_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func TestHuggingFaceLoader(t *testing.T) {
2626
})
2727
assert.NoError(t, err)
2828
fakeHTTP := fakeCommand{
29+
t: t,
2930
cmd: "huggingface-cli",
3031
outputs: []out{
3132
{
@@ -50,9 +51,13 @@ func TestHuggingFaceLoader(t *testing.T) {
5051
},
5152
},
5253
}
53-
defer fakeHTTP.Clean()
54+
defer func() {
55+
assert.NoError(t, fakeHTTP.Clean())
56+
}()
5457
huggingFaceDir, _ := os.MkdirTemp("", "huggingFaceLoader-*")
55-
defer os.RemoveAll(huggingFaceDir)
58+
defer func() {
59+
assert.NoError(t, os.RemoveAll(huggingFaceDir))
60+
}()
5661
assert.NoError(t, err)
5762
fakeHTTP.WithContext(func() {
5863
err = loader.Sync("huggingface://ns/model", huggingFaceDir)

0 commit comments

Comments
 (0)