From a2ade4a5cc2b8c2e893e807e79bf528efec292c5 Mon Sep 17 00:00:00 2001 From: Daniel Oliveira Date: Thu, 14 May 2015 11:52:45 -0600 Subject: [PATCH 1/3] New set of Unit Tests for Build, based on 0.4.0 --- datastore/builtin/build_test.go | 207 ++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 datastore/builtin/build_test.go diff --git a/datastore/builtin/build_test.go b/datastore/builtin/build_test.go new file mode 100644 index 000000000..82c56e7d6 --- /dev/null +++ b/datastore/builtin/build_test.go @@ -0,0 +1,207 @@ +package builtin + +import ( + "github.com/drone/drone/common" + "github.com/franela/goblin" + "testing" +) + +func TestBuildstore(t *testing.T) { + db := mustConnectTest() + rs := NewRepostore(db) + bs := NewBuildstore(db) + cs := NewCommitstore(db) + defer db.Close() + + g := goblin.Goblin(t) + g.Describe("Buildstore", func() { + + // before each test we purge the package table data from the database. + g.BeforeEach(func() { + db.Exec("DELETE FROM blobs") + db.Exec("DELETE FROM builds") + db.Exec("DELETE FROM commits") + db.Exec("DELETE FROM repos") + db.Exec("DELETE FROM stars") + db.Exec("DELETE FROM tasks") + db.Exec("DELETE FROM tokens") + db.Exec("DELETE FROM users") + }) + + g.It("NewBuildstore()", func() { + repo := common.Repo{ + UserID: 1, + Owner: "oliveiradan", + Name: "drone-test1", + } + //Add repo + _err1 := rs.AddRepo(&repo) + _err2 := rs.SetRepo(&repo) + getrepo, _err3 := rs.Repo(repo.ID) + g.Assert(_err1 == nil).IsTrue() + g.Assert(_err2 == nil).IsTrue() + g.Assert(_err3 == nil).IsTrue() + g.Assert(repo.ID).Equal(getrepo.ID) + + //Add build + build := common.Build{ + ID: 1, + CommitID: 1, + State: "success", + } + _err1 = bs.SetBuild(&build) + g.Assert(_err1 == nil).IsTrue() + }) + + g.It("Build()", func() { + repo := common.Repo{ + UserID: 1, + Owner: "oliveiradan", + Name: "drone-test1", + } + //Add repo + _err1 := rs.AddRepo(&repo) + _err2 := rs.SetRepo(&repo) + getrepo, _err3 := rs.Repo(repo.ID) + g.Assert(_err1 == nil).IsTrue() + g.Assert(_err2 == nil).IsTrue() + g.Assert(_err3 == nil).IsTrue() + g.Assert(repo.ID).Equal(getrepo.ID) + build_list := []*common.Build{ + &common.Build{ + //ID: 1, + CommitID: 1, + State: "success", + ExitCode: 0, + Sequence: 1, + }, + &common.Build{ + //ID: 2, + CommitID: 3, + State: "error", + ExitCode: 1, + Sequence: 2, + }, + } + //In order for buid to be populated, + //The AddCommit command will insert builds + //if the Commit.Builds array is populated + //Add Commit. + commit1 := common.Commit{ + RepoID: 1, + State: common.StateSuccess, + Ref: "refs/heads/master", + Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", + Builds: build_list, + } + // + _err1 = cs.AddCommit(&commit1) + g.Assert(_err1 == nil).IsTrue() + _build, _err := bs.Build(1) + g.Assert(_err == nil).IsTrue() + g.Assert(_build.ID == 1).IsTrue() + }) + + g.It("BuildSeq()", func() { + repo := common.Repo{ + UserID: 1, + Owner: "oliveiradan", + Name: "drone-test1", + } + //Add repo + _err1 := rs.AddRepo(&repo) + _err2 := rs.SetRepo(&repo) + getrepo, _err3 := rs.Repo(repo.ID) + g.Assert(_err1 == nil).IsTrue() + g.Assert(_err2 == nil).IsTrue() + g.Assert(_err3 == nil).IsTrue() + g.Assert(repo.ID).Equal(getrepo.ID) + build_list := []*common.Build{ + &common.Build{ + CommitID: 1, + State: "success", + ExitCode: 0, + Sequence: 1, + }, + &common.Build{ + CommitID: 3, + State: "error", + ExitCode: 1, + Sequence: 2, + }, + } + //In order for buid to be populated, + //The AddCommit command will insert builds + //if the Commit.Builds array is populated + //Add Commit. + commit1 := common.Commit{ + RepoID: 1, + State: common.StateSuccess, + Ref: "refs/heads/master", + Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", + Builds: build_list, + } + // + _err1 = cs.AddCommit(&commit1) + g.Assert(_err1 == nil).IsTrue() + _build, _err := bs.BuildSeq(&commit1, 2) + g.Assert(_err == nil).IsTrue() + g.Assert(_build.Sequence == 2).IsTrue() + }) + + g.It("BuildList()", func() { + repo := common.Repo{ + UserID: 1, + Owner: "oliveiradan", + Name: "drone-test1", + } + //Add repo + _err1 := rs.AddRepo(&repo) + _err2 := rs.SetRepo(&repo) + getrepo, _err3 := rs.Repo(repo.ID) + g.Assert(_err1 == nil).IsTrue() + g.Assert(_err2 == nil).IsTrue() + g.Assert(_err3 == nil).IsTrue() + g.Assert(repo.ID).Equal(getrepo.ID) + build_list := []*common.Build{ + &common.Build{ + CommitID: 1, + State: "success", + ExitCode: 0, + Sequence: 1, + }, + &common.Build{ + CommitID: 3, + State: "error", + ExitCode: 1, + Sequence: 2, + }, + &common.Build{ + CommitID: 5, + State: "pending", + ExitCode: 0, + Sequence: 3, + }, + } + //In order for buid to be populated, + //The AddCommit command will insert builds + //if the Commit.Builds array is populated + //Add Commit. + commit1 := common.Commit{ + RepoID: 1, + State: common.StateSuccess, + Ref: "refs/heads/master", + Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", + Builds: build_list, + } + // + _err1 = cs.AddCommit(&commit1) + g.Assert(_err1 == nil).IsTrue() + _buildList, _err := bs.BuildList(&commit1) + g.Assert(_err == nil).IsTrue() + g.Assert(len(_buildList)).Equal(3) + g.Assert(build_list[0].Sequence).Equal(1) + g.Assert(build_list[0].State).Equal(common.StateSuccess) + }) + }) +} From db02db06f13c7f0f761cf1af5c8b437f32109644 Mon Sep 17 00:00:00 2001 From: Daniel Oliveira Date: Thu, 14 May 2015 12:24:32 -0600 Subject: [PATCH 2/3] New set of Unit Tests for Build, based on 0.4.0 --- datastore/builtin/build_test.go | 93 ++++++--------------------------- 1 file changed, 17 insertions(+), 76 deletions(-) diff --git a/datastore/builtin/build_test.go b/datastore/builtin/build_test.go index 82c56e7d6..9db619e52 100644 --- a/datastore/builtin/build_test.go +++ b/datastore/builtin/build_test.go @@ -8,7 +8,6 @@ import ( func TestBuildstore(t *testing.T) { db := mustConnectTest() - rs := NewRepostore(db) bs := NewBuildstore(db) cs := NewCommitstore(db) defer db.Close() @@ -18,55 +17,22 @@ func TestBuildstore(t *testing.T) { // before each test we purge the package table data from the database. g.BeforeEach(func() { - db.Exec("DELETE FROM blobs") db.Exec("DELETE FROM builds") db.Exec("DELETE FROM commits") - db.Exec("DELETE FROM repos") - db.Exec("DELETE FROM stars") - db.Exec("DELETE FROM tasks") - db.Exec("DELETE FROM tokens") - db.Exec("DELETE FROM users") }) g.It("NewBuildstore()", func() { - repo := common.Repo{ - UserID: 1, - Owner: "oliveiradan", - Name: "drone-test1", - } - //Add repo - _err1 := rs.AddRepo(&repo) - _err2 := rs.SetRepo(&repo) - getrepo, _err3 := rs.Repo(repo.ID) - g.Assert(_err1 == nil).IsTrue() - g.Assert(_err2 == nil).IsTrue() - g.Assert(_err3 == nil).IsTrue() - g.Assert(repo.ID).Equal(getrepo.ID) - //Add build build := common.Build{ ID: 1, CommitID: 1, State: "success", } - _err1 = bs.SetBuild(&build) - g.Assert(_err1 == nil).IsTrue() + err1 := bs.SetBuild(&build) + g.Assert(err1 == nil).IsTrue() }) g.It("Build()", func() { - repo := common.Repo{ - UserID: 1, - Owner: "oliveiradan", - Name: "drone-test1", - } - //Add repo - _err1 := rs.AddRepo(&repo) - _err2 := rs.SetRepo(&repo) - getrepo, _err3 := rs.Repo(repo.ID) - g.Assert(_err1 == nil).IsTrue() - g.Assert(_err2 == nil).IsTrue() - g.Assert(_err3 == nil).IsTrue() - g.Assert(repo.ID).Equal(getrepo.ID) build_list := []*common.Build{ &common.Build{ //ID: 1, @@ -95,27 +61,14 @@ func TestBuildstore(t *testing.T) { Builds: build_list, } // - _err1 = cs.AddCommit(&commit1) - g.Assert(_err1 == nil).IsTrue() - _build, _err := bs.Build(1) - g.Assert(_err == nil).IsTrue() - g.Assert(_build.ID == 1).IsTrue() + err1 := cs.AddCommit(&commit1) + g.Assert(err1 == nil).IsTrue() + build, err2 := bs.Build(1) + g.Assert(err2 == nil).IsTrue() + g.Assert(build.ID == 1).IsTrue() }) g.It("BuildSeq()", func() { - repo := common.Repo{ - UserID: 1, - Owner: "oliveiradan", - Name: "drone-test1", - } - //Add repo - _err1 := rs.AddRepo(&repo) - _err2 := rs.SetRepo(&repo) - getrepo, _err3 := rs.Repo(repo.ID) - g.Assert(_err1 == nil).IsTrue() - g.Assert(_err2 == nil).IsTrue() - g.Assert(_err3 == nil).IsTrue() - g.Assert(repo.ID).Equal(getrepo.ID) build_list := []*common.Build{ &common.Build{ CommitID: 1, @@ -142,27 +95,15 @@ func TestBuildstore(t *testing.T) { Builds: build_list, } // - _err1 = cs.AddCommit(&commit1) - g.Assert(_err1 == nil).IsTrue() - _build, _err := bs.BuildSeq(&commit1, 2) - g.Assert(_err == nil).IsTrue() - g.Assert(_build.Sequence == 2).IsTrue() + err1 := cs.AddCommit(&commit1) + g.Assert(err1 == nil).IsTrue() + build, err2 := bs.BuildSeq(&commit1, 2) + g.Assert(err2 == nil).IsTrue() + g.Assert(build.Sequence == 2).IsTrue() }) g.It("BuildList()", func() { - repo := common.Repo{ - UserID: 1, - Owner: "oliveiradan", - Name: "drone-test1", - } //Add repo - _err1 := rs.AddRepo(&repo) - _err2 := rs.SetRepo(&repo) - getrepo, _err3 := rs.Repo(repo.ID) - g.Assert(_err1 == nil).IsTrue() - g.Assert(_err2 == nil).IsTrue() - g.Assert(_err3 == nil).IsTrue() - g.Assert(repo.ID).Equal(getrepo.ID) build_list := []*common.Build{ &common.Build{ CommitID: 1, @@ -195,11 +136,11 @@ func TestBuildstore(t *testing.T) { Builds: build_list, } // - _err1 = cs.AddCommit(&commit1) - g.Assert(_err1 == nil).IsTrue() - _buildList, _err := bs.BuildList(&commit1) - g.Assert(_err == nil).IsTrue() - g.Assert(len(_buildList)).Equal(3) + err1 := cs.AddCommit(&commit1) + g.Assert(err1 == nil).IsTrue() + buildList, err2 := bs.BuildList(&commit1) + g.Assert(err2 == nil).IsTrue() + g.Assert(len(buildList)).Equal(3) g.Assert(build_list[0].Sequence).Equal(1) g.Assert(build_list[0].State).Equal(common.StateSuccess) }) From a698810847de5bf144013ed5f5d8f66febcbba31 Mon Sep 17 00:00:00 2001 From: Daniel Oliveira Date: Thu, 14 May 2015 23:31:18 -0600 Subject: [PATCH 3/3] New set of Unit Tests for Build, based on 0.4.0 --- datastore/builtin/build_test.go | 157 ++++++++++++++++++++------------ 1 file changed, 97 insertions(+), 60 deletions(-) diff --git a/datastore/builtin/build_test.go b/datastore/builtin/build_test.go index 9db619e52..9aec6cef3 100644 --- a/datastore/builtin/build_test.go +++ b/datastore/builtin/build_test.go @@ -1,6 +1,7 @@ package builtin import ( + //"fmt" "github.com/drone/drone/common" "github.com/franela/goblin" "testing" @@ -21,55 +22,8 @@ func TestBuildstore(t *testing.T) { db.Exec("DELETE FROM commits") }) - g.It("NewBuildstore()", func() { - //Add build - build := common.Build{ - ID: 1, - CommitID: 1, - State: "success", - } - err1 := bs.SetBuild(&build) - g.Assert(err1 == nil).IsTrue() - }) - - g.It("Build()", func() { - build_list := []*common.Build{ - &common.Build{ - //ID: 1, - CommitID: 1, - State: "success", - ExitCode: 0, - Sequence: 1, - }, - &common.Build{ - //ID: 2, - CommitID: 3, - State: "error", - ExitCode: 1, - Sequence: 2, - }, - } - //In order for buid to be populated, - //The AddCommit command will insert builds - //if the Commit.Builds array is populated - //Add Commit. - commit1 := common.Commit{ - RepoID: 1, - State: common.StateSuccess, - Ref: "refs/heads/master", - Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", - Builds: build_list, - } - // - err1 := cs.AddCommit(&commit1) - g.Assert(err1 == nil).IsTrue() - build, err2 := bs.Build(1) - g.Assert(err2 == nil).IsTrue() - g.Assert(build.ID == 1).IsTrue() - }) - - g.It("BuildSeq()", func() { - build_list := []*common.Build{ + g.It("Should update an existing build in the datastore", func() { + buildList := []*common.Build{ &common.Build{ CommitID: 1, State: "success", @@ -92,19 +46,102 @@ func TestBuildstore(t *testing.T) { State: common.StateSuccess, Ref: "refs/heads/master", Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", - Builds: build_list, + Builds: buildList, } - // + //Add commit, build, retrieve 2nd, update it and recheck it. err1 := cs.AddCommit(&commit1) g.Assert(err1 == nil).IsTrue() - build, err2 := bs.BuildSeq(&commit1, 2) + g.Assert(commit1.ID != 0).IsTrue() + g.Assert(commit1.Sequence).Equal(1) + // + build, err2 := bs.Build(commit1.Builds[1].ID) g.Assert(err2 == nil).IsTrue() - g.Assert(build.Sequence == 2).IsTrue() + g.Assert(build.ID).Equal(commit1.Builds[1].ID) + build.State = common.StatePending + err1 = bs.SetBuild(build) + g.Assert(err1 == nil).IsTrue() + build, err2 = bs.Build(commit1.Builds[1].ID) + g.Assert(build.ID).Equal(commit1.Builds[1].ID) + g.Assert(build.State).Equal(common.StatePending) }) - g.It("BuildList()", func() { + g.It("Should return a build by ID", func() { + buildList := []*common.Build{ + &common.Build{ + CommitID: 1, + State: "success", + ExitCode: 0, + Sequence: 1, + }, + &common.Build{ + CommitID: 3, + State: "error", + ExitCode: 1, + Sequence: 2, + }, + } + //In order for buid to be populated, + //The AddCommit command will insert builds + //if the Commit.Builds array is populated + //Add Commit. + commit1 := common.Commit{ + RepoID: 1, + State: common.StateSuccess, + Ref: "refs/heads/master", + Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", + Builds: buildList, + } + //Add commit, build, retrieve 2nd build ID. + err1 := cs.AddCommit(&commit1) + g.Assert(err1 == nil).IsTrue() + g.Assert(commit1.ID != 0).IsTrue() + g.Assert(commit1.Sequence).Equal(1) + // + build, err2 := bs.Build(commit1.Builds[1].ID) + g.Assert(err2 == nil).IsTrue() + g.Assert(build.ID).Equal(commit1.Builds[1].ID) + }) + + g.It("Should return a build by Sequence", func() { + buildList := []*common.Build{ + &common.Build{ + CommitID: 1, + State: "success", + ExitCode: 0, + Sequence: 1, + }, + &common.Build{ + CommitID: 3, + State: "error", + ExitCode: 1, + Sequence: 2, + }, + } + //In order for buid to be populated, + //The AddCommit command will insert builds + //if the Commit.Builds array is populated + //Add Commit. + commit1 := common.Commit{ + RepoID: 1, + State: common.StateSuccess, + Ref: "refs/heads/master", + Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", + Builds: buildList, + } + //Add commit, build, retrieve 2nd build ID. + err1 := cs.AddCommit(&commit1) + g.Assert(err1 == nil).IsTrue() + g.Assert(commit1.ID != 0).IsTrue() + g.Assert(commit1.Sequence).Equal(1) + // + build, err2 := bs.BuildSeq(&commit1, commit1.Builds[1].Sequence) + g.Assert(err2 == nil).IsTrue() + g.Assert(build.Sequence).Equal(commit1.Builds[1].Sequence) + }) + + g.It("Should return a list of all commit builds", func() { //Add repo - build_list := []*common.Build{ + buildList := []*common.Build{ &common.Build{ CommitID: 1, State: "success", @@ -133,16 +170,16 @@ func TestBuildstore(t *testing.T) { State: common.StateSuccess, Ref: "refs/heads/master", Sha: "14710626f22791619d3b7e9ccf58b10374e5b76d", - Builds: build_list, + Builds: buildList, } // err1 := cs.AddCommit(&commit1) g.Assert(err1 == nil).IsTrue() - buildList, err2 := bs.BuildList(&commit1) + bldList, err2 := bs.BuildList(&commit1) g.Assert(err2 == nil).IsTrue() - g.Assert(len(buildList)).Equal(3) - g.Assert(build_list[0].Sequence).Equal(1) - g.Assert(build_list[0].State).Equal(common.StateSuccess) + g.Assert(len(bldList)).Equal(3) + g.Assert(bldList[0].Sequence).Equal(1) + g.Assert(bldList[0].State).Equal(common.StateSuccess) }) }) }