91 lines
2.2 KiB
Go
91 lines
2.2 KiB
Go
package core
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewAppRejectsNilReaders(t *testing.T) {
|
|
t.Run("nil stdin", func(t *testing.T) {
|
|
app, err := NewApp(nil, &bytes.Buffer{}, &bytes.Buffer{})
|
|
if err == nil {
|
|
t.Fatal("expected error for nil stdin")
|
|
}
|
|
if app != nil {
|
|
t.Fatal("expected nil app for nil stdin")
|
|
}
|
|
})
|
|
|
|
t.Run("nil stdout", func(t *testing.T) {
|
|
app, err := NewApp(new(bytes.Buffer), nil, &bytes.Buffer{})
|
|
if err == nil {
|
|
t.Fatal("expected error for nil stdout")
|
|
}
|
|
if app != nil {
|
|
t.Fatal("expected nil app for nil stdout")
|
|
}
|
|
})
|
|
|
|
t.Run("nil stderr", func(t *testing.T) {
|
|
app, err := NewApp(new(bytes.Buffer), &bytes.Buffer{}, nil)
|
|
if err == nil {
|
|
t.Fatal("expected error for nil stderr")
|
|
}
|
|
if app != nil {
|
|
t.Fatal("expected nil app for nil stderr")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDeriveDestination(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
uri string
|
|
want string
|
|
}{
|
|
{name: "github short", uri: "technicalpickles/pickled-vim", want: "pickled-vim"},
|
|
{name: "https", uri: "https://github.com/technicalpickles/pickled-vim.git", want: "pickled-vim"},
|
|
{name: "git ssh", uri: "git@github.com:technicalpickles/pickled-vim.git", want: "pickled-vim"},
|
|
{name: "file", uri: "file:///tmp/dotfiles.git", want: "dotfiles"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := deriveDestination(tt.uri); got != tt.want {
|
|
t.Fatalf("deriveDestination(%q) = %q, want %q", tt.uri, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewAppInitializesApp(t *testing.T) {
|
|
stdin := new(bytes.Buffer)
|
|
stdout := &bytes.Buffer{}
|
|
stderr := &bytes.Buffer{}
|
|
|
|
app, err := NewApp(stdin, stdout, stderr)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if app == nil {
|
|
t.Fatal("expected app instance")
|
|
}
|
|
|
|
if app.Stdin != stdin {
|
|
t.Fatal("expected stdin reader to be assigned")
|
|
}
|
|
if app.Stdout != stdout {
|
|
t.Fatal("expected stdout writer to be assigned")
|
|
}
|
|
if app.Stderr != stderr {
|
|
t.Fatal("expected stderr writer to be assigned")
|
|
}
|
|
if app.HomeDir == "" {
|
|
t.Fatal("expected home directory to be set")
|
|
}
|
|
if app.ReposDir != filepath.Join(app.HomeDir, ".homesick", "repos") {
|
|
t.Fatalf("unexpected repos dir: %q", app.ReposDir)
|
|
}
|
|
}
|