diff --git a/pkg/disk/disk_test.go b/pkg/disk/disk_test.go index e463fa12f..f7e0fb024 100644 --- a/pkg/disk/disk_test.go +++ b/pkg/disk/disk_test.go @@ -34,6 +34,7 @@ var _ = Suite(&MySuite{}) func (s *MySuite) TestFree(c *C) { path, err := ioutil.TempDir(os.TempDir(), "minio-") + defer os.RemoveAll(path) c.Assert(err, IsNil) di, err := disk.GetInfo(path) diff --git a/pkg/ioutils/ioutils.go b/pkg/ioutils/ioutils.go index a81e59047..21273f3c6 100644 --- a/pkg/ioutils/ioutils.go +++ b/pkg/ioutils/ioutils.go @@ -1,3 +1,19 @@ +/* + * Minio Cloud Storage, (C) 2016 Minio, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package ioutils import ( @@ -20,10 +36,12 @@ func ReadDirN(dirname string, n int) ([]os.FileInfo, error) { return nil, err } list, err := f.Readdir(n) - f.Close() if err != nil { return nil, err } + if err = f.Close(); err != nil { + return nil, err + } sort.Sort(byName(list)) return list, nil } @@ -36,10 +54,12 @@ func ReadDirNamesN(dirname string, n int) ([]string, error) { return nil, err } names, err := f.Readdirnames(n) - f.Close() if err != nil { return nil, err } + if err = f.Close(); err != nil { + return nil, err + } sort.Strings(names) return names, nil } diff --git a/pkg/ioutils/ioutils_test.go b/pkg/ioutils/ioutils_test.go new file mode 100644 index 000000000..996bd02cd --- /dev/null +++ b/pkg/ioutils/ioutils_test.go @@ -0,0 +1,54 @@ +/* + * Minio Cloud Storage, (C) 2016 Minio, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ioutils_test + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "testing" + + "github.com/minio/minio/pkg/ioutils" + + . "gopkg.in/check.v1" +) + +func Test(t *testing.T) { TestingT(t) } + +type MySuite struct{} + +var _ = Suite(&MySuite{}) + +func (s *MySuite) TestIoutils(c *C) { + path, err := ioutil.TempDir(os.TempDir(), "minio-") + c.Assert(err, IsNil) + defer os.RemoveAll(path) + + var count int + for count < 102 { + count++ + err = os.MkdirAll(filepath.Join(path, fmt.Sprintf("minio-%d", count)), 0700) + c.Assert(err, IsNil) + } + dirs, err := ioutils.ReadDirN(path, 100) + c.Assert(err, IsNil) + c.Assert(len(dirs), Equals, 100) + dirNames, err := ioutils.ReadDirNamesN(path, 100) + c.Assert(err, IsNil) + c.Assert(len(dirNames), Equals, 100) +}