module Test_exports =

let s = "/local 172.31.0.0/16(rw,sync) \t

/home 172.31.0.0/16(rw,root_squash,sync) @netgroup(rw) *.example.com
# Yes, we export /tmp
/tmp 172.31.0.0/16(rw,root_squash,sync,)
/local2 somehost(rw,sync)
/local3 some-host(rw,sync)
/local3 an-other-host(rw,sync)
/local4 2000:123:456::/64(rw)
/local5 somehost-[01](rw)
"

test Exports.lns get s =
  { "dir" = "/local"
      { "client" = "172.31.0.0/16"
          { "option" = "rw" }
          { "option" = "sync" } } }
  { }
  { "dir" = "/home"
      { "client" = "172.31.0.0/16"
          { "option" = "rw"}
          { "option" = "root_squash" }
          { "option" = "sync" } }
      { "client" = "@netgroup"
          { "option" = "rw" } }
      { "client" = "*.example.com" } }
  { "#comment" = "Yes, we export /tmp" }
  { "dir" = "/tmp"
      { "client" = "172.31.0.0/16"
          { "option" = "rw" }
          { "option" = "root_squash" }
          { "option" = "sync" }
          { "option" = "" } } }
  { "dir" = "/local2"
      { "client" = "somehost"
          { "option" = "rw" }
          { "option" = "sync" } } }
  { "dir" = "/local3"
      { "client" = "some-host"
          { "option" = "rw" }
          { "option" = "sync" } } }
  { "dir" = "/local3"
      { "client" = "an-other-host"
          { "option" = "rw" }
          { "option" = "sync" } } }
  { "dir" = "/local4"
      { "client" = "2000:123:456::/64"
          { "option" = "rw" } } }
  { "dir" = "/local5"
      { "client" = "somehost-[01]"
          { "option" = "rw" } } }

test Exports.lns get "\"/path/in/quotes\" 192.168.0.1(rw,all_squash)\n" =
  { "dir" = "\"/path/in/quotes\""
    { "client" = "192.168.0.1"
      { "option" = "rw" }
      { "option" = "all_squash" } } }
