github.com/circular-dark/docker@v1.7.0/daemon/volumes_stubs_unit_test.go (about)

     1  // +build !experimental
     2  
     3  package daemon
     4  
     5  import (
     6  	"io/ioutil"
     7  	"os"
     8  	"testing"
     9  
    10  	"github.com/docker/docker/runconfig"
    11  	"github.com/docker/docker/volume"
    12  	"github.com/docker/docker/volume/drivers"
    13  	"github.com/docker/docker/volume/local"
    14  )
    15  
    16  func TestGetVolumeDefaultDriver(t *testing.T) {
    17  	tmp, err := ioutil.TempDir("", "volume-test-")
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	defer os.RemoveAll(tmp)
    22  
    23  	l, err := local.New(tmp)
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	volumedrivers.Register(l, volume.DefaultDriverName)
    28  	d, err := getVolumeDriver("missing")
    29  	if err != nil {
    30  		t.Fatal(err)
    31  	}
    32  
    33  	if d.Name() != volume.DefaultDriverName {
    34  		t.Fatalf("Expected local driver, was %s\n", d.Name)
    35  	}
    36  }
    37  
    38  func TestParseBindMount(t *testing.T) {
    39  	cases := []struct {
    40  		bind       string
    41  		expDest    string
    42  		expSource  string
    43  		expName    string
    44  		mountLabel string
    45  		expRW      bool
    46  		fail       bool
    47  	}{
    48  		{"/tmp:/tmp", "/tmp", "/tmp", "", "", true, false},
    49  		{"/tmp:/tmp:ro", "/tmp", "/tmp", "", "", false, false},
    50  		{"/tmp:/tmp:rw", "/tmp", "/tmp", "", "", true, false},
    51  		{"/tmp:/tmp:foo", "/tmp", "/tmp", "", "", false, true},
    52  		{"name:/tmp", "", "", "", "", false, true},
    53  		{"local/name:/tmp:rw", "", "", "", "", true, true},
    54  	}
    55  
    56  	for _, c := range cases {
    57  		conf := &runconfig.Config{}
    58  		m, err := parseBindMount(c.bind, c.mountLabel, conf)
    59  		if c.fail {
    60  			if err == nil {
    61  				t.Fatalf("Expected error, was nil, for spec %s\n", c.bind)
    62  			}
    63  			continue
    64  		}
    65  
    66  		if m.Destination != c.expDest {
    67  			t.Fatalf("Expected destination %s, was %s, for spec %s\n", c.expDest, m.Destination, c.bind)
    68  		}
    69  
    70  		if m.Source != c.expSource {
    71  			t.Fatalf("Expected source %s, was %s, for spec %s\n", c.expSource, m.Source, c.bind)
    72  		}
    73  
    74  		if m.Name != c.expName {
    75  			t.Fatalf("Expected name %s, was %s for spec %s\n", c.expName, m.Name, c.bind)
    76  		}
    77  
    78  		if m.RW != c.expRW {
    79  			t.Fatalf("Expected RW %v, was %v for spec %s\n", c.expRW, m.RW, c.bind)
    80  		}
    81  	}
    82  }