Refactor local installation manager test by OS
- Local extensions on Windows are not symlinks but files whose contents is the path to the local extension directory - Local extensions elsewhere are symlinks
This commit is contained in:
parent
a6b8bec70d
commit
52b845bcad
3 changed files with 72 additions and 24 deletions
34
pkg/cmd/extension/manager_other_test.go
Normal file
34
pkg/cmd/extension/manager_other_test.go
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
package extension
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/cli/cli/v2/pkg/iostreams"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestManager_InstallLocal(t *testing.T) {
|
||||
dataDir := t.TempDir()
|
||||
updateDir := t.TempDir()
|
||||
|
||||
extDir := filepath.Join(t.TempDir(), "gh-local")
|
||||
err := os.MkdirAll(extDir, 0755)
|
||||
require.NoErrorf(t, err, "failed to create local extension")
|
||||
require.NoError(t, stubExtensionUpdate(filepath.Join(updateDir, "gh-local")))
|
||||
|
||||
ios, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(dataDir, updateDir, nil, nil, ios)
|
||||
|
||||
err = m.InstallLocal(extDir)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "", stdout.String())
|
||||
require.Equal(t, "", stderr.String())
|
||||
|
||||
fm, err := os.Lstat(filepath.Join(dataDir, "extensions", "gh-local"))
|
||||
require.NoErrorf(t, err, "data directory missing local extension symlink")
|
||||
isSymlink := fm.Mode() & os.ModeSymlink
|
||||
require.True(t, isSymlink != 0)
|
||||
require.NoDirExistsf(t, filepath.Join(updateDir, "gh-local"), "update directory should be removed")
|
||||
}
|
||||
|
|
@ -751,30 +751,6 @@ func TestManager_UpgradeExtension_GitExtension_Pinned(t *testing.T) {
|
|||
gcOne.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestManager_InstallLocal(t *testing.T) {
|
||||
dataDir := t.TempDir()
|
||||
updateDir := t.TempDir()
|
||||
|
||||
extDir := filepath.Join(t.TempDir(), "gh-local")
|
||||
err := os.MkdirAll(extDir, 0755)
|
||||
assert.NoErrorf(t, err, "failed to create local extension")
|
||||
assert.NoError(t, stubExtensionUpdate(filepath.Join(updateDir, "gh-local")))
|
||||
|
||||
ios, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(dataDir, updateDir, nil, nil, ios)
|
||||
|
||||
err = m.InstallLocal(extDir)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "", stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
|
||||
fm, err := os.Lstat(filepath.Join(dataDir, "extensions", "gh-local"))
|
||||
assert.NoErrorf(t, err, "data directory missing local extension symlink")
|
||||
isSymlink := fm.Mode() & os.ModeSymlink
|
||||
assert.True(t, isSymlink != 0)
|
||||
assert.NoDirExistsf(t, filepath.Join(updateDir, "gh-local"), "update directory should be removed")
|
||||
}
|
||||
|
||||
func TestManager_Install_git(t *testing.T) {
|
||||
dataDir := t.TempDir()
|
||||
updateDir := t.TempDir()
|
||||
|
|
|
|||
38
pkg/cmd/extension/manager_windows_test.go
Normal file
38
pkg/cmd/extension/manager_windows_test.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package extension
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/cli/cli/v2/pkg/iostreams"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestManager_InstallLocal_Windows(t *testing.T) {
|
||||
dataDir := t.TempDir()
|
||||
updateDir := t.TempDir()
|
||||
|
||||
extDir := filepath.Join(t.TempDir(), "gh-local")
|
||||
err := os.MkdirAll(extDir, 0755)
|
||||
require.NoErrorf(t, err, "failed to create local extension")
|
||||
require.NoError(t, stubExtensionUpdate(filepath.Join(updateDir, "gh-local")))
|
||||
|
||||
ios, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(dataDir, updateDir, nil, nil, ios)
|
||||
|
||||
err = m.InstallLocal(extDir)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "", stdout.String())
|
||||
require.Equal(t, "", stderr.String())
|
||||
|
||||
extDataFile := filepath.Join(dataDir, "extensions", "gh-local")
|
||||
fm, err := os.Stat(extDataFile)
|
||||
require.NoErrorf(t, err, "data directory missing Windows local extension file")
|
||||
isSymlink := fm.Mode() & os.ModeSymlink
|
||||
require.True(t, isSymlink == 0)
|
||||
extDataFilePath, err := readPathFromFile(extDataFile)
|
||||
require.NoErrorf(t, err, "failed to read Windows local extension path file")
|
||||
require.Equal(t, extDir, extDataFilePath)
|
||||
require.NoDirExistsf(t, filepath.Join(updateDir, "gh-local"), "update directory should be removed")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue