Browse code

Add gosimple linter

Update gometalinter

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2017/09/12 03:55:05
Showing 52 changed files
... ...
@@ -17,20 +17,13 @@ import (
17 17
 
18 18
 // WriteLogStream writes an encoded byte stream of log messages from the
19 19
 // messages channel, multiplexing them with a stdcopy.Writer if mux is true
20
-func WriteLogStream(ctx context.Context, w io.Writer, msgs <-chan *backend.LogMessage, config *types.ContainerLogsOptions, mux bool) {
20
+func WriteLogStream(_ context.Context, w io.Writer, msgs <-chan *backend.LogMessage, config *types.ContainerLogsOptions, mux bool) {
21 21
 	wf := ioutils.NewWriteFlusher(w)
22 22
 	defer wf.Close()
23 23
 
24 24
 	wf.Flush()
25 25
 
26
-	// this might seem like doing below is clear:
27
-	//   var outStream io.Writer = wf
28
-	// however, this GREATLY DISPLEASES golint, and if you do that, it will
29
-	// fail CI. we need outstream to be type writer because if we mux streams,
30
-	// we will need to reassign all of the streams to be stdwriters, which only
31
-	// conforms to the io.Writer interface.
32
-	var outStream io.Writer
33
-	outStream = wf
26
+	outStream := io.Writer(wf)
34 27
 	errStream := outStream
35 28
 	sysErrStream := errStream
36 29
 	if mux {
... ...
@@ -427,11 +427,7 @@ func (sr *swarmRouter) updateSecret(ctx context.Context, w http.ResponseWriter,
427 427
 	}
428 428
 
429 429
 	id := vars["id"]
430
-	if err := sr.backend.UpdateSecret(id, version, secret); err != nil {
431
-		return err
432
-	}
433
-
434
-	return nil
430
+	return sr.backend.UpdateSecret(id, version, secret)
435 431
 }
436 432
 
437 433
 func (sr *swarmRouter) getConfigs(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
... ...
@@ -498,9 +494,5 @@ func (sr *swarmRouter) updateConfig(ctx context.Context, w http.ResponseWriter,
498 498
 	}
499 499
 
500 500
 	id := vars["id"]
501
-	if err := sr.backend.UpdateConfig(id, version, config); err != nil {
502
-		return err
503
-	}
504
-
505
-	return nil
501
+	return sr.backend.UpdateConfig(id, version, config)
506 502
 }
... ...
@@ -182,7 +182,7 @@ func TestArgsMatchKVList(t *testing.T) {
182 182
 	}
183 183
 
184 184
 	for args, field := range matches {
185
-		if args.MatchKVList(field, sources) != true {
185
+		if !args.MatchKVList(field, sources) {
186 186
 			t.Fatalf("Expected true for %v on %v, got false", sources, args)
187 187
 		}
188 188
 	}
... ...
@@ -202,7 +202,7 @@ func TestArgsMatchKVList(t *testing.T) {
202 202
 	}
203 203
 
204 204
 	for args, field := range differs {
205
-		if args.MatchKVList(field, sources) != false {
205
+		if args.MatchKVList(field, sources) {
206 206
 			t.Fatalf("Expected false for %v on %v, got true", sources, args)
207 207
 		}
208 208
 	}
... ...
@@ -29,10 +29,8 @@ func GetTimestamp(value string, reference time.Time) (string, error) {
29 29
 	}
30 30
 
31 31
 	var format string
32
-	var parseInLocation bool
33
-
34 32
 	// if the string has a Z or a + or three dashes use parse otherwise use parseinlocation
35
-	parseInLocation = !(strings.ContainsAny(value, "zZ+") || strings.Count(value, "-") == 3)
33
+	parseInLocation := !(strings.ContainsAny(value, "zZ+") || strings.Count(value, "-") == 3)
36 34
 
37 35
 	if strings.Contains(value, ".") {
38 36
 		if parseInLocation {
... ...
@@ -34,10 +34,10 @@ func TestBuilderFlags(t *testing.T) {
34 34
 		t.Fatalf("Test3 of %q was supposed to work: %s", bf.Args, err)
35 35
 	}
36 36
 
37
-	if flStr1.IsUsed() == true {
37
+	if flStr1.IsUsed() {
38 38
 		t.Fatal("Test3 - str1 was not used!")
39 39
 	}
40
-	if flBool1.IsUsed() == true {
40
+	if flBool1.IsUsed() {
41 41
 		t.Fatal("Test3 - bool1 was not used!")
42 42
 	}
43 43
 
... ...
@@ -58,10 +58,10 @@ func TestBuilderFlags(t *testing.T) {
58 58
 	if flBool1.IsTrue() {
59 59
 		t.Fatal("Bool1 was supposed to default to: false")
60 60
 	}
61
-	if flStr1.IsUsed() == true {
61
+	if flStr1.IsUsed() {
62 62
 		t.Fatal("Str1 was not used!")
63 63
 	}
64
-	if flBool1.IsUsed() == true {
64
+	if flBool1.IsUsed() {
65 65
 		t.Fatal("Bool1 was not used!")
66 66
 	}
67 67
 
... ...
@@ -206,10 +206,7 @@ func lookupUser(userStr, filepath string) (int, error) {
206 206
 		return uid, nil
207 207
 	}
208 208
 	users, err := lcUser.ParsePasswdFileFilter(filepath, func(u lcUser.User) bool {
209
-		if u.Name == userStr {
210
-			return true
211
-		}
212
-		return false
209
+		return u.Name == userStr
213 210
 	})
214 211
 	if err != nil {
215 212
 		return 0, err
... ...
@@ -228,10 +225,7 @@ func lookupGroup(groupStr, filepath string) (int, error) {
228 228
 		return gid, nil
229 229
 	}
230 230
 	groups, err := lcUser.ParseGroupFileFilter(filepath, func(g lcUser.Group) bool {
231
-		if g.Name == groupStr {
232
-			return true
233
-		}
234
-		return false
231
+		return g.Name == groupStr
235 232
 	})
236 233
 	if err != nil {
237 234
 		return 0, err
... ...
@@ -143,7 +143,7 @@ func (d *Directive) possibleParserDirective(line string) error {
143 143
 	if len(tecMatch) != 0 {
144 144
 		for i, n := range tokenEscapeCommand.SubexpNames() {
145 145
 			if n == "escapechar" {
146
-				if d.escapeSeen == true {
146
+				if d.escapeSeen {
147 147
 					return errors.New("only one escape parser directive can be used")
148 148
 				}
149 149
 				d.escapeSeen = true
... ...
@@ -159,7 +159,7 @@ func (d *Directive) possibleParserDirective(line string) error {
159 159
 		if len(tpcMatch) != 0 {
160 160
 			for i, n := range tokenPlatformCommand.SubexpNames() {
161 161
 				if n == "platform" {
162
-					if d.platformSeen == true {
162
+					if d.platformSeen {
163 163
 						return errors.New("only one platform parser directive can be used")
164 164
 					}
165 165
 					d.platformSeen = true
... ...
@@ -21,7 +21,7 @@ const (
21 21
 const shouldStayFilename = "should_stay"
22 22
 
23 23
 func extractFilenames(files []os.FileInfo) []string {
24
-	filenames := make([]string, len(files), len(files))
24
+	filenames := make([]string, len(files))
25 25
 
26 26
 	for i, file := range files {
27 27
 		filenames[i] = file.Name()
... ...
@@ -116,7 +116,7 @@ func inspectResponse(ct string, r io.Reader, clen int64) (string, io.ReadCloser,
116 116
 		plen = maxPreambleLength
117 117
 	}
118 118
 
119
-	preamble := make([]byte, plen, plen)
119
+	preamble := make([]byte, plen)
120 120
 	rlen, err := r.Read(preamble)
121 121
 	if rlen == 0 {
122 122
 		return ct, ioutil.NopCloser(r), errors.New("empty response")
... ...
@@ -39,7 +39,7 @@ func (cli *Client) ContainerCommit(ctx context.Context, container string, option
39 39
 	for _, change := range options.Changes {
40 40
 		query.Add("changes", change)
41 41
 	}
42
-	if options.Pause != true {
42
+	if !options.Pause {
43 43
 		query.Set("pause", "0")
44 44
 	}
45 45
 
... ...
@@ -70,7 +70,7 @@ func tlsDialWithDialer(dialer *net.Dialer, network, addr string, config *tls.Con
70 70
 	timeout := dialer.Timeout
71 71
 
72 72
 	if !dialer.Deadline.IsZero() {
73
-		deadlineTimeout := dialer.Deadline.Sub(time.Now())
73
+		deadlineTimeout := time.Until(dialer.Deadline)
74 74
 		if timeout == 0 || deadlineTimeout < timeout {
75 75
 			timeout = deadlineTimeout
76 76
 		}
... ...
@@ -467,7 +467,7 @@ func loadDaemonCliConfig(opts *daemonOptions) (*config.Config, error) {
467 467
 		return nil, err
468 468
 	}
469 469
 
470
-	if conf.V2Only == false {
470
+	if !conf.V2Only {
471 471
 		logrus.Warnf(`The "disable-legacy-registry" option is deprecated and wil be removed in Docker v17.12. Interacting with legacy (v1) registries will no longer be supported in Docker v17.12"`)
472 472
 	}
473 473
 
... ...
@@ -203,10 +203,7 @@ func (db *memDB) ReserveName(name, containerID string) error {
203 203
 // Once released, a name can be reserved again
204 204
 func (db *memDB) ReleaseName(name string) error {
205 205
 	return db.withTxn(func(txn *memdb.Txn) error {
206
-		if err := txn.Delete(memdbNamesTable, nameAssociation{name: name}); err != nil {
207
-			return err
208
-		}
209
-		return nil
206
+		return txn.Delete(memdbNamesTable, nameAssociation{name: name})
210 207
 	})
211 208
 }
212 209
 
... ...
@@ -90,14 +90,12 @@ func main() {
90 90
 		fmt.Printf("Sector size: %d\n", status.SectorSize)
91 91
 		fmt.Printf("Data use: %d of %d (%.1f %%)\n", status.Data.Used, status.Data.Total, 100.0*float64(status.Data.Used)/float64(status.Data.Total))
92 92
 		fmt.Printf("Metadata use: %d of %d (%.1f %%)\n", status.Metadata.Used, status.Metadata.Total, 100.0*float64(status.Metadata.Used)/float64(status.Metadata.Total))
93
-		break
94 93
 	case "list":
95 94
 		ids := devices.List()
96 95
 		sort.Strings(ids)
97 96
 		for _, id := range ids {
98 97
 			fmt.Println(id)
99 98
 		}
100
-		break
101 99
 	case "device":
102 100
 		if flag.NArg() < 2 {
103 101
 			usage()
... ...
@@ -113,7 +111,6 @@ func main() {
113 113
 		fmt.Printf("Size in Sectors: %d\n", status.SizeInSectors)
114 114
 		fmt.Printf("Mapped Sectors: %d\n", status.MappedSectors)
115 115
 		fmt.Printf("Highest Mapped Sector: %d\n", status.HighestMappedSector)
116
-		break
117 116
 	case "resize":
118 117
 		if flag.NArg() < 2 {
119 118
 			usage()
... ...
@@ -131,7 +128,6 @@ func main() {
131 131
 			os.Exit(1)
132 132
 		}
133 133
 
134
-		break
135 134
 	case "snap":
136 135
 		if flag.NArg() < 3 {
137 136
 			usage()
... ...
@@ -142,7 +138,6 @@ func main() {
142 142
 			fmt.Println("Can't create snap device: ", err)
143 143
 			os.Exit(1)
144 144
 		}
145
-		break
146 145
 	case "remove":
147 146
 		if flag.NArg() < 2 {
148 147
 			usage()
... ...
@@ -153,7 +148,6 @@ func main() {
153 153
 			fmt.Println("Can't remove device: ", err)
154 154
 			os.Exit(1)
155 155
 		}
156
-		break
157 156
 	case "mount":
158 157
 		if flag.NArg() < 3 {
159 158
 			usage()
... ...
@@ -164,13 +158,10 @@ func main() {
164 164
 			fmt.Println("Can't mount device: ", err)
165 165
 			os.Exit(1)
166 166
 		}
167
-		break
168 167
 	default:
169 168
 		fmt.Printf("Unknown command %s\n", args[0])
170 169
 		usage()
171 170
 
172 171
 		os.Exit(1)
173 172
 	}
174
-
175
-	return
176 173
 }
... ...
@@ -40,11 +40,7 @@ func (nc *networkAttacherController) Update(ctx context.Context, t *api.Task) er
40 40
 
41 41
 func (nc *networkAttacherController) Prepare(ctx context.Context) error {
42 42
 	// Make sure all the networks that the task needs are created.
43
-	if err := nc.adapter.createNetworks(ctx); err != nil {
44
-		return err
45
-	}
46
-
47
-	return nil
43
+	return nc.adapter.createNetworks(ctx)
48 44
 }
49 45
 
50 46
 func (nc *networkAttacherController) Start(ctx context.Context) error {
... ...
@@ -69,11 +65,7 @@ func (nc *networkAttacherController) Terminate(ctx context.Context) error {
69 69
 func (nc *networkAttacherController) Remove(ctx context.Context) error {
70 70
 	// Try removing the network referenced in this task in case this
71 71
 	// task is the last one referencing it
72
-	if err := nc.adapter.removeNetworks(ctx); err != nil {
73
-		return err
74
-	}
75
-
76
-	return nil
72
+	return nc.adapter.removeNetworks(ctx)
77 73
 }
78 74
 
79 75
 func (nc *networkAttacherController) Close() error {
... ...
@@ -6,7 +6,7 @@ import (
6 6
 	"testing"
7 7
 
8 8
 	"github.com/docker/docker/opts"
9
-	"github.com/docker/go-units"
9
+	units "github.com/docker/go-units"
10 10
 	"github.com/gotestyourself/gotestyourself/fs"
11 11
 	"github.com/spf13/pflag"
12 12
 	"github.com/stretchr/testify/assert"
... ...
@@ -14,7 +14,7 @@ import (
14 14
 )
15 15
 
16 16
 func TestGetConflictFreeConfiguration(t *testing.T) {
17
-	configFileData := string([]byte(`
17
+	configFileData := `
18 18
 		{
19 19
 			"debug": true,
20 20
 			"default-ulimits": {
... ...
@@ -27,7 +27,7 @@ func TestGetConflictFreeConfiguration(t *testing.T) {
27 27
 			"log-opts": {
28 28
 				"tag": "test_tag"
29 29
 			}
30
-		}`))
30
+		}`
31 31
 
32 32
 	file := fs.NewFile(t, "docker-config", fs.WithContent(configFileData))
33 33
 	defer file.Remove()
... ...
@@ -55,7 +55,7 @@ func TestGetConflictFreeConfiguration(t *testing.T) {
55 55
 }
56 56
 
57 57
 func TestDaemonConfigurationMerge(t *testing.T) {
58
-	configFileData := string([]byte(`
58
+	configFileData := `
59 59
 		{
60 60
 			"debug": true,
61 61
 			"default-ulimits": {
... ...
@@ -68,7 +68,7 @@ func TestDaemonConfigurationMerge(t *testing.T) {
68 68
 			"log-opts": {
69 69
 				"tag": "test_tag"
70 70
 			}
71
-		}`))
71
+		}`
72 72
 
73 73
 	file := fs.NewFile(t, "docker-config", fs.WithContent(configFileData))
74 74
 	defer file.Remove()
... ...
@@ -115,10 +115,7 @@ func TestDaemonConfigurationMerge(t *testing.T) {
115 115
 }
116 116
 
117 117
 func TestDaemonConfigurationMergeShmSize(t *testing.T) {
118
-	data := string([]byte(`
119
-		{
120
-			"default-shm-size": "1g"
121
-		}`))
118
+	data := `{"default-shm-size": "1g"}`
122 119
 
123 120
 	file := fs.NewFile(t, "docker-config", fs.WithContent(data))
124 121
 	defer file.Remove()
... ...
@@ -133,7 +130,5 @@ func TestDaemonConfigurationMergeShmSize(t *testing.T) {
133 133
 	require.NoError(t, err)
134 134
 
135 135
 	expectedValue := 1 * 1024 * 1024 * 1024
136
-	if cc.ShmSize.Value() != int64(expectedValue) {
137
-		t.Fatalf("expected default shm size %d, got %d", expectedValue, cc.ShmSize.Value())
138
-	}
136
+	assert.Equal(t, int64(expectedValue), cc.ShmSize.Value())
139 137
 }
... ...
@@ -75,7 +75,7 @@ type Store struct {
75 75
 
76 76
 // NewStore initializes a new exec store.
77 77
 func NewStore() *Store {
78
-	return &Store{commands: make(map[string]*Config, 0)}
78
+	return &Store{commands: make(map[string]*Config)}
79 79
 }
80 80
 
81 81
 // Commands returns the exec configurations in the store.
... ...
@@ -18,6 +18,8 @@ import (
18 18
 	"github.com/docker/docker/pkg/archive"
19 19
 	"github.com/docker/docker/pkg/reexec"
20 20
 	"github.com/docker/docker/pkg/stringid"
21
+	"github.com/stretchr/testify/assert"
22
+	"github.com/stretchr/testify/require"
21 23
 )
22 24
 
23 25
 var (
... ...
@@ -179,9 +181,8 @@ func TestCleanupWithNoDirs(t *testing.T) {
179 179
 	d := newDriver(t)
180 180
 	defer os.RemoveAll(tmp)
181 181
 
182
-	if err := d.Cleanup(); err != nil {
183
-		t.Fatal(err)
184
-	}
182
+	err := d.Cleanup()
183
+	assert.NoError(t, err)
185 184
 }
186 185
 
187 186
 func TestCleanupWithDir(t *testing.T) {
... ...
@@ -201,18 +202,12 @@ func TestMountedFalseResponse(t *testing.T) {
201 201
 	d := newDriver(t)
202 202
 	defer os.RemoveAll(tmp)
203 203
 
204
-	if err := d.Create("1", "", nil); err != nil {
205
-		t.Fatal(err)
206
-	}
204
+	err := d.Create("1", "", nil)
205
+	require.NoError(t, err)
207 206
 
208 207
 	response, err := d.mounted(d.getDiffPath("1"))
209
-	if err != nil {
210
-		t.Fatal(err)
211
-	}
212
-
213
-	if response != false {
214
-		t.Fatal("Response if dir id 1 is mounted should be false")
215
-	}
208
+	require.NoError(t, err)
209
+	assert.False(t, response)
216 210
 }
217 211
 
218 212
 func TestMountedTrueResponse(t *testing.T) {
... ...
@@ -220,26 +215,17 @@ func TestMountedTrueResponse(t *testing.T) {
220 220
 	defer os.RemoveAll(tmp)
221 221
 	defer d.Cleanup()
222 222
 
223
-	if err := d.Create("1", "", nil); err != nil {
224
-		t.Fatal(err)
225
-	}
226
-	if err := d.Create("2", "1", nil); err != nil {
227
-		t.Fatal(err)
228
-	}
223
+	err := d.Create("1", "", nil)
224
+	require.NoError(t, err)
225
+	err = d.Create("2", "1", nil)
226
+	require.NoError(t, err)
229 227
 
230
-	_, err := d.Get("2", "")
231
-	if err != nil {
232
-		t.Fatal(err)
233
-	}
228
+	_, err = d.Get("2", "")
229
+	require.NoError(t, err)
234 230
 
235 231
 	response, err := d.mounted(d.pathCache["2"])
236
-	if err != nil {
237
-		t.Fatal(err)
238
-	}
239
-
240
-	if response != true {
241
-		t.Fatal("Response if dir id 2 is mounted should be true")
242
-	}
232
+	require.NoError(t, err)
233
+	assert.True(t, response)
243 234
 }
244 235
 
245 236
 func TestMountWithParent(t *testing.T) {
... ...
@@ -574,9 +560,8 @@ func TestStatus(t *testing.T) {
574 574
 	}
575 575
 
576 576
 	status := d.Status()
577
-	if status == nil || len(status) == 0 {
578
-		t.Fatal("Status should not be nil or empty")
579
-	}
577
+	assert.Len(t, status, 4)
578
+
580 579
 	rootDir := status[0]
581 580
 	dirs := status[2]
582 581
 	if rootDir[0] != "Root Dir" {
... ...
@@ -677,27 +662,19 @@ func testMountMoreThan42Layers(t *testing.T, mountPath string) {
677 677
 		}
678 678
 		current = hash(current)
679 679
 
680
-		if err := d.CreateReadWrite(current, parent, nil); err != nil {
681
-			t.Logf("Current layer %d", i)
682
-			t.Error(err)
683
-		}
680
+		err := d.CreateReadWrite(current, parent, nil)
681
+		require.NoError(t, err, "current layer %d", i)
682
+
684 683
 		point, err := d.Get(current, "")
685
-		if err != nil {
686
-			t.Logf("Current layer %d", i)
687
-			t.Error(err)
688
-		}
684
+		require.NoError(t, err, "current layer %d", i)
685
+
689 686
 		f, err := os.Create(path.Join(point, current))
690
-		if err != nil {
691
-			t.Logf("Current layer %d", i)
692
-			t.Error(err)
693
-		}
687
+		require.NoError(t, err, "current layer %d", i)
694 688
 		f.Close()
695 689
 
696 690
 		if i%10 == 0 {
697
-			if err := os.Remove(path.Join(point, parent)); err != nil {
698
-				t.Logf("Current layer %d", i)
699
-				t.Error(err)
700
-			}
691
+			err := os.Remove(path.Join(point, parent))
692
+			require.NoError(t, err, "current layer %d", i)
701 693
 			expected--
702 694
 		}
703 695
 		last = current
... ...
@@ -705,20 +682,14 @@ func testMountMoreThan42Layers(t *testing.T, mountPath string) {
705 705
 
706 706
 	// Perform the actual mount for the top most image
707 707
 	point, err := d.Get(last, "")
708
-	if err != nil {
709
-		t.Error(err)
710
-	}
708
+	require.NoError(t, err)
711 709
 	files, err := ioutil.ReadDir(point)
712
-	if err != nil {
713
-		t.Error(err)
714
-	}
715
-	if len(files) != expected {
716
-		t.Errorf("Expected %d got %d", expected, len(files))
717
-	}
710
+	require.NoError(t, err)
711
+	assert.Len(t, files, expected)
718 712
 }
719 713
 
720 714
 func TestMountMoreThan42Layers(t *testing.T) {
721
-	os.RemoveAll(tmpOuter)
715
+	defer os.RemoveAll(tmpOuter)
722 716
 	testMountMoreThan42Layers(t, tmp)
723 717
 }
724 718
 
... ...
@@ -1254,14 +1254,13 @@ func (devices *DeviceSet) setupBaseImage() error {
1254 1254
 }
1255 1255
 
1256 1256
 func setCloseOnExec(name string) {
1257
-	if fileInfos, _ := ioutil.ReadDir("/proc/self/fd"); fileInfos != nil {
1258
-		for _, i := range fileInfos {
1259
-			link, _ := os.Readlink(filepath.Join("/proc/self/fd", i.Name()))
1260
-			if link == name {
1261
-				fd, err := strconv.Atoi(i.Name())
1262
-				if err == nil {
1263
-					unix.CloseOnExec(fd)
1264
-				}
1257
+	fileInfos, _ := ioutil.ReadDir("/proc/self/fd")
1258
+	for _, i := range fileInfos {
1259
+		link, _ := os.Readlink(filepath.Join("/proc/self/fd", i.Name()))
1260
+		if link == name {
1261
+			fd, err := strconv.Atoi(i.Name())
1262
+			if err == nil {
1263
+				unix.CloseOnExec(fd)
1265 1264
 			}
1266 1265
 		}
1267 1266
 	}
... ...
@@ -69,18 +69,18 @@ func (d *Driver) Status() [][2]string {
69 69
 
70 70
 	status := [][2]string{
71 71
 		{"Pool Name", s.PoolName},
72
-		{"Pool Blocksize", fmt.Sprintf("%s", units.HumanSize(float64(s.SectorSize)))},
73
-		{"Base Device Size", fmt.Sprintf("%s", units.HumanSize(float64(s.BaseDeviceSize)))},
72
+		{"Pool Blocksize", units.HumanSize(float64(s.SectorSize))},
73
+		{"Base Device Size", units.HumanSize(float64(s.BaseDeviceSize))},
74 74
 		{"Backing Filesystem", s.BaseDeviceFS},
75 75
 		{"Data file", s.DataFile},
76 76
 		{"Metadata file", s.MetadataFile},
77
-		{"Data Space Used", fmt.Sprintf("%s", units.HumanSize(float64(s.Data.Used)))},
78
-		{"Data Space Total", fmt.Sprintf("%s", units.HumanSize(float64(s.Data.Total)))},
79
-		{"Data Space Available", fmt.Sprintf("%s", units.HumanSize(float64(s.Data.Available)))},
80
-		{"Metadata Space Used", fmt.Sprintf("%s", units.HumanSize(float64(s.Metadata.Used)))},
81
-		{"Metadata Space Total", fmt.Sprintf("%s", units.HumanSize(float64(s.Metadata.Total)))},
82
-		{"Metadata Space Available", fmt.Sprintf("%s", units.HumanSize(float64(s.Metadata.Available)))},
83
-		{"Thin Pool Minimum Free Space", fmt.Sprintf("%s", units.HumanSize(float64(s.MinFreeSpace)))},
77
+		{"Data Space Used", units.HumanSize(float64(s.Data.Used))},
78
+		{"Data Space Total", units.HumanSize(float64(s.Data.Total))},
79
+		{"Data Space Available", units.HumanSize(float64(s.Data.Available))},
80
+		{"Metadata Space Used", units.HumanSize(float64(s.Metadata.Used))},
81
+		{"Metadata Space Total", units.HumanSize(float64(s.Metadata.Total))},
82
+		{"Metadata Space Available", units.HumanSize(float64(s.Metadata.Available))},
83
+		{"Thin Pool Minimum Free Space", units.HumanSize(float64(s.MinFreeSpace))},
84 84
 		{"Udev Sync Supported", fmt.Sprintf("%v", s.UdevSyncSupported)},
85 85
 		{"Deferred Removal Enabled", fmt.Sprintf("%v", s.DeferredRemoveEnabled)},
86 86
 		{"Deferred Deletion Enabled", fmt.Sprintf("%v", s.DeferredDeleteEnabled)},
... ...
@@ -159,13 +159,7 @@ func (d *Driver) Remove(id string) error {
159 159
 	if err := d.DeviceSet.DeleteDevice(id, false); err != nil {
160 160
 		return fmt.Errorf("failed to remove device %s: %v", id, err)
161 161
 	}
162
-
163
-	mp := path.Join(d.home, "mnt", id)
164
-	if err := system.EnsureRemoveAll(mp); err != nil {
165
-		return err
166
-	}
167
-
168
-	return nil
162
+	return system.EnsureRemoveAll(path.Join(d.home, "mnt", id))
169 163
 }
170 164
 
171 165
 // Get mounts a device with given id into the root filesystem
... ...
@@ -94,7 +94,7 @@ func (gdw *NaiveDiffDriver) Diff(id, parent string) (arch io.ReadCloser, err err
94 94
 		// are extracted from tar's with full second precision on modified time.
95 95
 		// We need this hack here to make sure calls within same second receive
96 96
 		// correct result.
97
-		time.Sleep(startTime.Truncate(time.Second).Add(time.Second).Sub(time.Now()))
97
+		time.Sleep(time.Until(startTime.Truncate(time.Second).Add(time.Second)))
98 98
 		return err
99 99
 	}), nil
100 100
 }
... ...
@@ -3,13 +3,13 @@
3 3
 package graphtest
4 4
 
5 5
 import (
6
-	"bytes"
7 6
 	"io"
8 7
 	"io/ioutil"
9 8
 	"path/filepath"
10 9
 	"testing"
11 10
 
12 11
 	"github.com/docker/docker/pkg/stringid"
12
+	"github.com/stretchr/testify/require"
13 13
 )
14 14
 
15 15
 // DriverBenchExists benchmarks calls to exist
... ...
@@ -251,9 +251,7 @@ func DriverBenchDeepLayerRead(b *testing.B, layerCount int, drivername string, d
251 251
 		}
252 252
 
253 253
 		b.StopTimer()
254
-		if bytes.Compare(c, content) != 0 {
255
-			b.Fatalf("Wrong content in file %v, expected %v", c, content)
256
-		}
254
+		require.Equal(b, content, c)
257 255
 		b.StartTimer()
258 256
 	}
259 257
 }
... ...
@@ -269,10 +269,7 @@ func (d *Driver) Create(id, parent string, opts *graphdriver.CreateOpts) (retErr
269 269
 
270 270
 	// Toplevel images are just a "root" dir
271 271
 	if parent == "" {
272
-		if err := idtools.MkdirAs(path.Join(dir, "root"), 0755, rootUID, rootGID); err != nil {
273
-			return err
274
-		}
275
-		return nil
272
+		return idtools.MkdirAndChown(path.Join(dir, "root"), 0755, idtools.IDPair{rootUID, rootGID})
276 273
 	}
277 274
 
278 275
 	parentDir := d.dir(parent)
... ...
@@ -103,10 +103,7 @@ func (d *Driver) dir(id string) string {
103 103
 
104 104
 // Remove deletes the content from the directory for a given id.
105 105
 func (d *Driver) Remove(id string) error {
106
-	if err := system.EnsureRemoveAll(d.dir(id)); err != nil {
107
-		return err
108
-	}
109
-	return nil
106
+	return system.EnsureRemoveAll(d.dir(id))
110 107
 }
111 108
 
112 109
 // Get returns the directory for the given id.
... ...
@@ -416,5 +416,5 @@ func (d *Driver) Put(id string) error {
416 416
 func (d *Driver) Exists(id string) bool {
417 417
 	d.Lock()
418 418
 	defer d.Unlock()
419
-	return d.filesystemsCache[d.zfsPath(id)] == true
419
+	return d.filesystemsCache[d.zfsPath(id)]
420 420
 }
... ...
@@ -301,12 +301,10 @@ func (daemon *Daemon) SquashImage(id, parent string) (string, error) {
301 301
 	}
302 302
 	defer daemon.stores[img.Platform()].layerStore.Release(newL)
303 303
 
304
-	var newImage image.Image
305
-	newImage = *img
304
+	newImage := *img
306 305
 	newImage.RootFS = nil
307 306
 
308
-	var rootFS image.RootFS
309
-	rootFS = *parentImg.RootFS
307
+	rootFS := *parentImg.RootFS
310 308
 	rootFS.DiffIDs = append(rootFS.DiffIDs, newL.DiffID())
311 309
 	newImage.RootFS = &rootFS
312 310
 
... ...
@@ -93,7 +93,7 @@ func (lf *logdriverFactory) getLogOptValidator(name string) LogOptValidator {
93 93
 	lf.m.Lock()
94 94
 	defer lf.m.Unlock()
95 95
 
96
-	c, _ := lf.optValidator[name]
96
+	c := lf.optValidator[name]
97 97
 	return c
98 98
 }
99 99
 
... ...
@@ -137,8 +137,7 @@ func newSectionReader(f *os.File) (*io.SectionReader, error) {
137 137
 }
138 138
 
139 139
 func tailFile(f io.ReadSeeker, logWatcher *logger.LogWatcher, tail int, since time.Time) {
140
-	var rdr io.Reader
141
-	rdr = f
140
+	rdr := io.Reader(f)
142 141
 	if tail > 0 {
143 142
 		ls, err := tailfile.TailFile(f, tail)
144 143
 		if err != nil {
... ...
@@ -202,7 +202,6 @@ func (r *messageRing) Close() {
202 202
 	r.closed = true
203 203
 	r.wait.Broadcast()
204 204
 	r.mu.Unlock()
205
-	return
206 205
 }
207 206
 
208 207
 // Drain drains all messages from the queue.
... ...
@@ -8,6 +8,7 @@ import (
8 8
 	"time"
9 9
 
10 10
 	"github.com/docker/docker/daemon/logger"
11
+	"github.com/stretchr/testify/require"
11 12
 )
12 13
 
13 14
 // Validate options
... ...
@@ -125,7 +126,7 @@ func TestDefault(t *testing.T) {
125 125
 		splunkLoggerDriver.nullMessage.Source != "" ||
126 126
 		splunkLoggerDriver.nullMessage.SourceType != "" ||
127 127
 		splunkLoggerDriver.nullMessage.Index != "" ||
128
-		splunkLoggerDriver.gzipCompression != false ||
128
+		splunkLoggerDriver.gzipCompression ||
129 129
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
130 130
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
131 131
 		splunkLoggerDriver.bufferMaximum != defaultBufferMaximum ||
... ...
@@ -255,7 +256,7 @@ func TestInlineFormatWithNonDefaultOptions(t *testing.T) {
255 255
 		splunkLoggerDriver.nullMessage.Source != "mysource" ||
256 256
 		splunkLoggerDriver.nullMessage.SourceType != "mysourcetype" ||
257 257
 		splunkLoggerDriver.nullMessage.Index != "myindex" ||
258
-		splunkLoggerDriver.gzipCompression != true ||
258
+		!splunkLoggerDriver.gzipCompression ||
259 259
 		splunkLoggerDriver.gzipCompressionLevel != gzip.DefaultCompression ||
260 260
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
261 261
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
... ...
@@ -355,7 +356,7 @@ func TestJsonFormat(t *testing.T) {
355 355
 		splunkLoggerDriver.nullMessage.Source != "" ||
356 356
 		splunkLoggerDriver.nullMessage.SourceType != "" ||
357 357
 		splunkLoggerDriver.nullMessage.Index != "" ||
358
-		splunkLoggerDriver.gzipCompression != true ||
358
+		!splunkLoggerDriver.gzipCompression ||
359 359
 		splunkLoggerDriver.gzipCompressionLevel != gzip.BestSpeed ||
360 360
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
361 361
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
... ...
@@ -448,14 +449,10 @@ func TestRawFormat(t *testing.T) {
448 448
 	}
449 449
 
450 450
 	hostname, err := info.Hostname()
451
-	if err != nil {
452
-		t.Fatal(err)
453
-	}
451
+	require.NoError(t, err)
454 452
 
455 453
 	loggerDriver, err := New(info)
456
-	if err != nil {
457
-		t.Fatal(err)
458
-	}
454
+	require.NoError(t, err)
459 455
 
460 456
 	if !hec.connectionVerified {
461 457
 		t.Fatal("By default connection should be verified")
... ...
@@ -472,7 +469,7 @@ func TestRawFormat(t *testing.T) {
472 472
 		splunkLoggerDriver.nullMessage.Source != "" ||
473 473
 		splunkLoggerDriver.nullMessage.SourceType != "" ||
474 474
 		splunkLoggerDriver.nullMessage.Index != "" ||
475
-		splunkLoggerDriver.gzipCompression != false ||
475
+		splunkLoggerDriver.gzipCompression ||
476 476
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
477 477
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
478 478
 		splunkLoggerDriver.bufferMaximum != defaultBufferMaximum ||
... ...
@@ -586,7 +583,7 @@ func TestRawFormatWithLabels(t *testing.T) {
586 586
 		splunkLoggerDriver.nullMessage.Source != "" ||
587 587
 		splunkLoggerDriver.nullMessage.SourceType != "" ||
588 588
 		splunkLoggerDriver.nullMessage.Index != "" ||
589
-		splunkLoggerDriver.gzipCompression != false ||
589
+		splunkLoggerDriver.gzipCompression ||
590 590
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
591 591
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
592 592
 		splunkLoggerDriver.bufferMaximum != defaultBufferMaximum ||
... ...
@@ -698,7 +695,7 @@ func TestRawFormatWithoutTag(t *testing.T) {
698 698
 		splunkLoggerDriver.nullMessage.Source != "" ||
699 699
 		splunkLoggerDriver.nullMessage.SourceType != "" ||
700 700
 		splunkLoggerDriver.nullMessage.Index != "" ||
701
-		splunkLoggerDriver.gzipCompression != false ||
701
+		splunkLoggerDriver.gzipCompression ||
702 702
 		splunkLoggerDriver.postMessagesFrequency != defaultPostMessagesFrequency ||
703 703
 		splunkLoggerDriver.postMessagesBatchSize != defaultPostMessagesBatchSize ||
704 704
 		splunkLoggerDriver.bufferMaximum != defaultBufferMaximum ||
... ...
@@ -169,5 +169,4 @@ func pluginStopMetricsCollection(p plugingetter.CompatPlugin) {
169 169
 			logrus.WithError(err).WithField("name", p.Name()).WithField("socket", sockPath).Error("error unmounting metrics socket for plugin")
170 170
 		}
171 171
 	}
172
-	return
173 172
 }
... ...
@@ -115,6 +115,7 @@ var (
115 115
 func (daemon *Daemon) startIngressWorker() {
116 116
 	ingressJobsChannel = make(chan *ingressJob, 100)
117 117
 	go func() {
118
+		// nolint: gosimple
118 119
 		for {
119 120
 			select {
120 121
 			case r := <-ingressJobsChannel:
... ...
@@ -232,7 +233,6 @@ func (daemon *Daemon) releaseIngress(id string) {
232 232
 		logrus.Errorf("Failed to delete ingress network %s: %v", n.ID(), err)
233 233
 		return
234 234
 	}
235
-	return
236 235
 }
237 236
 
238 237
 // SetNetworkBootstrapKeys sets the bootstrap keys.
... ...
@@ -29,6 +29,7 @@ import (
29 29
 	"github.com/sirupsen/logrus"
30 30
 )
31 31
 
32
+// nolint: gosimple
32 33
 var (
33 34
 	deviceCgroupRuleRegex = regexp.MustCompile("^([acb]) ([0-9]+|\\*):([0-9]+|\\*) ([rwm]{1,3})$")
34 35
 )
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/docker/docker/pkg/discovery"
13 13
 	_ "github.com/docker/docker/pkg/discovery/memory"
14 14
 	"github.com/docker/docker/registry"
15
+	"github.com/stretchr/testify/assert"
15 16
 )
16 17
 
17 18
 func TestDaemonReloadLabels(t *testing.T) {
... ...
@@ -85,15 +86,11 @@ func TestDaemonReloadAllowNondistributableArtifacts(t *testing.T) {
85 85
 	for _, value := range serviceConfig.AllowNondistributableArtifactsCIDRs {
86 86
 		actual = append(actual, value.String())
87 87
 	}
88
-	for _, value := range serviceConfig.AllowNondistributableArtifactsHostnames {
89
-		actual = append(actual, value)
90
-	}
88
+	actual = append(actual, serviceConfig.AllowNondistributableArtifactsHostnames...)
91 89
 
92 90
 	sort.Strings(registries)
93 91
 	sort.Strings(actual)
94
-	if !reflect.DeepEqual(registries, actual) {
95
-		t.Fatalf("expected %v, got %v\n", registries, actual)
96
-	}
92
+	assert.Equal(t, registries, actual)
97 93
 }
98 94
 
99 95
 func TestDaemonReloadMirrors(t *testing.T) {
... ...
@@ -16,6 +16,7 @@ func validatePSArgs(psArgs string) error {
16 16
 	// NOTE: \\s does not detect unicode whitespaces.
17 17
 	// So we use fieldsASCII instead of strings.Fields in parsePSOutput.
18 18
 	// See https://github.com/docker/docker/pull/24358
19
+	// nolint: gosimple
19 20
 	re := regexp.MustCompile("\\s+([^\\s]*)=\\s*(PID[^\\s]*)")
20 21
 	for _, group := range re.FindAllStringSubmatch(psArgs, -1) {
21 22
 		if len(group) >= 3 {
... ...
@@ -395,12 +395,7 @@ func (pd *v2PushDescriptor) Upload(ctx context.Context, progressOutput progress.
395 395
 	defer layerUpload.Close()
396 396
 
397 397
 	// upload the blob
398
-	desc, err := pd.uploadUsingSession(ctx, progressOutput, diffID, layerUpload)
399
-	if err != nil {
400
-		return desc, err
401
-	}
402
-
403
-	return desc, nil
398
+	return pd.uploadUsingSession(ctx, progressOutput, diffID, layerUpload)
404 399
 }
405 400
 
406 401
 func (pd *v2PushDescriptor) SetRemoteDescriptor(descriptor distribution.Descriptor) {
... ...
@@ -10,4 +10,4 @@ LIBNETWORK_COMMIT=7b2b1feb1de4817d522cc372af149ff48d25028e
10 10
 VNDR_COMMIT=9909bb2b8a0b7ea464527b376dc50389c90df587
11 11
 
12 12
 # Linting
13
-GOMETALINTER_COMMIT=5507b26af3204e949ffe50ec08ee73e5847938e1
13
+GOMETALINTER_COMMIT=bfcc1d6942136fd86eb6f1a6fb328de8398fbd80
... ...
@@ -9,15 +9,14 @@
9 9
     "api/types/container/container_.*",
10 10
     "integration-cli/"
11 11
   ],
12
-  "Skip": [
13
-    "integration-cli/"
14
-  ],
12
+  "Skip": ["integration-cli/"],
15 13
 
16 14
   "Enable": [
17 15
     "deadcode",
18 16
     "gofmt",
19 17
     "goimports",
20 18
     "golint",
19
+    "gosimple",
21 20
     "ineffassign",
22 21
     "interfacer",
23 22
     "unconvert",
... ...
@@ -1,7 +1,6 @@
1 1
 package image
2 2
 
3 3
 import (
4
-	"bytes"
5 4
 	"crypto/rand"
6 5
 	"crypto/sha256"
7 6
 	"encoding/hex"
... ...
@@ -12,7 +11,7 @@ import (
12 12
 	"testing"
13 13
 
14 14
 	"github.com/docker/docker/internal/testutil"
15
-	"github.com/opencontainers/go-digest"
15
+	digest "github.com/opencontainers/go-digest"
16 16
 	"github.com/stretchr/testify/assert"
17 17
 )
18 18
 
... ...
@@ -112,9 +111,7 @@ func TestFSMetadataGetSet(t *testing.T) {
112 112
 		actual, err := store.GetMetadata(tc.id, tc.key)
113 113
 		assert.NoError(t, err)
114 114
 
115
-		if bytes.Compare(actual, tc.value) != 0 {
116
-			t.Fatalf("Metadata expected %q, got %q", tc.value, actual)
117
-		}
115
+		assert.Equal(t, tc.value, actual)
118 116
 	}
119 117
 
120 118
 	_, err = store.GetMetadata(id2, "tkey2")
... ...
@@ -183,9 +180,7 @@ func TestFSGetSet(t *testing.T) {
183 183
 	for _, tc := range tcases {
184 184
 		data, err := store.Get(tc.expected)
185 185
 		assert.NoError(t, err)
186
-		if bytes.Compare(data, tc.input) != 0 {
187
-			t.Fatalf("expected data %q, got %q", tc.input, data)
188
-		}
186
+		assert.Equal(t, tc.input, data)
189 187
 	}
190 188
 }
191 189
 
... ...
@@ -82,8 +82,7 @@ func (l *tarexporter) Load(inTar io.ReadCloser, outStream io.Writer, quiet bool)
82 82
 		if err := checkCompatibleOS(img.OS); err != nil {
83 83
 			return err
84 84
 		}
85
-		var rootFS image.RootFS
86
-		rootFS = *img.RootFS
85
+		rootFS := *img.RootFS
87 86
 		rootFS.DiffIDs = nil
88 87
 
89 88
 		if expected, actual := len(m.Layers), len(img.RootFS.DiffIDs); expected != actual {
... ...
@@ -296,10 +296,7 @@ func (clnt *client) UpdateResources(containerID string, resources Resources) err
296 296
 		Pid:       InitFriendlyName,
297 297
 		Resources: (*containerd.UpdateResource)(&resources),
298 298
 	})
299
-	if err != nil {
300
-		return err
301
-	}
302
-	return nil
299
+	return err
303 300
 }
304 301
 
305 302
 func (clnt *client) getExitNotifier(containerID string) *exitNotifier {
... ...
@@ -158,7 +158,7 @@ func sendBody(url string, header http.Header) bool {
158 158
 
159 159
 // headers returns flatten version of the http headers excluding authorization
160 160
 func headers(header http.Header) map[string]string {
161
-	v := make(map[string]string, 0)
161
+	v := make(map[string]string)
162 162
 	for k, values := range header {
163 163
 		// Skip authorization headers
164 164
 		if strings.EqualFold(k, "Authorization") || strings.EqualFold(k, "X-Registry-Config") || strings.EqualFold(k, "X-Registry-Auth") {
... ...
@@ -351,8 +351,7 @@ func RemoveDeviceDeferred(name string) error {
351 351
 	// disable udev dm rules and delete the symlink under /dev/mapper by itself,
352 352
 	// even if the removal is deferred by the kernel.
353 353
 	cookie := new(uint)
354
-	var flags uint16
355
-	flags = DmUdevDisableLibraryFallback
354
+	flags := uint16(DmUdevDisableLibraryFallback)
356 355
 	if err := task.setCookie(cookie, flags); err != nil {
357 356
 		return fmt.Errorf("devicemapper: Can not set cookie: %s", err)
358 357
 	}
... ...
@@ -465,8 +464,7 @@ func CreatePool(poolName string, dataFile, metadataFile *os.File, poolBlockSize
465 465
 	}
466 466
 
467 467
 	cookie := new(uint)
468
-	var flags uint16
469
-	flags = DmUdevDisableSubsystemRulesFlag | DmUdevDisableDiskRulesFlag | DmUdevDisableOtherRulesFlag
468
+	flags := uint16(DmUdevDisableSubsystemRulesFlag | DmUdevDisableDiskRulesFlag | DmUdevDisableOtherRulesFlag)
470 469
 	if err := task.setCookie(cookie, flags); err != nil {
471 470
 		return fmt.Errorf("devicemapper: Can't set cookie %s", err)
472 471
 	}
... ...
@@ -11,7 +11,6 @@ import (
11 11
 	"github.com/docker/docker/pkg/discovery"
12 12
 	"github.com/docker/libkv"
13 13
 	"github.com/docker/libkv/store"
14
-
15 14
 	"github.com/go-check/check"
16 15
 )
17 16
 
... ...
@@ -130,7 +129,6 @@ func (s *Mock) AtomicDelete(key string, previous *store.KVPair) (bool, error) {
130 130
 
131 131
 // Close mock
132 132
 func (s *Mock) Close() {
133
-	return
134 133
 }
135 134
 
136 135
 func (ds *DiscoverySuite) TestInitializeWithCerts(c *check.C) {
... ...
@@ -17,10 +17,7 @@ func ioctlLoopCtlGetFree(fd uintptr) (int, error) {
17 17
 }
18 18
 
19 19
 func ioctlLoopSetFd(loopFd, sparseFd uintptr) error {
20
-	if err := unix.IoctlSetInt(int(loopFd), LoopSetFd, int(sparseFd)); err != nil {
21
-		return err
22
-	}
23
-	return nil
20
+	return unix.IoctlSetInt(int(loopFd), LoopSetFd, int(sparseFd))
24 21
 }
25 22
 
26 23
 func ioctlLoopSetStatus64(loopFd uintptr, loopInfo *loopInfo64) error {
... ...
@@ -47,8 +44,5 @@ func ioctlLoopGetStatus64(loopFd uintptr) (*loopInfo64, error) {
47 47
 }
48 48
 
49 49
 func ioctlLoopSetCapacity(loopFd uintptr, value int) error {
50
-	if err := unix.IoctlSetInt(int(loopFd), LoopSetCapacity, value); err != nil {
51
-		return err
52
-	}
53
-	return nil
50
+	return unix.IoctlSetInt(int(loopFd), LoopSetCapacity, value)
54 51
 }
... ...
@@ -6,6 +6,9 @@ import (
6 6
 	"io"
7 7
 	"strings"
8 8
 	"testing"
9
+
10
+	"github.com/stretchr/testify/assert"
11
+	"github.com/stretchr/testify/require"
9 12
 )
10 13
 
11 14
 func TestBufioReaderPoolGetWithNoReaderShouldCreateOne(t *testing.T) {
... ...
@@ -92,22 +95,16 @@ func TestBufioWriterPoolPutAndGet(t *testing.T) {
92 92
 	buf := new(bytes.Buffer)
93 93
 	bw := bufio.NewWriter(buf)
94 94
 	writer := BufioWriter32KPool.Get(bw)
95
-	if writer == nil {
96
-		t.Fatalf("BufioReaderPool should not return a nil writer.")
97
-	}
95
+	require.NotNil(t, writer)
96
+
98 97
 	written, err := writer.Write([]byte("foobar"))
99
-	if err != nil {
100
-		t.Fatal(err)
101
-	}
102
-	if written != 6 {
103
-		t.Fatalf("Should have written 6 bytes, but wrote %v bytes", written)
104
-	}
98
+	require.NoError(t, err)
99
+	assert.Equal(t, 6, written)
100
+
105 101
 	// Make sure we Flush all the way ?
106 102
 	writer.Flush()
107 103
 	bw.Flush()
108
-	if len(buf.Bytes()) != 6 {
109
-		t.Fatalf("The buffer should contain 6 bytes ('foobar') but contains %v ('%v')", buf.Bytes(), string(buf.Bytes()))
110
-	}
104
+	assert.Len(t, buf.Bytes(), 6)
111 105
 	// Reset the buffer
112 106
 	buf.Reset()
113 107
 	BufioWriter32KPool.Put(writer)
... ...
@@ -41,7 +41,7 @@ func TestCatchAll(t *testing.T) {
41 41
 }
42 42
 
43 43
 func TestStopCatch(t *testing.T) {
44
-	signal, _ := SignalMap["HUP"]
44
+	signal := SignalMap["HUP"]
45 45
 	channel := make(chan os.Signal, 1)
46 46
 	CatchAll(channel)
47 47
 	go func() {
... ...
@@ -306,19 +306,19 @@ func TestAddDeleteGet(t *testing.T) {
306 306
 	}
307 307
 
308 308
 	// Delete a few references
309
-	if deleted, err := store.Delete(ref1); err != nil || deleted != true {
309
+	if deleted, err := store.Delete(ref1); err != nil || !deleted {
310 310
 		t.Fatal("Delete failed")
311 311
 	}
312 312
 	if _, err := store.Get(ref1); err != ErrDoesNotExist {
313 313
 		t.Fatal("Expected ErrDoesNotExist from Get")
314 314
 	}
315
-	if deleted, err := store.Delete(ref5); err != nil || deleted != true {
315
+	if deleted, err := store.Delete(ref5); err != nil || !deleted {
316 316
 		t.Fatal("Delete failed")
317 317
 	}
318 318
 	if _, err := store.Get(ref5); err != ErrDoesNotExist {
319 319
 		t.Fatal("Expected ErrDoesNotExist from Get")
320 320
 	}
321
-	if deleted, err := store.Delete(nameOnly); err != nil || deleted != true {
321
+	if deleted, err := store.Delete(nameOnly); err != nil || !deleted {
322 322
 		t.Fatal("Delete failed")
323 323
 	}
324 324
 	if _, err := store.Get(nameOnly); err != ErrDoesNotExist {
... ...
@@ -75,7 +75,7 @@ func newServiceConfig(options ServiceOptions) *serviceConfig {
75 75
 	config := &serviceConfig{
76 76
 		ServiceConfig: registrytypes.ServiceConfig{
77 77
 			InsecureRegistryCIDRs: make([]*registrytypes.NetIPNet, 0),
78
-			IndexConfigs:          make(map[string]*registrytypes.IndexInfo, 0),
78
+			IndexConfigs:          make(map[string]*registrytypes.IndexInfo),
79 79
 			// Hack: Bypass setting the mirrors to IndexConfigs since they are going away
80 80
 			// and Mirrors are only for the official registry anyways.
81 81
 		},
... ...
@@ -171,7 +171,7 @@ func (config *serviceConfig) LoadInsecureRegistries(registries []string) error {
171 171
 	originalIndexInfos := config.ServiceConfig.IndexConfigs
172 172
 
173 173
 	config.ServiceConfig.InsecureRegistryCIDRs = make([]*registrytypes.NetIPNet, 0)
174
-	config.ServiceConfig.IndexConfigs = make(map[string]*registrytypes.IndexInfo, 0)
174
+	config.ServiceConfig.IndexConfigs = make(map[string]*registrytypes.IndexInfo)
175 175
 
176 176
 skip:
177 177
 	for _, r := range registries {
... ...
@@ -14,6 +14,7 @@ import (
14 14
 	"github.com/docker/distribution/registry/client/transport"
15 15
 	"github.com/docker/docker/api/types"
16 16
 	registrytypes "github.com/docker/docker/api/types/registry"
17
+	"github.com/stretchr/testify/assert"
17 18
 )
18 19
 
19 20
 var (
... ...
@@ -747,16 +748,12 @@ func TestSearchRepositories(t *testing.T) {
747 747
 func TestTrustedLocation(t *testing.T) {
748 748
 	for _, url := range []string{"http://example.com", "https://example.com:7777", "http://docker.io", "http://test.docker.com", "https://fakedocker.com"} {
749 749
 		req, _ := http.NewRequest("GET", url, nil)
750
-		if trustedLocation(req) == true {
751
-			t.Fatalf("'%s' shouldn't be detected as a trusted location", url)
752
-		}
750
+		assert.False(t, trustedLocation(req))
753 751
 	}
754 752
 
755 753
 	for _, url := range []string{"https://docker.io", "https://test.docker.com:80"} {
756 754
 		req, _ := http.NewRequest("GET", url, nil)
757
-		if trustedLocation(req) == false {
758
-			t.Fatalf("'%s' should be detected as a trusted location", url)
759
-		}
755
+		assert.True(t, trustedLocation(req))
760 756
 	}
761 757
 }
762 758
 
... ...
@@ -68,7 +68,7 @@ func validateNetContainerMode(c *container.Config, hc *container.HostConfig) err
68 68
 		return ErrConflictContainerNetworkAndMac
69 69
 	}
70 70
 
71
-	if hc.NetworkMode.IsContainer() && (len(hc.PortBindings) > 0 || hc.PublishAllPorts == true) {
71
+	if hc.NetworkMode.IsContainer() && (len(hc.PortBindings) > 0 || hc.PublishAllPorts) {
72 72
 		return ErrConflictNetworkPublishPorts
73 73
 	}
74 74
 
... ...
@@ -195,9 +195,7 @@ func TestDecodeHostConfig(t *testing.T) {
195 195
 			t.Fatal(fmt.Errorf("Error parsing %s: %v", f, err))
196 196
 		}
197 197
 
198
-		if c.Privileged != false {
199
-			t.Fatalf("Expected privileged false, found %v\n", c.Privileged)
200
-		}
198
+		assert.False(t, c.Privileged)
201 199
 
202 200
 		if l := len(c.Binds); l != 1 {
203 201
 			t.Fatalf("Expected 1 bind, found %d\n", l)