Skip to content

Commit e3f4e0a

Browse files
committed
chore: fix some SonarQube issues
1 parent bf1c201 commit e3f4e0a

File tree

2 files changed

+102
-73
lines changed

2 files changed

+102
-73
lines changed

pkg/engine/funcs_test.go

+20-16
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,21 @@ import (
66
"testing"
77
)
88

9+
const emptyInput = "empty input"
10+
const validInput = "valid input"
11+
const invalidInput = "invalid input"
12+
913
func TestToYAML(t *testing.T) {
1014
tests := []struct {
1115
name string
1216
input interface{}
1317
expected string
1418
}{{
15-
name: "empty input",
19+
name: emptyInput,
1620
input: nil,
1721
expected: "null",
1822
}, {
19-
name: "valid input",
23+
name: validInput,
2024
input: map[string]interface{}{
2125
"key1": "value1",
2226
"key2": 123,
@@ -41,20 +45,20 @@ func TestFromYAML(t *testing.T) {
4145
expected map[string]interface{}
4246
wantErr bool
4347
}{{
44-
name: "empty input",
48+
name: emptyInput,
4549
input: "",
4650
expected: map[string]interface{}{},
4751
wantErr: false,
4852
}, {
49-
name: "valid input",
53+
name: validInput,
5054
input: "key1: value1\nkey2: 123",
5155
expected: map[string]interface{}{
5256
"key1": "value1",
5357
"key2": 123,
5458
},
5559
wantErr: false,
5660
}, {
57-
name: "invalid input",
61+
name: invalidInput,
5862
input: `invalid yaml`,
5963
wantErr: true,
6064
}}
@@ -80,17 +84,17 @@ func TestFromYAMLArray(t *testing.T) {
8084
expected []interface{}
8185
wantErr bool
8286
}{{
83-
name: "empty input",
87+
name: emptyInput,
8488
input: "",
8589
expected: []interface{}{},
8690
wantErr: false,
8791
}, {
88-
name: "valid input",
92+
name: validInput,
8993
input: "- value1\n- 123\n- true",
9094
expected: []interface{}{"value1", 123, true},
9195
wantErr: false,
9296
}, {
93-
name: "invalid input",
97+
name: invalidInput,
9498
input: "invalid yaml",
9599
wantErr: true,
96100
}}
@@ -117,11 +121,11 @@ func TestToJSON(t *testing.T) {
117121
input interface{}
118122
expected string
119123
}{{
120-
name: "empty input",
124+
name: emptyInput,
121125
input: nil,
122126
expected: "null",
123127
}, {
124-
name: "valid input",
128+
name: validInput,
125129
input: map[string]interface{}{
126130
"key1": "value1",
127131
"key2": 123,
@@ -146,17 +150,17 @@ func TestFromJSON(t *testing.T) {
146150
expected map[string]interface{}
147151
wantErr bool
148152
}{{
149-
name: "empty input",
153+
name: emptyInput,
150154
input: "{}",
151155
expected: map[string]interface{}{},
152156
wantErr: false,
153157
}, {
154-
name: "valid input",
158+
name: validInput,
155159
input: `{"key1":"value1"}`,
156160
expected: map[string]interface{}{"key1": "value1"},
157161
wantErr: false,
158162
}, {
159-
name: "invalid input",
163+
name: invalidInput,
160164
input: `invalid json`,
161165
wantErr: true,
162166
}}
@@ -182,17 +186,17 @@ func TestFromJSONArray(t *testing.T) {
182186
expected []interface{}
183187
wantErr bool
184188
}{{
185-
name: "empty input",
189+
name: emptyInput,
186190
input: "[]",
187191
expected: []interface{}{},
188192
wantErr: false,
189193
}, {
190-
name: "valid input",
194+
name: validInput,
191195
input: `["value1", "value2"]`,
192196
expected: []interface{}{"value1", "value2"},
193197
wantErr: false,
194198
}, {
195-
name: "invalid input",
199+
name: invalidInput,
196200
input: "invalid json",
197201
wantErr: true,
198202
}}

pkg/subcmd/installer.go

+82-57
Original file line numberDiff line numberDiff line change
@@ -104,80 +104,105 @@ func (i *Installer) listResources() error {
104104
return nil
105105
}
106106

107-
// extractResources extracts the embedded resources into a the base directory.
107+
// extractResources extracts the embedded resources into the base directory.
108108
func (i *Installer) extractResources() error {
109109
tr := tar.NewReader(bytes.NewReader(installer.InstallerTarball))
110110

111111
for {
112112
header, err := tr.Next()
113-
if err != nil {
114-
if err == io.EOF {
115-
break
116-
}
113+
if err == io.EOF {
114+
break
115+
} else if err != nil {
117116
return err
118117
}
119118

120119
target := filepath.Join(i.extract, header.Name)
121120

122-
// Creating the base directory if it does not exist.
123-
baseDir := filepath.Dir(target)
124-
if _, err := os.Stat(baseDir); os.IsNotExist(err) {
125-
fmt.Printf("- Creating base directory %q\n", baseDir)
126-
if err := os.MkdirAll(baseDir, dirMode); err != nil {
127-
return err
128-
}
121+
err = i.extractResource(target, header, tr)
122+
if err != nil {
123+
return err
129124
}
125+
}
126+
return nil
127+
}
130128

131-
switch header.Typeflag {
132-
case tar.TypeDir:
133-
fmt.Printf("- Creating directory %q\n", target)
134-
if err := os.MkdirAll(target, dirMode); err != nil {
135-
return err
136-
}
137-
case tar.TypeReg:
138-
fmt.Printf("- Extracting %q\n", target)
139-
f, err := os.OpenFile(
140-
target,
141-
os.O_CREATE|os.O_WRONLY|os.O_TRUNC,
142-
os.FileMode(header.Mode),
143-
)
144-
if err != nil {
145-
return err
146-
}
147-
defer f.Close()
129+
// extractResource extracts an embedded resource into the base directory.
130+
func (i *Installer) extractResource(target string, header *tar.Header, tr *tar.Reader) error {
148131

149-
if _, err := io.Copy(f, tr); err != nil {
150-
return err
151-
}
152-
case tar.TypeSymlink:
153-
// Checking for existing symlinks and removing them if they point to a
154-
// different target location.
155-
if existingTarget, err := os.Readlink(target); err == nil {
156-
if existingTarget == header.Linkname {
157-
fmt.Printf(
158-
"- Symlink %q already exists and points to %q\n",
159-
target,
160-
header.Linkname,
161-
)
162-
continue
163-
} else {
164-
// Removing the existing symlink if it points to a different
165-
// target.
166-
if err := os.Remove(target); err != nil {
167-
return err
168-
}
169-
}
170-
} else if !os.IsNotExist(err) {
171-
return err
172-
}
132+
// Creating the base directory if it does not exist.
133+
baseDir := filepath.Dir(target)
134+
if _, err := os.Stat(baseDir); os.IsNotExist(err) {
135+
fmt.Printf("- Creating base directory %q\n", baseDir)
136+
if err := os.MkdirAll(baseDir, dirMode); err != nil {
137+
return err
138+
}
139+
}
140+
141+
switch header.Typeflag {
142+
case tar.TypeDir:
143+
fmt.Printf("- Creating directory %q\n", target)
144+
if err := os.MkdirAll(target, dirMode); err != nil {
145+
return err
146+
}
147+
case tar.TypeReg:
148+
if err := i.extractFile(target, header, tr); err != nil {
149+
return err
150+
}
151+
case tar.TypeSymlink:
152+
if err := i.extractSymlink(target, header); err != nil {
153+
return err
154+
}
155+
default:
156+
log.Printf("Unsupported type: %v in %s", header.Typeflag, header.Name)
157+
}
158+
return nil
159+
}
173160

174-
fmt.Printf("- Creating symlink %q -> %q\n", target, header.Linkname)
175-
if err := os.Symlink(header.Linkname, target); err != nil {
161+
// extractFile extracts an embedded file into the base directory.
162+
func (i *Installer) extractFile(target string, header *tar.Header, tr *tar.Reader) error {
163+
fmt.Printf("- Extracting %q\n", target)
164+
f, err := os.OpenFile(
165+
target,
166+
os.O_CREATE|os.O_WRONLY|os.O_TRUNC,
167+
os.FileMode(header.Mode),
168+
)
169+
if err != nil {
170+
return err
171+
}
172+
defer f.Close()
173+
174+
if _, err := io.Copy(f, tr); err != nil {
175+
return err
176+
}
177+
return nil
178+
}
179+
180+
// extractSymlink extracts an embedded symlink into the base directory.
181+
func (i *Installer) extractSymlink(target string, header *tar.Header) error {
182+
// Checking for existing symlinks and removing them if they point to a
183+
// different target location.
184+
if existingTarget, err := os.Readlink(target); err == nil {
185+
if existingTarget == header.Linkname {
186+
fmt.Printf(
187+
"- Symlink %q already exists and points to %q\n",
188+
target,
189+
header.Linkname,
190+
)
191+
return nil
192+
} else {
193+
// Removing the existing symlink if it points to a different
194+
// target.
195+
if err := os.Remove(target); err != nil {
176196
return err
177197
}
178-
default:
179-
log.Printf("Unsupported type: %v in %s", header.Typeflag, header.Name)
180198
}
199+
} else if !os.IsNotExist(err) {
200+
return err
201+
}
202+
203+
fmt.Printf("- Creating symlink %q -> %q\n", target, header.Linkname)
204+
if err := os.Symlink(header.Linkname, target); err != nil {
205+
return err
181206
}
182207
return nil
183208
}

0 commit comments

Comments
 (0)