@@ -2,6 +2,7 @@ package runconfig
22
33import (
44 "bytes"
5+ "encoding/json"
56 "fmt"
67 "io/ioutil"
78 "testing"
@@ -254,12 +255,49 @@ func TestDecodeHostConfig(t *testing.T) {
254255 t .Fatalf ("Expected 1 bind, found %v\n " , c .Binds )
255256 }
256257
257- if len ( c .CapAdd ) != 1 && c .CapAdd [0 ] != "NET_ADMIN" {
258+ if c .CapAdd . Len ( ) != 1 && c .CapAdd . Slice () [0 ] != "NET_ADMIN" {
258259 t .Fatalf ("Expected CapAdd NET_ADMIN, got %v" , c .CapAdd )
259260 }
260261
261- if len ( c .CapDrop ) != 1 && c .CapDrop [0 ] != "NET_ADMIN" {
262+ if c .CapDrop . Len ( ) != 1 && c .CapDrop . Slice () [0 ] != "NET_ADMIN" {
262263 t .Fatalf ("Expected CapDrop MKNOD, got %v" , c .CapDrop )
263264 }
264265 }
265266}
267+
268+ func TestCapListUnmarshalSliceAndString (t * testing.T ) {
269+ var cl * CapList
270+ cap0 , err := json .Marshal ([]string {"CAP_SOMETHING" })
271+ if err != nil {
272+ t .Fatal (err )
273+ }
274+ if err := json .Unmarshal (cap0 , & cl ); err != nil {
275+ t .Fatal (err )
276+ }
277+
278+ slice := cl .Slice ()
279+ if len (slice ) != 1 {
280+ t .Fatalf ("expected 1 element after unmarshal: %q" , slice )
281+ }
282+
283+ if slice [0 ] != "CAP_SOMETHING" {
284+ t .Fatalf ("expected `CAP_SOMETHING`, got: %q" , slice [0 ])
285+ }
286+
287+ cap1 , err := json .Marshal ("CAP_SOMETHING" )
288+ if err != nil {
289+ t .Fatal (err )
290+ }
291+ if err := json .Unmarshal (cap1 , & cl ); err != nil {
292+ t .Fatal (err )
293+ }
294+
295+ slice = cl .Slice ()
296+ if len (slice ) != 1 {
297+ t .Fatalf ("expected 1 element after unmarshal: %q" , slice )
298+ }
299+
300+ if slice [0 ] != "CAP_SOMETHING" {
301+ t .Fatalf ("expected `CAP_SOMETHING`, got: %q" , slice [0 ])
302+ }
303+ }
0 commit comments