aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cache/repo_cache_bug.go4
-rw-r--r--commands/add_test.go32
-rw-r--r--commands/env_testing.go48
-rw-r--r--commands/rm_test.go17
-rw-r--r--commands/user_create_test.go36
5 files changed, 133 insertions, 4 deletions
diff --git a/cache/repo_cache_bug.go b/cache/repo_cache_bug.go
index bce01926..f8bf5a2f 100644
--- a/cache/repo_cache_bug.go
+++ b/cache/repo_cache_bug.go
@@ -499,14 +499,10 @@ func (c *RepoCache) NewBugRaw(author *IdentityCache, unixTime int64, title strin
// RemoveBug removes a bug from the cache and repo given a bug id prefix
func (c *RepoCache) RemoveBug(prefix string) error {
- c.muBug.RLock()
-
b, err := c.ResolveBugPrefix(prefix)
if err != nil {
- c.muBug.RUnlock()
return err
}
- c.muBug.RUnlock()
c.muBug.Lock()
err = bug.RemoveBug(c.repo, b.Id())
diff --git a/commands/add_test.go b/commands/add_test.go
new file mode 100644
index 00000000..63eda06e
--- /dev/null
+++ b/commands/add_test.go
@@ -0,0 +1,32 @@
+package commands
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func newTestEnvUserAndBug(t *testing.T) (*testEnv, string, string) {
+ t.Helper()
+
+ testEnv, userID := newTestEnvAndUser(t)
+ opts := addOptions{
+ title: "this is a bug title",
+ message: "this is a bug message",
+ messageFile: "",
+ nonInteractive: true,
+ }
+
+ require.NoError(t, runAdd(testEnv.env, opts))
+ require.Regexp(t, "^[0-9A-Fa-f]{7} created\n$", testEnv.out)
+ bugID := strings.Split(testEnv.out.String(), " ")[0]
+ testEnv.out.Reset()
+
+ return testEnv, userID, bugID
+}
+
+func TestAdd(t *testing.T) {
+ _, _, user := newTestEnvUserAndBug(t)
+ require.Regexp(t, "^[0-9A-Fa-f]{7}$", user)
+}
diff --git a/commands/env_testing.go b/commands/env_testing.go
new file mode 100644
index 00000000..4de66a9d
--- /dev/null
+++ b/commands/env_testing.go
@@ -0,0 +1,48 @@
+package commands
+
+import (
+ "bytes"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/MichaelMure/git-bug/repository"
+)
+
+type testEnv struct {
+ env *Env
+ cwd string
+ out *bytes.Buffer
+}
+
+func newTestEnv(t *testing.T) *testEnv {
+ t.Helper()
+
+ cwd := t.TempDir()
+
+ repo, err := repository.InitGoGitRepo(cwd, gitBugNamespace)
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ require.NoError(t, repo.Close())
+ })
+
+ buf := new(bytes.Buffer)
+
+ backend, err := cache.NewRepoCache(repo)
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ backend.Close()
+ })
+
+ return &testEnv{
+ env: &Env{
+ repo: repo,
+ backend: backend,
+ out: out{Writer: buf},
+ err: out{Writer: buf},
+ },
+ cwd: cwd,
+ out: buf,
+ }
+}
diff --git a/commands/rm_test.go b/commands/rm_test.go
new file mode 100644
index 00000000..5d4e7cca
--- /dev/null
+++ b/commands/rm_test.go
@@ -0,0 +1,17 @@
+package commands
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestRm(t *testing.T) {
+ testEnv, _, bugID := newTestEnvUserAndBug(t)
+
+ exp := "bug " + bugID + " removed\n"
+
+ require.NoError(t, runRm(testEnv.env, []string{bugID}))
+ require.Equal(t, exp, testEnv.out.String())
+ testEnv.out.Reset()
+}
diff --git a/commands/user_create_test.go b/commands/user_create_test.go
new file mode 100644
index 00000000..223e7ec3
--- /dev/null
+++ b/commands/user_create_test.go
@@ -0,0 +1,36 @@
+package commands
+
+import (
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func newTestEnvAndUser(t *testing.T) (*testEnv, string) {
+ t.Helper()
+
+ testEnv := newTestEnv(t)
+
+ opts := createUserOptions{
+ name: "John Doe",
+ email: "jdoe@example.com",
+ avatarURL: "",
+ nonInteractive: true,
+ }
+
+ require.NoError(t, runUserCreate(testEnv.env, opts))
+
+ userID := strings.TrimSpace(testEnv.out.String())
+ testEnv.out.Reset()
+
+ return testEnv, userID
+}
+
+func TestUserCreateCommand(t *testing.T) {
+ testEnv, userID := newTestEnvAndUser(t)
+
+ require.FileExists(t, filepath.Join(testEnv.cwd, ".git", "refs", "identities", userID))
+ require.FileExists(t, filepath.Join(testEnv.cwd, ".git", "git-bug", "identity-cache"))
+}