Skip to content

Commit

Permalink
Get rid of helpers.go
Browse files Browse the repository at this point in the history
  • Loading branch information
hypnoglow committed Dec 15, 2016
1 parent 0ccffd1 commit 2b63138
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 223 deletions.
14 changes: 14 additions & 0 deletions fileutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@ import (
"path"
)

// IsExists reports whether path exists (path may be a file or a directory).
func IsExists(stater Stater, path string) (bool, error) {
_, err := stater.Stat(path)
if stater.IsNotExist(err) {
return false, nil
}

if err != nil {
return false, err
}

return true, nil
}

// Copy copies a file from src to dst.
func Copy(src, dst string) error {
sfi, err := os.Lstat(src)
Expand Down
53 changes: 53 additions & 0 deletions fileutils_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,65 @@
package main

import (
"errors"
"io/ioutil"
"os"
"path"
"reflect"
"testing"
)

func TestIsExists(t *testing.T) {
cases := []struct {
stater *FakeStater
name string
expectedResult bool
expectedError error
}{
{
stater: &FakeStater{
StatFileInfo: nil, // does not matter
StatError: errors.New("Permission denied"),
IsNotExistResult: false,
},
name: "/path/that/errors/on/stat",
expectedResult: false,
expectedError: errors.New("Permission denied"),
},
{
stater: &FakeStater{
StatFileInfo: nil, // does not matter
StatError: errors.New("Not exists"),
IsNotExistResult: true,
},
name: "/path/that/exists",
expectedResult: false,
expectedError: nil,
},
{
stater: &FakeStater{
StatFileInfo: nil, // does not matter
StatError: nil,
IsNotExistResult: false,
},
name: "/path/that/not/exists",
expectedResult: true,
expectedError: nil,
},
}

for _, testcase := range cases {
exists, err := IsExists(testcase.stater, testcase.name)
if exists != testcase.expectedResult {
t.Errorf("Expected %v but got %v\n", testcase.expectedResult, exists)
}

if !reflect.DeepEqual(err, testcase.expectedError) {
t.Errorf("Expected err to be %v but it was %v\n", testcase.expectedError, err)
}
}
}

func TestCopy(t *testing.T) {
testCopyPositive(t)
testCopyNegativeLstat(t)
Expand Down
59 changes: 42 additions & 17 deletions fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,27 @@ type DirMaker interface {
MkdirAll(path string, perm os.FileMode) error
}

type Symlinker interface {
Symlink(oldname, newname string) error
}

type Stater interface {
Stat(name string) (os.FileInfo, error)
IsNotExist(err error) bool
}

type FakeMkdirSymlinker struct {
*FakeDirMaker
*FakeSymlinker
}

type StatDirMaker interface {
Stater
DirMaker
}

// Fake implementation of interface

type FakeDirMaker struct {
MkdirAllError error
}
Expand All @@ -16,10 +37,6 @@ func (f *FakeDirMaker) MkdirAll(path string, perm os.FileMode) error {
return f.MkdirAllError
}

type Symlinker interface {
Symlink(oldname, newname string) error
}

type FakeSymlinker struct {
SymlinkError error
}
Expand All @@ -28,24 +45,23 @@ func (f *FakeSymlinker) Symlink(oldname, newname string) error {
return f.SymlinkError
}

type Stater interface {
Stat(name string) (os.FileInfo, error)
IsNotExist(err error) bool
type FakeStater struct {
StatFileInfo os.FileInfo
StatError error
IsNotExistResult bool
}

type MkdirSymlinker interface {
DirMaker
Symlinker
func (f *FakeStater) Stat(name string) (os.FileInfo, error) {
return f.StatFileInfo, f.StatError
}

type FakeMkdirSymlinker struct {
*FakeDirMaker
*FakeSymlinker
func (f *FakeStater) IsNotExist(err error) bool {
return f.IsNotExistResult
}

type StatDirMaker interface {
Stater
type MkdirSymlinker interface {
DirMaker
Symlinker
}

// Actual implementation of interface using os package.
Expand All @@ -57,8 +73,7 @@ func (f *OsDirMaker) MkdirAll(path string, perm os.FileMode) error {
return os.MkdirAll(path, perm)
}

type OsSymlinker struct {
}
type OsSymlinker struct{}

func (f *OsSymlinker) Symlink(oldname, newname string) error {
return os.Symlink(oldname, newname)
Expand All @@ -68,3 +83,13 @@ type OsMkdirSymlinker struct {
*OsDirMaker
*OsSymlinker
}

type OsStater struct{}

func (s *OsStater) Stat(name string) (os.FileInfo, error) {
return os.Stat(name)
}

func (s *OsStater) IsNotExist(err error) bool {
return os.IsNotExist(err)
}
44 changes: 0 additions & 44 deletions helpers.go

This file was deleted.

140 changes: 0 additions & 140 deletions helpers_test.go

This file was deleted.

Loading

0 comments on commit 2b63138

Please sign in to comment.