Improve code readability #1
+ Improved tests readability of common_utils_test.go + Fixed minor typos
This commit is contained in:
parent
8cd3ed2127
commit
68636d5e64
8 changed files with 167 additions and 123 deletions
|
|
@ -2,8 +2,8 @@ package commands
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"gitlab.com/revalus/grm/internal/config"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/go-git/go-billy/v5"
|
||||
"github.com/go-git/go-billy/v5/osfs"
|
||||
|
|
@ -13,12 +13,9 @@ import (
|
|||
"github.com/go-git/go-git/v5/storage/filesystem"
|
||||
)
|
||||
|
||||
type TestSetup struct {
|
||||
rootFS billy.Filesystem
|
||||
baseRepository struct {
|
||||
fileSystem billy.Filesystem
|
||||
repo *git.Repository
|
||||
}
|
||||
type TestSetupPaths struct {
|
||||
baseTestDirectory string
|
||||
baseTestRepository string
|
||||
}
|
||||
|
||||
func checkErrorDuringPreparation(err error) {
|
||||
|
|
@ -28,111 +25,94 @@ func checkErrorDuringPreparation(err error) {
|
|||
}
|
||||
}
|
||||
|
||||
func createTmpDir() string {
|
||||
|
||||
baseForTMPDir := fmt.Sprintf("%v/grmTest", os.TempDir())
|
||||
if _, ok := os.Stat(baseForTMPDir); ok != nil {
|
||||
err := os.Mkdir(baseForTMPDir, 0777)
|
||||
func createRepositoryForTest() string {
|
||||
systemTMPDirectoryWithTestPath := fmt.Sprintf("%v/grmTest", os.TempDir())
|
||||
if _, ok := os.Stat(systemTMPDirectoryWithTestPath); ok != nil {
|
||||
err := os.Mkdir(systemTMPDirectoryWithTestPath, 0777)
|
||||
checkErrorDuringPreparation(err)
|
||||
}
|
||||
|
||||
tempDir, err := os.MkdirTemp(baseForTMPDir, "*")
|
||||
temporaryDirPath, err := os.MkdirTemp(systemTMPDirectoryWithTestPath, "*")
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
return tempDir
|
||||
return temporaryDirPath
|
||||
}
|
||||
|
||||
func getTestSetup() TestSetup {
|
||||
|
||||
tmpDir := createTmpDir()
|
||||
|
||||
baseFileSystem := osfs.New(tmpDir)
|
||||
|
||||
initRepositoryFileSystem, err := baseFileSystem.Chroot("worktree")
|
||||
// prepareRepositoryDirectories - prepare directories for file (rootRepositoryDirectory) and git metadata (gitMetadataDirectory)
|
||||
func prepareRepositoryDirectories(dirName string) (billy.Filesystem, billy.Filesystem) {
|
||||
rootRepositoryDirectory := osfs.New(dirName)
|
||||
gitMetadataDirectory, err := rootRepositoryDirectory.Chroot(".git")
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
directoryForGitMetadata, err := initRepositoryFileSystem.Chroot(".git")
|
||||
return rootRepositoryDirectory, gitMetadataDirectory
|
||||
}
|
||||
|
||||
func prepareBasicRepository() TestSetupPaths {
|
||||
|
||||
temporaryDirPath := createRepositoryForTest()
|
||||
|
||||
// Create an interface of abstraction over filesystem to provide tests over multiple systems
|
||||
// baseTestsDirectory - provides to main directory where new directories might be created
|
||||
baseTestsDirectory := osfs.New(temporaryDirPath)
|
||||
rootRepositoryDirectory, gitMetadataDirectory := prepareRepositoryDirectories(baseTestsDirectory.Root() + "/base_repository")
|
||||
|
||||
repository, err := git.Init(filesystem.NewStorage(
|
||||
gitMetadataDirectory,
|
||||
cache.NewObjectLRUDefault()),
|
||||
rootRepositoryDirectory,
|
||||
)
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
repository, err := git.Init(filesystem.NewStorage(directoryForGitMetadata, cache.NewObjectLRUDefault()), initRepositoryFileSystem)
|
||||
testFile, err := rootRepositoryDirectory.Create("TestFile.txt")
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
fileForFirstCommit, err := initRepositoryFileSystem.Create("TestFile.txt")
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
_, err = fileForFirstCommit.Write([]byte("foo-conent"))
|
||||
_, err = testFile.Write([]byte("foo-conent"))
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
repositoryWorkTree, err := repository.Worktree()
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
repositoryWorkTree.Add(fileForFirstCommit.Name())
|
||||
_, err = repositoryWorkTree.Commit("First commit", &git.CommitOptions{})
|
||||
|
||||
_, err = repositoryWorkTree.Add(testFile.Name())
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
return TestSetup{
|
||||
baseRepository: struct {
|
||||
fileSystem billy.Filesystem
|
||||
repo *git.Repository
|
||||
}{
|
||||
fileSystem: initRepositoryFileSystem,
|
||||
repo: repository,
|
||||
},
|
||||
rootFS: baseFileSystem,
|
||||
_, err = repositoryWorkTree.Commit("First commit", &git.CommitOptions{})
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
return TestSetupPaths{
|
||||
baseTestDirectory: baseTestsDirectory.Root(),
|
||||
baseTestRepository: rootRepositoryDirectory.Root(),
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func makeCommit(wk *git.Worktree, commitMessage string) {
|
||||
|
||||
_, err := wk.Commit(commitMessage, &git.CommitOptions{})
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
}
|
||||
|
||||
func getFSForLocalRepo(dirName string, baseFileSystem billy.Filesystem) (billy.Filesystem, *filesystem.Storage) {
|
||||
fsForLocalRepo, err := baseFileSystem.Chroot(dirName)
|
||||
checkErrorDuringPreparation(err)
|
||||
fsForMetadata, err := fsForLocalRepo.Chroot(".git")
|
||||
checkErrorDuringPreparation(err)
|
||||
storageForTestRepo := filesystem.NewStorage(fsForMetadata, cache.NewObjectLRUDefault())
|
||||
return fsForLocalRepo, storageForTestRepo
|
||||
}
|
||||
// createAndCloneRepository - create sub-repository with cloned base repository required to verify sync command
|
||||
func createAndCloneRepository(repositoryName string, paths TestSetupPaths) *git.Repository {
|
||||
|
||||
func getBaseForTestingSyncCommand() (StatusChecker, *git.Repository, config.RepositoryConfig, TestSetup) {
|
||||
tmpDirWithInitialRepository := getTestSetup()
|
||||
dirNameForLocalRepository := "testRepo"
|
||||
fsForLocalRepo, storageForTestRepo := getFSForLocalRepo(dirNameForLocalRepository, tmpDirWithInitialRepository.rootFS)
|
||||
baseGitRepository, gitMetadataDirectory := prepareRepositoryDirectories(
|
||||
path.Join(paths.baseTestDirectory, repositoryName),
|
||||
)
|
||||
|
||||
fakeLocalRepository, err := git.Clone(storageForTestRepo, fsForLocalRepo, &git.CloneOptions{
|
||||
URL: tmpDirWithInitialRepository.baseRepository.fileSystem.Root(),
|
||||
storageForSubRepository := filesystem.NewStorage(gitMetadataDirectory, cache.NewObjectLRUDefault())
|
||||
fakeLocalRepository, err := git.Clone(storageForSubRepository, baseGitRepository, &git.CloneOptions{
|
||||
URL: paths.baseTestRepository,
|
||||
})
|
||||
checkErrorDuringPreparation(err)
|
||||
|
||||
sc := StatusChecker{
|
||||
workspace: tmpDirWithInitialRepository.rootFS.Root(),
|
||||
}
|
||||
|
||||
repoCfg := config.RepositoryConfig{
|
||||
Name: "test",
|
||||
Src: tmpDirWithInitialRepository.baseRepository.fileSystem.Root(),
|
||||
Dest: dirNameForLocalRepository,
|
||||
}
|
||||
|
||||
return sc, fakeLocalRepository, repoCfg, tmpDirWithInitialRepository
|
||||
return fakeLocalRepository
|
||||
}
|
||||
|
||||
func getBaseForTestingSyncMultipleRemote() (StatusChecker, *git.Repository, config.RepositoryConfig) {
|
||||
sc, fakeLocalRepository, repoCfg, tmpDirWithInitialRepository := getBaseForTestingSyncCommand()
|
||||
func addLocalRepositoryAsAFakeRemoteRepository(repository *git.Repository, baseTestRepositoryPath string) error {
|
||||
|
||||
fakeLocalRepository.CreateRemote(&gitcfg.RemoteConfig{
|
||||
_, err := repository.CreateRemote(&gitcfg.RemoteConfig{
|
||||
Name: "subremote",
|
||||
URLs: []string{tmpDirWithInitialRepository.baseRepository.fileSystem.Root()},
|
||||
URLs: []string{baseTestRepositoryPath},
|
||||
})
|
||||
|
||||
fakeLocalRepository.Fetch(&git.FetchOptions{
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return repository.Fetch(&git.FetchOptions{
|
||||
RemoteName: "subremote",
|
||||
})
|
||||
return sc, fakeLocalRepository, repoCfg
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue