mukan-ignite/ignite/pkg/xos/files_test.go
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

204 lines
5 KiB
Go

package xos_test
import (
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/require"
"github.com/ignite/cli/v29/ignite/pkg/xos"
)
func TestFindFiles(t *testing.T) {
tests := []struct {
name string
files []string
extension []string
prefix string
want []string
err error
}{
{
name: "test zero files",
files: []string{},
want: []string{},
err: nil,
},
{
name: "test one file",
files: []string{"file.json"},
want: []string{"file.json"},
err: nil,
},
{
name: "test 3 files",
files: []string{"file1.json", "file2.txt", "file3.json"},
want: []string{"file1.json", "file2.txt", "file3.json"},
err: nil,
},
{
name: "test file prefix",
files: []string{"file.prefix.test.json"},
prefix: "file.prefix",
want: []string{"file.prefix.test.json"},
err: nil,
},
{
name: "test bigger file prefix",
files: []string{"file.prefix.test.json"},
prefix: "file.prefix.test",
want: []string{"file.prefix.test.json"},
err: nil,
},
{
name: "test 3 files prefix",
files: []string{"test.file1.json", "test.file2.txt", "test.file3.json"},
prefix: "test.file",
want: []string{"test.file1.json", "test.file2.txt", "test.file3.json"},
err: nil,
},
{
name: "test 3 extension json files",
files: []string{"file1.json", "file2.txt", "file3.json", "file4.json"},
extension: []string{"json"},
want: []string{"file1.json", "file3.json", "file4.json"},
err: nil,
},
{
name: "test 3 extension json files with subfolder",
files: []string{"testdata/file1.json", "file2.txt", "foo/file3.json", "file4.json"},
extension: []string{"json"},
want: []string{"testdata/file1.json", "foo/file3.json", "file4.json"},
err: nil,
},
{
name: "test 1 extension txt files",
files: []string{"file1.json", "file2.txt", "file3.json", "file4.json"},
extension: []string{"txt"},
want: []string{"file2.txt"},
err: nil,
},
{
name: "test 1 extension json files",
files: []string{"file1.json"},
extension: []string{"json"},
want: []string{"file1.json"},
err: nil,
},
{
name: "test invalid files extension",
files: []string{"file1.json", "file2.json", "file3.json", "file4.json"},
extension: []string{"txt"},
want: []string{},
err: nil,
},
{
name: "test file prefix and extension",
files: []string{"test.file1.json", "test.file2.txt", "test.file3.json"},
prefix: "test.file",
extension: []string{"json"},
want: []string{"test.file1.json", "test.file3.json"},
err: nil,
},
{
name: "test 2 different extensions",
files: []string{"file1.json", "file2.txt", "file3.json", "file4.json", "file.yaml"},
extension: []string{"txt", "yaml"},
want: []string{"file2.txt", "file.yaml"},
err: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
dirName := strings.ReplaceAll(t.Name(), "/", "_")
tempDir, err := os.MkdirTemp("", dirName)
require.NoError(t, err)
t.Cleanup(func() {
require.NoError(t, os.RemoveAll(tempDir))
})
for _, filename := range tt.files {
filePath := filepath.Join(tempDir, filename)
require.NoError(t, os.MkdirAll(filepath.Dir(filePath), 0o755))
file, err := os.Create(filePath)
require.NoError(t, err)
require.NoError(t, file.Close())
}
opts := make([]xos.FindFileOptions, 0)
if tt.prefix != "" {
opts = append(opts, xos.WithPrefix(tt.prefix))
}
for _, ext := range tt.extension {
opts = append(opts, xos.WithExtension(ext))
}
gotFiles, err := xos.FindFiles(tempDir, opts...)
if tt.err != nil {
require.Error(t, err)
require.ErrorIs(t, err, tt.err)
return
}
require.NoError(t, err)
want := make([]string, len(tt.want))
for i, filename := range tt.want {
want[i] = filepath.Join(tempDir, filename)
}
require.ElementsMatch(t, want, gotFiles)
})
}
}
func TestFileExists(t *testing.T) {
tempDir, err := os.MkdirTemp("", "TestCopyFile")
require.NoError(t, err)
t.Cleanup(func() {
require.NoError(t, os.RemoveAll(tempDir))
})
srcDir := filepath.Join(tempDir, "source")
err = os.MkdirAll(srcDir, 0o755)
require.NoError(t, err)
srcFile := filepath.Join(srcDir, "file.txt")
err = os.WriteFile(srcFile, []byte("File content"), 0o644)
require.NoError(t, err)
tests := []struct {
name string
filename string
want bool
}{
{
name: "existing file",
filename: srcFile,
want: true,
},
{
name: "non existing file",
filename: "non_existing_file.txt",
want: false,
},
{
name: "directory",
filename: srcDir,
want: false,
},
{
name: "empty filename",
filename: "",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := xos.FileExists(tt.filename)
require.EqualValues(t, tt.want, got)
})
}
}