mount_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package mount
  2. import (
  3. "os"
  4. "path"
  5. "syscall"
  6. "testing"
  7. )
  8. func TestMountOptionsParsing(t *testing.T) {
  9. options := "bind,ro,size=10k"
  10. flag, data := parseOptions(options)
  11. if data != "size=10k" {
  12. t.Fatalf("Expected size=10 got %s", data)
  13. }
  14. expectedFlag := syscall.MS_BIND | syscall.MS_RDONLY
  15. if flag != expectedFlag {
  16. t.Fatalf("Expected %d got %d", expectedFlag, flag)
  17. }
  18. }
  19. func TestMounted(t *testing.T) {
  20. tmp := path.Join(os.TempDir(), "mount-tests")
  21. if err := os.MkdirAll(tmp, 0777); err != nil {
  22. t.Fatal(err)
  23. }
  24. defer os.RemoveAll(tmp)
  25. var (
  26. sourcePath = path.Join(tmp, "sourcefile.txt")
  27. targetPath = path.Join(tmp, "targetfile.txt")
  28. )
  29. f, err := os.Create(sourcePath)
  30. if err != nil {
  31. t.Fatal(err)
  32. }
  33. f.WriteString("hello")
  34. f.Close()
  35. f, err = os.Create(targetPath)
  36. if err != nil {
  37. t.Fatal(err)
  38. }
  39. f.Close()
  40. if err := Mount(sourcePath, targetPath, "none", "bind,ro"); err != nil {
  41. t.Fatal(err)
  42. }
  43. defer func() {
  44. if err := Unmount(targetPath); err != nil {
  45. t.Fatal(err)
  46. }
  47. }()
  48. mounted, err := Mounted(targetPath)
  49. if err != nil {
  50. t.Fatal(err)
  51. }
  52. if !mounted {
  53. t.Fatalf("Expected %s to be mounted", targetPath)
  54. }
  55. }