9 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
10 check "gopkg.in/check.v1"
13 var _ = check.Suite(&CollectionFSSuite{})
15 type CollectionFSSuite struct {
21 func (s *CollectionFSSuite) SetUpTest(c *check.C) {
22 s.client = NewClientFromEnv()
23 err := s.client.RequestAndDecode(&s.coll, "GET", "arvados/v1/collections/"+arvadostest.FooAndBarFilesInDirUUID, nil, nil)
24 c.Assert(err, check.IsNil)
25 s.fs = s.coll.FileSystem(s.client, nil)
28 func (s *CollectionFSSuite) TestReaddirFull(c *check.C) {
29 f, err := s.fs.Open("/dir1")
30 c.Assert(err, check.IsNil)
33 c.Assert(err, check.IsNil)
34 c.Check(st.Size(), check.Equals, int64(2))
35 c.Check(st.IsDir(), check.Equals, true)
37 fis, err := f.Readdir(0)
38 c.Check(err, check.IsNil)
39 c.Check(len(fis), check.Equals, 2)
41 c.Check(fis[0].Size(), check.Equals, int64(3))
45 func (s *CollectionFSSuite) TestReaddirLimited(c *check.C) {
46 f, err := s.fs.Open("./dir1")
47 c.Assert(err, check.IsNil)
49 fis, err := f.Readdir(1)
50 c.Check(err, check.IsNil)
51 c.Check(len(fis), check.Equals, 1)
53 c.Check(fis[0].Size(), check.Equals, int64(3))
56 fis, err = f.Readdir(1)
57 c.Check(err, check.Equals, io.EOF)
58 c.Check(len(fis), check.Equals, 1)
60 c.Check(fis[0].Size(), check.Equals, int64(3))
63 fis, err = f.Readdir(1)
64 c.Check(len(fis), check.Equals, 0)
65 c.Check(err, check.NotNil)
66 c.Check(err, check.Equals, io.EOF)
68 f, err = s.fs.Open("dir1")
69 c.Assert(err, check.IsNil)
70 fis, err = f.Readdir(1)
71 c.Check(len(fis), check.Equals, 1)
72 c.Assert(err, check.IsNil)
73 fis, err = f.Readdir(2)
74 c.Check(len(fis), check.Equals, 1)
75 c.Assert(err, check.Equals, io.EOF)
76 fis, err = f.Readdir(2)
77 c.Check(len(fis), check.Equals, 0)
78 c.Assert(err, check.Equals, io.EOF)
81 func (s *CollectionFSSuite) TestPathMunge(c *check.C) {
82 for _, path := range []string{".", "/", "./", "///", "/../", "/./.."} {
83 f, err := s.fs.Open(path)
84 c.Assert(err, check.IsNil)
87 c.Assert(err, check.IsNil)
88 c.Check(st.Size(), check.Equals, int64(1))
89 c.Check(st.IsDir(), check.Equals, true)
91 for _, path := range []string{"/dir1", "dir1", "./dir1", "///dir1//.//", "../dir1/../dir1/"} {
93 f, err := s.fs.Open(path)
94 c.Assert(err, check.IsNil)
97 c.Assert(err, check.IsNil)
98 c.Check(st.Size(), check.Equals, int64(2))
99 c.Check(st.IsDir(), check.Equals, true)
103 func (s *CollectionFSSuite) TestNotExist(c *check.C) {
104 for _, path := range []string{"/no", "no", "./no", "n/o", "/n/o"} {
105 f, err := s.fs.Open(path)
106 c.Assert(f, check.IsNil)
107 c.Assert(err, check.NotNil)
108 c.Assert(os.IsNotExist(err), check.Equals, true)
112 func (s *CollectionFSSuite) TestOpenFile(c *check.C) {
113 c.Skip("cannot test files with nil keepclient")
115 f, err := s.fs.Open("/foo.txt")
116 c.Assert(err, check.IsNil)
118 c.Assert(err, check.IsNil)
119 c.Check(st.Size(), check.Equals, int64(3))
122 // Gocheck boilerplate
123 func Test(t *testing.T) {