mirror of
https://github.com/clearlinux/docker.git
synced 2026-10-03 15:28:35 +00:00
Clean volume paths
Fixes #8659 Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
@@ -2396,3 +2396,53 @@ func TestRunNoOutputFromPullInStdout(t *testing.T) {
|
||||
}
|
||||
logDone("run - no output from pull in stdout")
|
||||
}
|
||||
|
||||
func TestRunVolumesCleanPaths(t *testing.T) {
|
||||
defer deleteAllContainers()
|
||||
|
||||
if _, err := buildImage("run_volumes_clean_paths",
|
||||
`FROM busybox
|
||||
VOLUME /foo/`,
|
||||
true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer deleteImages("run_volumes_clean_paths")
|
||||
|
||||
cmd := exec.Command(dockerBinary, "run", "-v", "/foo", "-v", "/bar/", "--name", "dark_helmet", "run_volumes_clean_paths")
|
||||
if out, _, err := runCommandWithOutput(cmd); err != nil {
|
||||
t.Fatal(err, out)
|
||||
}
|
||||
|
||||
out, err := inspectFieldMap("dark_helmet", "Volumes", "/foo/")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if out != "<no value>" {
|
||||
t.Fatalf("Found unexpected volume entry for '/foo/' in volumes\n%q", out)
|
||||
}
|
||||
|
||||
out, err = inspectFieldMap("dark_helmet", "Volumes", "/foo")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(out, volumesStoragePath) {
|
||||
t.Fatalf("Volume was not defined for /foo\n%q", out)
|
||||
}
|
||||
|
||||
out, err = inspectFieldMap("dark_helmet", "Volumes", "/bar/")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if out != "<no value>" {
|
||||
t.Fatalf("Found unexpected volume entry for '/bar/' in volumes\n%q", out)
|
||||
}
|
||||
out, err = inspectFieldMap("dark_helmet", "Volumes", "/bar")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(out, volumesStoragePath) {
|
||||
t.Fatalf("Volume was not defined for /bar\n%q", out)
|
||||
}
|
||||
|
||||
logDone("run - volume paths are cleaned")
|
||||
}
|
||||
|
||||
@@ -16,8 +16,10 @@ var (
|
||||
// the private registry to use for tests
|
||||
privateRegistryURL = "127.0.0.1:5000"
|
||||
|
||||
execDriverPath = "/var/lib/docker/execdriver/native"
|
||||
volumesConfigPath = "/var/lib/docker/volumes"
|
||||
dockerBasePath = "/var/lib/docker"
|
||||
execDriverPath = dockerBasePath + "/execdriver/native"
|
||||
volumesConfigPath = dockerBasePath + "/volumes"
|
||||
volumesStoragePath = dockerBasePath + "/vfs/dir"
|
||||
|
||||
workingDirectory string
|
||||
)
|
||||
|
||||
@@ -509,6 +509,16 @@ func inspectFieldJSON(name, field string) (string, error) {
|
||||
return strings.TrimSpace(out), nil
|
||||
}
|
||||
|
||||
func inspectFieldMap(name, path, field string) (string, error) {
|
||||
format := fmt.Sprintf("{{index .%s %q}}", path, field)
|
||||
inspectCmd := exec.Command(dockerBinary, "inspect", "-f", format, name)
|
||||
out, exitCode, err := runCommandWithOutput(inspectCmd)
|
||||
if err != nil || exitCode != 0 {
|
||||
return "", fmt.Errorf("failed to inspect %s: %s", name, out)
|
||||
}
|
||||
return strings.TrimSpace(out), nil
|
||||
}
|
||||
|
||||
func getIDByName(name string) (string, error) {
|
||||
return inspectField(name, "Id")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user