185 lines
4 KiB
Go
185 lines
4 KiB
Go
package extension
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUpdateAvailable_IsLocal(t *testing.T) {
|
|
e := &Extension{
|
|
kind: LocalKind,
|
|
}
|
|
|
|
assert.False(t, e.UpdateAvailable())
|
|
}
|
|
|
|
func TestUpdateAvailable_NoCurrentVersion(t *testing.T) {
|
|
e := &Extension{
|
|
kind: LocalKind,
|
|
}
|
|
|
|
assert.False(t, e.UpdateAvailable())
|
|
}
|
|
|
|
func TestUpdateAvailable_NoLatestVersion(t *testing.T) {
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
currentVersion: "1.0.0",
|
|
}
|
|
|
|
assert.False(t, e.UpdateAvailable())
|
|
}
|
|
|
|
func TestUpdateAvailable_CurrentVersionIsLatestVersion(t *testing.T) {
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
currentVersion: "1.0.0",
|
|
latestVersion: "1.0.0",
|
|
}
|
|
|
|
assert.False(t, e.UpdateAvailable())
|
|
}
|
|
|
|
func TestUpdateAvailable(t *testing.T) {
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
currentVersion: "1.0.0",
|
|
latestVersion: "1.1.0",
|
|
}
|
|
|
|
assert.True(t, e.UpdateAvailable())
|
|
}
|
|
|
|
func TestOwnerLocalExtension(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extPath := filepath.Join(tempDir, "extensions", "gh-local", "gh-local")
|
|
assert.NoError(t, stubLocalExtension(tempDir, extPath))
|
|
e := &Extension{
|
|
kind: LocalKind,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.Equal(t, "", e.Owner())
|
|
}
|
|
|
|
func TestOwnerBinaryExtension(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extName := "gh-bin-ext"
|
|
extDir := filepath.Join(tempDir, "extensions", extName)
|
|
extPath := filepath.Join(extDir, extName)
|
|
bm := binManifest{
|
|
Owner: "owner",
|
|
Name: "gh-bin-ext",
|
|
Host: "example.com",
|
|
Tag: "v1.0.1",
|
|
}
|
|
assert.NoError(t, stubBinaryExtension(extDir, bm))
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.Equal(t, "owner", e.Owner())
|
|
}
|
|
|
|
func TestOwnerGitExtension(t *testing.T) {
|
|
gc := &mockGitClient{}
|
|
gc.On("Config", "remote.origin.url").Return("git@github.com:owner/repo.git", nil).Once()
|
|
e := &Extension{
|
|
kind: GitKind,
|
|
gitClient: gc,
|
|
}
|
|
|
|
assert.Equal(t, "owner", e.Owner())
|
|
}
|
|
|
|
func TestOwnerCached(t *testing.T) {
|
|
e := &Extension{
|
|
owner: "cli",
|
|
}
|
|
|
|
assert.Equal(t, "cli", e.Owner())
|
|
}
|
|
|
|
func TestIsPinnedBinaryExtensionUnpinned(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extName := "gh-bin-ext"
|
|
extDir := filepath.Join(tempDir, "extensions", extName)
|
|
extPath := filepath.Join(extDir, extName)
|
|
bm := binManifest{
|
|
Name: "gh-bin-ext",
|
|
}
|
|
assert.NoError(t, stubBinaryExtension(extDir, bm))
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.False(t, e.IsPinned())
|
|
}
|
|
|
|
func TestIsPinnedBinaryExtensionPinned(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extName := "gh-bin-ext"
|
|
extDir := filepath.Join(tempDir, "extensions", extName)
|
|
extPath := filepath.Join(extDir, extName)
|
|
bm := binManifest{
|
|
Name: "gh-bin-ext",
|
|
IsPinned: true,
|
|
}
|
|
assert.NoError(t, stubBinaryExtension(extDir, bm))
|
|
e := &Extension{
|
|
kind: BinaryKind,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.True(t, e.IsPinned())
|
|
}
|
|
|
|
func TestIsPinnedGitExtensionUnpinned(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extPath := filepath.Join(tempDir, "extensions", "gh-local", "gh-local")
|
|
assert.NoError(t, stubExtension(extPath))
|
|
|
|
gc := &mockGitClient{}
|
|
gc.On("CommandOutput", []string{"rev-parse", "HEAD"}).Return("abcd1234", nil)
|
|
e := &Extension{
|
|
kind: GitKind,
|
|
gitClient: gc,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.False(t, e.IsPinned())
|
|
gc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestIsPinnedGitExtensionPinned(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extPath := filepath.Join(tempDir, "extensions", "gh-local", "gh-local")
|
|
assert.NoError(t, stubPinnedExtension(extPath, "abcd1234"))
|
|
|
|
gc := &mockGitClient{}
|
|
gc.On("CommandOutput", []string{"rev-parse", "HEAD"}).Return("abcd1234", nil)
|
|
e := &Extension{
|
|
kind: GitKind,
|
|
gitClient: gc,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.True(t, e.IsPinned())
|
|
gc.AssertExpectations(t)
|
|
}
|
|
|
|
func TestIsPinnedLocalExtension(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
extPath := filepath.Join(tempDir, "extensions", "gh-local", "gh-local")
|
|
assert.NoError(t, stubLocalExtension(tempDir, extPath))
|
|
e := &Extension{
|
|
kind: LocalKind,
|
|
path: extPath,
|
|
}
|
|
|
|
assert.False(t, e.IsPinned())
|
|
}
|