Skip to content

Commit d3028ea

Browse files
committed
Load kube-tmuxp config object during construction
1 parent aafbdd8 commit d3028ea

File tree

3 files changed

+34
-39
lines changed

3 files changed

+34
-39
lines changed

cmd/generate.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ var generateCmd = &cobra.Command{
3030
os.Exit(1)
3131
}
3232

33-
kubetmuxpCfg := kubetmuxp.New(bufioReader, kubeCfg)
34-
err = kubetmuxpCfg.Load()
33+
kubetmuxpCfg, err := kubetmuxp.NewConfig(bufioReader, kubeCfg)
3534
if err != nil {
3635
fmt.Println(err)
3736
os.Exit(1)

pkg/kubetmuxp/kubetmuxp.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,11 @@ type Projects []Project
6161
// Config represents kube-tmuxp config
6262
type Config struct {
6363
Projects `yaml:"projects"`
64-
reader io.Reader
6564
kubeCfg kubeconfig.KubeConfig
6665
}
6766

68-
// Load constructs kube-tmuxp config from given file
69-
func (c *Config) Load() error {
70-
data, err := ioutil.ReadAll(c.reader)
67+
func (c *Config) read(reader io.Reader) error {
68+
data, err := ioutil.ReadAll(reader)
7169
if err != nil {
7270
return err
7371
}
@@ -116,10 +114,13 @@ func (c *Config) Process() error {
116114
return nil
117115
}
118116

119-
// New creates a new kube-tmuxp Config
120-
func New(reader io.Reader, kubeCfg kubeconfig.KubeConfig) Config {
121-
return Config{
122-
reader: reader,
123-
kubeCfg: kubeCfg,
117+
// NewConfig creates a new kube-tmuxp Config
118+
func NewConfig(reader io.Reader, kubeCfg kubeconfig.KubeConfig) (Config, error) {
119+
cfg := Config{kubeCfg: kubeCfg}
120+
121+
if err := cfg.read(reader); err != nil {
122+
return cfg, err
124123
}
124+
125+
return cfg, nil
125126
}

pkg/kubetmuxp/kubetmuxp_test.go

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package kubetmuxp_test
22

33
import (
4-
"io"
54
"strings"
65
"testing"
76

@@ -20,37 +19,38 @@ func getKubeCfg(ctrl *gomock.Controller) kubeconfig.KubeConfig {
2019
return kubeCfg
2120
}
2221

23-
func TestNew(t *testing.T) {
24-
ctrl := gomock.NewController(t)
25-
defer ctrl.Finish()
22+
func TestNewConfig(t *testing.T) {
23+
t.Run("should create a new kube-tmuxp config", func(t *testing.T) {
24+
ctrl := gomock.NewController(t)
25+
defer ctrl.Finish()
2626

27-
var reader io.Reader
28-
kubeCfg := getKubeCfg(ctrl)
29-
kubetmuxpCfg := kubetmuxp.New(reader, kubeCfg)
27+
reader := strings.NewReader("")
28+
kubeCfg := getKubeCfg(ctrl)
29+
kubetmuxpCfg, err := kubetmuxp.NewConfig(reader, kubeCfg)
3030

31-
assert.NotNil(t, kubetmuxpCfg)
32-
}
31+
assert.Nil(t, err)
32+
assert.NotNil(t, kubetmuxpCfg)
33+
})
3334

34-
func TestLoadConfig(t *testing.T) {
35-
t.Run("should load the config", func(t *testing.T) {
35+
t.Run("should read the kube-tmuxp configs", func(t *testing.T) {
3636
ctrl := gomock.NewController(t)
3737
defer ctrl.Finish()
3838

3939
content := `
4040
projects:
41-
- name: test-project
42-
clusters:
43-
- name: test-cluster
44-
zone: test-zone
45-
region: test-region
46-
context: test-ctx
47-
envs:
48-
TEST_ENV: test-value`
41+
- name: test-project
42+
clusters:
43+
- name: test-cluster
44+
zone: test-zone
45+
region: test-region
46+
context: test-ctx
47+
envs:
48+
TEST_ENV: test-value`
4949
reader := strings.NewReader(content)
5050
kubeCfg := getKubeCfg(ctrl)
51-
kubetmuxpCfg := kubetmuxp.New(reader, kubeCfg)
51+
kubetmuxpCfg, _ := kubetmuxp.NewConfig(reader, kubeCfg)
5252

53-
err := kubetmuxpCfg.Load()
53+
assert.NotNil(t, kubetmuxpCfg)
5454

5555
expectedProjects := kubetmuxp.Projects{
5656
{
@@ -68,23 +68,18 @@ projects:
6868
},
6969
},
7070
}
71-
72-
assert.Nil(t, err)
7371
assert.Equal(t, expectedProjects, kubetmuxpCfg.Projects)
7472
})
7573

76-
t.Run("should return error if loading fails", func(t *testing.T) {
74+
t.Run("should return error if config cannot be read", func(t *testing.T) {
7775
ctrl := gomock.NewController(t)
7876
defer ctrl.Finish()
7977

8078
reader := strings.NewReader("invalid yaml")
8179
kubeCfg := getKubeCfg(ctrl)
82-
kubetmuxpCfg := kubetmuxp.New(reader, kubeCfg)
83-
84-
err := kubetmuxpCfg.Load()
80+
_, err := kubetmuxp.NewConfig(reader, kubeCfg)
8581

8682
assert.NotNil(t, err)
87-
assert.Equal(t, kubetmuxp.Projects(nil), kubetmuxpCfg.Projects)
8883
})
8984
}
9085

0 commit comments

Comments
 (0)