Skip to content

Commit

Permalink
Remove interface
Browse files Browse the repository at this point in the history
The interface was added to make testing the struct easier.  However,
I don't believe it was all that useful given this particular project.
  • Loading branch information
retr0h committed Aug 7, 2018
1 parent f72b59b commit cc7c149
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 70 deletions.
23 changes: 3 additions & 20 deletions git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,6 @@ var (
FilePathAbs = filepath.Abs
)

type GitCommander interface {
clone(repository repository.Repository) error
reset(repository repository.Repository) error
}

type Cloneable struct {
GC GitCommander
Debug bool // Debug option set from CLI with debug state.
}

// NewCloneable factory to create a new NewCloneable instance.
func NewCloneable(debug bool) *Cloneable {
return &Cloneable{
Debug: debug,
}
}

// Git struct for adding methods.
type Git struct {
Debug bool // Debug option set from CLI with debug state.
Expand All @@ -66,7 +49,7 @@ func NewGit(debug bool) *Git {

// Clone clone Repository.URL to Repository.getCloneDir, and hard checkout
// to Repository.Version.
func (c *Cloneable) Clone(repository repository.Repository) error {
func (g *Git) Clone(repository repository.Repository) error {
cloneDir := repository.GetCloneDir()

msg := fmt.Sprintf("[%s@%s]:", aurora.Magenta(repository.URL), aurora.Magenta(repository.Version))
Expand All @@ -76,11 +59,11 @@ func (c *Cloneable) Clone(repository repository.Repository) error {
fmt.Println(msg)

if _, err := os.Stat(cloneDir); os.IsNotExist(err) {
if err := c.GC.clone(repository); err != nil {
if err := g.clone(repository); err != nil {
return err
}

if err := c.GC.reset(repository); err != nil {
if err := g.reset(repository); err != nil {
return err
}
} else {
Expand Down
56 changes: 16 additions & 40 deletions git/git_public_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,11 @@ import (
type GitTestSuite struct {
suite.Suite
g *git.Git
c *git.Cloneable
r repository.Repository
}

func (suite *GitTestSuite) SetupTest() {
g := git.NewGit(false)
c := git.NewCloneable(false)
c.GC = g // Real Git Implementation

suite.g = g
suite.c = c
suite.g = git.NewGit(false)
suite.r = repository.Repository{
URL: "https://example.com/user/repo.git",
Version: "abc1234",
Expand All @@ -66,54 +60,36 @@ func (suite *GitTestSuite) TestCloneAlreadyExists() {
os.Mkdir(cloneDir, 0755)
}

suite.c.Clone(suite.r)
suite.g.Clone(suite.r)

defer os.RemoveAll(cloneDir)
}

type FakeGitCloneErrors struct {
git.Git
}

func (fg FakeGitCloneErrors) clone(repository repository.Repository) error {
return errors.New("clone had an error")
}

func (fg FakeGitCloneErrors) reset(repository repository.Repository) error {
return nil
}

func (suite *GitTestSuite) TestCloneErrorsOnCloneReturnsError() {
fg := FakeGitCloneErrors{}
c := git.Cloneable{}
c.GC = fg // Inject FakeGitCloneErrors{}

c.Clone(suite.r)
}

type FakeGitResetErrors struct {
git.Git
}
anon := func() error {
err := suite.g.Clone(suite.r)
assert.Error(suite.T(), err)

func (fg FakeGitResetErrors) clone(repository repository.Repository) error {
return nil
}
return err
}

func (fg FakeGitResetErrors) reset(repository repository.Repository) error {
return errors.New("reset had an error")
git.MockRunCommandErrorsOn("clone", anon)
}

func (suite *GitTestSuite) TestCloneErrorsOnResetReturnsError() {
fg := FakeGitResetErrors{}
c := git.Cloneable{}
c.GC = fg // Inject FakeGitResetErrors{}
anon := func() error {
err := suite.g.Clone(suite.r)
assert.Error(suite.T(), err)

return err
}

c.Clone(suite.r)
git.MockRunCommandErrorsOn("reset", anon)
}

func (suite *GitTestSuite) TestClone() {
anon := func() error {
err := suite.c.Clone(suite.r)
err := suite.g.Clone(suite.r)
assert.NoError(suite.T(), err)

return err
Expand Down
8 changes: 1 addition & 7 deletions git/git_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,11 @@ import (
type GitTestSuite struct {
suite.Suite
g *Git
c *Cloneable
r repository.Repository
}

func (suite *GitTestSuite) SetupTest() {
g := NewGit(false)
c := NewCloneable(false)
c.GC = g // Real Git Implementation

suite.g = g
suite.c = c
suite.g = NewGit(false)
suite.r = repository.Repository{
URL: "https://example.com/user/repo.git",
Version: "abc1234",
Expand Down
4 changes: 1 addition & 3 deletions repositories/repositories.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,10 @@ func (r *Repositories) validate(data []byte) error {
// Overlay clone and extract the Repository items.
func (r *Repositories) Overlay() error {
g := git.NewGit(r.Debug)
c := git.NewCloneable(r.Debug)
c.GC = g

for _, repository := range r.Items {
repository.GiltDir = GiltDir
err := c.Clone(repository)
err := g.Clone(repository)
if err != nil {
return err
}
Expand Down

0 comments on commit cc7c149

Please sign in to comment.