From e7986da531568040e0185aafce03cdae2169baac Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 8 Oct 2013 14:54:00 +0200 Subject: [PATCH] Clean up better from previous unit-test runs This makes sure we unmount existing mounts (as well as removing the devmapper devices), and it fails with proper logs rather than just panic()ing. --- runtime_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/runtime_test.go b/runtime_test.go index 73697137bc..964c1a9e93 100644 --- a/runtime_test.go +++ b/runtime_test.go @@ -100,11 +100,25 @@ func removeDev(name string) { syscall.Close(fd) } if err := devmapper.RemoveDevice(name); err != nil { - panic(fmt.Errorf("Unable to remove existing device %s: %s", name, err)) + log.Fatalf("Unable to remove device %s needed to get a freash unit test environment", name) } } func cleanupDevMapper() { + // Unmount any leftover mounts from previous unit test runs + if data, err := ioutil.ReadFile("/proc/mounts"); err == nil { + for _, line := range strings.Split(string(data), "\n") { + cols := strings.Split(line, " ") + if len(cols) >= 2 && strings.HasPrefix(cols[0], "/dev/mapper/docker-unit-tests-devices") { + err = syscall.Unmount(cols[1], 0) + if err != nil { + log.Fatalf("Unable to unmount %s needed to get a freash unit test environment: %s", cols[1], err) + } + } + } + } + + // Remove any leftover devmapper devices from previous unit run tests infos, _ := ioutil.ReadDir("/dev/mapper") if infos != nil { hasPool := false