mirror of
https://github.com/luxfi/cli.git
synced 2026-10-30 17:01:20 +00:00
114 lines
2.9 KiB
Go
114 lines
2.9 KiB
Go
// Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package binutils
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/luxfi/cli/internal/testutils"
|
|
"github.com/luxfi/constants"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestInstallZipArchive(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
archivePath, checkFunc := testutils.CreateTestArchivePath(t, require)
|
|
|
|
tmpDir := os.TempDir()
|
|
zip := filepath.Join(tmpDir, "testFile.zip")
|
|
defer func() { _ = os.Remove(zip) }()
|
|
|
|
testutils.CreateZip(require, archivePath, zip)
|
|
|
|
// can't use t.TempDir here as that returns the same dir
|
|
installDir, err := os.MkdirTemp(tmpDir, "zip-test-dir")
|
|
require.NoError(err)
|
|
defer func() { _ = os.RemoveAll(installDir) }()
|
|
|
|
zipBytes, err := os.ReadFile(zip) //nolint:gosec // G304: Test file read
|
|
require.NoError(err)
|
|
|
|
err = installZipArchive(zipBytes, installDir)
|
|
require.NoError(err)
|
|
|
|
checkFunc(archivePath)
|
|
}
|
|
|
|
func TestInstallGzipArchive(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
archivePath, checkFunc := testutils.CreateTestArchivePath(t, require)
|
|
|
|
tmpDir := os.TempDir()
|
|
tgz := filepath.Join(tmpDir, "testFile.tar.gz")
|
|
defer func() { _ = os.Remove(tgz) }()
|
|
|
|
testutils.CreateTarGz(require, archivePath, tgz, true)
|
|
|
|
// can't use t.TempDir here as that returns the same dir
|
|
installDir, err := os.MkdirTemp(tmpDir, "gzip-test-dir")
|
|
require.NoError(err)
|
|
defer func() { _ = os.RemoveAll(installDir) }()
|
|
|
|
tgzBytes, err := os.ReadFile(tgz) //nolint:gosec // G304: Test file read
|
|
require.NoError(err)
|
|
|
|
err = installTarGzArchive(tgzBytes, installDir)
|
|
require.NoError(err)
|
|
|
|
checkFunc(archivePath)
|
|
}
|
|
|
|
func TestExistsWithVersion(t *testing.T) {
|
|
binPrefix := "binary-"
|
|
binVersion := "1.4.3"
|
|
|
|
require := require.New(t)
|
|
|
|
installDir, err := os.MkdirTemp(os.TempDir(), "binutils-tests")
|
|
require.NoError(err)
|
|
defer func() { _ = os.RemoveAll(installDir) }()
|
|
|
|
checker := NewBinaryChecker()
|
|
|
|
exists, err := checker.ExistsWithVersion(installDir, binPrefix, binVersion)
|
|
require.NoError(err)
|
|
require.False(exists)
|
|
|
|
err = os.Mkdir(filepath.Join(installDir, binPrefix+binVersion), constants.DefaultPerms755)
|
|
require.NoError(err)
|
|
|
|
exists, err = checker.ExistsWithVersion(installDir, binPrefix, binVersion)
|
|
require.NoError(err)
|
|
require.True(exists)
|
|
}
|
|
|
|
func TestExistsWithVersion_Longer(t *testing.T) {
|
|
binPrefix := "binary-"
|
|
desiredVersion := "1.4.3"
|
|
actualVersion := "1.4.30"
|
|
|
|
require := require.New(t)
|
|
|
|
installDir, err := os.MkdirTemp(os.TempDir(), "binutils-tests")
|
|
require.NoError(err)
|
|
defer func() { _ = os.RemoveAll(installDir) }()
|
|
|
|
checker := NewBinaryChecker()
|
|
|
|
exists, err := checker.ExistsWithVersion(installDir, binPrefix, desiredVersion)
|
|
require.NoError(err)
|
|
require.False(exists)
|
|
|
|
err = os.Mkdir(filepath.Join(installDir, binPrefix+actualVersion), constants.DefaultPerms755)
|
|
require.NoError(err)
|
|
|
|
exists, err = checker.ExistsWithVersion(installDir, binPrefix, desiredVersion)
|
|
require.NoError(err)
|
|
require.False(exists)
|
|
}
|