forked from Plemya-x/ALR
		
	refactor: migrate e2e tests from efficientgo/e2e to capytest
This commit is contained in:
		| @@ -19,54 +19,24 @@ | |||||||
| package e2etests_test | package e2etests_test | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"bytes" |  | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EAlrAddRepo(t *testing.T) { | func TestE2EAlrAddRepo(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"add-repo-remove-repo", | 		"add-repo-remove-repo", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			err := r.Exec(e2e.NewCommand( | 			execShouldNoError(t, r, "sudo", "alr", "addrepo", "--name", "alr-repo", "--url", "https://gitea.plemya-x.ru/Plemya-x/alr-repo.git") | ||||||
| 				"sudo", | 			execShouldNoError(t, r, "bash", "-c", "cat /etc/alr/alr.toml") | ||||||
| 				"alr", | 			execShouldNoError(t, r, "sudo", "alr", "removerepo", "--name", "alr-repo") | ||||||
| 				"addrepo", |  | ||||||
| 				"--name", |  | ||||||
| 				"alr-repo", |  | ||||||
| 				"--url", |  | ||||||
| 				"https://gitea.plemya-x.ru/Plemya-x/alr-repo.git", |  | ||||||
| 			)) |  | ||||||
| 			assert.NoError(t, err) |  | ||||||
|  |  | ||||||
| 			err = r.Exec(e2e.NewCommand( | 			r.Command("bash", "-c", "cat /etc/alr/alr.toml"). | ||||||
| 				"bash", | 				ExpectStdoutContains("repo = []"). | ||||||
| 				"-c", | 				Run(t) | ||||||
| 				"cat /etc/alr/alr.toml", |  | ||||||
| 			)) |  | ||||||
| 			assert.NoError(t, err) |  | ||||||
|  |  | ||||||
| 			err = r.Exec(e2e.NewCommand( |  | ||||||
| 				"sudo", |  | ||||||
| 				"alr", |  | ||||||
| 				"removerepo", |  | ||||||
| 				"--name", |  | ||||||
| 				"alr-repo", |  | ||||||
| 			)) |  | ||||||
| 			assert.NoError(t, err) |  | ||||||
|  |  | ||||||
| 			var buf bytes.Buffer |  | ||||||
| 			err = r.Exec(e2e.NewCommand( |  | ||||||
| 				"bash", |  | ||||||
| 				"-c", |  | ||||||
| 				"cat /etc/alr/alr.toml", |  | ||||||
| 			), e2e.WithExecOptionStdout(&buf)) |  | ||||||
| 			assert.NoError(t, err) |  | ||||||
| 			assert.Contains(t, buf.String(), "repo = []") |  | ||||||
| 		}, | 		}, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EBashCompletion(t *testing.T) { | func TestE2EBashCompletion(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"bash-completion", | 		"bash-completion", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			execShouldNoError(t, r, "alr", "install", "--generate-bash-completion") | 			execShouldNoError(t, r, "alr", "install", "--generate-bash-completion") | ||||||
| 		}, | 		}, | ||||||
| 	) | 	) | ||||||
|   | |||||||
| @@ -19,84 +19,13 @@ | |||||||
| package e2etests_test | package e2etests_test | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"crypto/sha256" |  | ||||||
| 	"encoding/hex" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" |  | ||||||
| 	"log" |  | ||||||
| 	"os" |  | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| 	"github.com/stretchr/testify/assert" | 	"go.alt-gnome.ru/capytest/providers/podman" | ||||||
|  |  | ||||||
| 	expect "github.com/tailscale/goexpect" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // DebugWriter оборачивает io.Writer и логирует все записываемые данные. |  | ||||||
| type DebugWriter struct { |  | ||||||
| 	prefix string |  | ||||||
| 	writer io.Writer |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (d *DebugWriter) Write(p []byte) (n int, err error) { |  | ||||||
| 	log.Printf("%s: Writing data: %q", d.prefix, p) // Логируем данные |  | ||||||
| 	return d.writer.Write(p) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // DebugReader оборачивает io.Reader и логирует все читаемые данные. |  | ||||||
| type DebugReader struct { |  | ||||||
| 	prefix string |  | ||||||
| 	reader io.Reader |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (d *DebugReader) Read(p []byte) (n int, err error) { |  | ||||||
| 	n, err = d.reader.Read(p) |  | ||||||
| 	if n > 0 { |  | ||||||
| 		log.Printf("%s: Read data: %q", d.prefix, p[:n]) // Логируем данные |  | ||||||
| 	} |  | ||||||
| 	return n, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func e2eSpawn(runnable e2e.Runnable, command e2e.Command, timeout time.Duration, opts ...expect.Option) (expect.Expecter, <-chan error, error, *io.PipeWriter) { |  | ||||||
| 	resCh := make(chan error) |  | ||||||
|  |  | ||||||
| 	// Создаем pipe для stdin и stdout |  | ||||||
| 	stdinReader, stdinWriter := io.Pipe() |  | ||||||
| 	stdoutReader, stdoutWriter := io.Pipe() |  | ||||||
|  |  | ||||||
| 	debugStdinReader := &DebugReader{prefix: "STDIN", reader: stdinReader} |  | ||||||
| 	debugStdoutWriter := &DebugWriter{prefix: "STDOUT", writer: stdoutWriter} |  | ||||||
|  |  | ||||||
| 	go func() { |  | ||||||
| 		err := runnable.Exec( |  | ||||||
| 			command, |  | ||||||
| 			e2e.WithExecOptionStdout(debugStdoutWriter), |  | ||||||
| 			e2e.WithExecOptionStdin(debugStdinReader), |  | ||||||
| 			e2e.WithExecOptionStderr(debugStdoutWriter), |  | ||||||
| 		) |  | ||||||
|  |  | ||||||
| 		resCh <- err |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	exp, chnErr, err := expect.SpawnGeneric(&expect.GenOptions{ |  | ||||||
| 		In:  stdinWriter, |  | ||||||
| 		Out: stdoutReader, |  | ||||||
| 		Wait: func() error { |  | ||||||
| 			return <-resCh |  | ||||||
| 		}, |  | ||||||
| 		Close: func() error { |  | ||||||
| 			stdinWriter.Close() |  | ||||||
| 			stdoutReader.Close() |  | ||||||
| 			return nil |  | ||||||
| 		}, |  | ||||||
| 		Check: func() bool { return true }, |  | ||||||
| 	}, timeout, expect.Verbose(true), expect.VerboseWriter(os.Stdout)) |  | ||||||
|  |  | ||||||
| 	return exp, chnErr, err, stdinWriter |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var ALL_SYSTEMS []string = []string{ | var ALL_SYSTEMS []string = []string{ | ||||||
| 	"ubuntu-24.04", | 	"ubuntu-24.04", | ||||||
| 	"alt-sisyphus", | 	"alt-sisyphus", | ||||||
| @@ -120,71 +49,20 @@ var COMMON_SYSTEMS []string = []string{ | |||||||
| 	"ubuntu-24.04", | 	"ubuntu-24.04", | ||||||
| } | } | ||||||
|  |  | ||||||
| func dockerMultipleRun(t *testing.T, name string, ids []string, f func(t *testing.T, runnable e2e.Runnable)) { | func execShouldNoError(t *testing.T, r capytest.Runner, cmd string, args ...string) { | ||||||
| 	t.Run(name, func(t *testing.T) { | 	t.Helper() | ||||||
| 		for _, id := range ids { | 	r.Command(cmd, args...).ExpectSuccess().Run(t) | ||||||
| 			t.Run(id, func(t *testing.T) { |  | ||||||
| 				t.Parallel() |  | ||||||
| 				dockerName := fmt.Sprintf("alr-test-%s-%s", name, id) |  | ||||||
| 				hash := sha256.New() |  | ||||||
| 				hash.Write([]byte(dockerName)) |  | ||||||
| 				hashSum := hash.Sum(nil) |  | ||||||
| 				hashString := hex.EncodeToString(hashSum) |  | ||||||
| 				truncatedHash := hashString[:8] |  | ||||||
| 				e, err := e2e.New(e2e.WithVerbose(), e2e.WithName(fmt.Sprintf("alr-%s", truncatedHash))) |  | ||||||
| 				assert.NoError(t, err) |  | ||||||
| 				t.Cleanup(e.Close) |  | ||||||
| 				imageId := fmt.Sprintf("ghcr.io/maks1ms/alr-e2e-test-image-%s", id) |  | ||||||
| 				runnable := e.Runnable(dockerName).Init( |  | ||||||
| 					e2e.StartOptions{ |  | ||||||
| 						Image: imageId, |  | ||||||
| 						Volumes: []string{ |  | ||||||
| 							"./alr:/tmp/alr", |  | ||||||
| 						}, |  | ||||||
| 						Privileged: true, |  | ||||||
| 					}, |  | ||||||
| 				) |  | ||||||
| 				assert.NoError(t, e2e.StartAndWaitReady(runnable)) |  | ||||||
| 				err = runnable.Exec(e2e.NewCommand("/bin/alr-test-setup", "alr-install")) |  | ||||||
| 				if err != nil { |  | ||||||
| 					panic(err) |  | ||||||
| 				} |  | ||||||
| 				err = runnable.Exec(e2e.NewCommand("/bin/alr-test-setup", "passwordless-sudo-setup")) |  | ||||||
| 				if err != nil { |  | ||||||
| 					panic(err) |  | ||||||
| 				} |  | ||||||
| 				f(t, runnable) |  | ||||||
| 			}) |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func execShouldNoError(t *testing.T, r e2e.Runnable, cmd string, args ...string) { | func execShouldError(t *testing.T, r capytest.Runner, cmd string, args ...string) { | ||||||
| 	assert.NoError(t, r.Exec(e2e.NewCommand(cmd, args...))) | 	t.Helper() | ||||||
| } | 	r.Command(cmd, args...).ExpectFailure().Run(t) | ||||||
|  |  | ||||||
| func execShouldError(t *testing.T, r e2e.Runnable, cmd string, args ...string) { |  | ||||||
| 	assert.Error(t, r.Exec(e2e.NewCommand(cmd, args...))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func runTestCommands(t *testing.T, r e2e.Runnable, timeout time.Duration, expects []expect.Batcher) { |  | ||||||
| 	exp, _, err, _ := e2eSpawn( |  | ||||||
| 		r, |  | ||||||
| 		e2e.NewCommand("/bin/bash"), 25*time.Second, |  | ||||||
| 		expect.Verbose(true), |  | ||||||
| 	) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	_, err = exp.ExpectBatch( |  | ||||||
| 		expects, |  | ||||||
| 		timeout, |  | ||||||
| 	) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| const REPO_NAME_FOR_E2E_TESTS = "alr-repo" | const REPO_NAME_FOR_E2E_TESTS = "alr-repo" | ||||||
| const REPO_URL_FOR_E2E_TESTS = "https://gitea.plemya-x.ru/Plemya-x/repo-for-tests.git" | const REPO_URL_FOR_E2E_TESTS = "https://gitea.plemya-x.ru/Plemya-x/repo-for-tests.git" | ||||||
|  |  | ||||||
| func defaultPrepare(t *testing.T, r e2e.Runnable) { | func defaultPrepare(t *testing.T, r capytest.Runner) { | ||||||
| 	execShouldNoError(t, r, | 	execShouldNoError(t, r, | ||||||
| 		"sudo", | 		"sudo", | ||||||
| 		"alr", | 		"alr", | ||||||
| @@ -200,3 +78,19 @@ func defaultPrepare(t *testing.T, r e2e.Runnable) { | |||||||
| 		"ref", | 		"ref", | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func runMatrixSuite(t *testing.T, name string, images []string, test func(t *testing.T, r capytest.Runner)) { | ||||||
|  | 	t.Helper() | ||||||
|  | 	for _, image := range images { | ||||||
|  | 		ts := capytest.NewTestSuite(t, podman.Provider( | ||||||
|  | 			podman.WithImage(fmt.Sprintf("ghcr.io/maks1ms/alr-e2e-test-image-%s", image)), | ||||||
|  | 			podman.WithVolumes("./alr:/tmp/alr"), | ||||||
|  | 			podman.WithPrivileged(true), | ||||||
|  | 		)) | ||||||
|  | 		ts.BeforeEach(func(t *testing.T, r capytest.Runner) { | ||||||
|  | 			execShouldNoError(t, r, "/bin/alr-test-setup", "alr-install") | ||||||
|  | 			execShouldNoError(t, r, "/bin/alr-test-setup", "passwordless-sudo-setup") | ||||||
|  | 		}) | ||||||
|  | 		ts.Run(fmt.Sprintf("%s/%s", name, image), test) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
| @@ -22,15 +22,15 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EFirejailedPackage(t *testing.T) { | func TestE2EFirejailedPackage(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"firejailed-package", | 		"firejailed-package", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "alr", "build", "-p", fmt.Sprintf("%s/firejailed-pkg", REPO_NAME_FOR_E2E_TESTS)) | 			execShouldNoError(t, r, "alr", "build", "-p", fmt.Sprintf("%s/firejailed-pkg", REPO_NAME_FOR_E2E_TESTS)) | ||||||
| 			execShouldError(t, r, "alr", "build", "-p", fmt.Sprintf("%s/firejailed-pkg-incorrect", REPO_NAME_FOR_E2E_TESTS)) | 			execShouldError(t, r, "alr", "build", "-p", fmt.Sprintf("%s/firejailed-pkg-incorrect", REPO_NAME_FOR_E2E_TESTS)) | ||||||
|   | |||||||
| @@ -20,24 +20,15 @@ package e2etests_test | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| 	expect "github.com/tailscale/goexpect" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EAlrFix(t *testing.T) { | func TestE2EAlrFix(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite(t, "run-fix", COMMON_SYSTEMS, func(t *testing.T, r capytest.Runner) { | ||||||
| 		t, | 		r.Command("alr", "fix"). | ||||||
| 		"run-fix", | 			ExpectStderrContains("--> Done"). | ||||||
| 		COMMON_SYSTEMS, | 			ExpectSuccess(). | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 			Run(t) | ||||||
| 			runTestCommands(t, r, time.Second*30, []expect.Batcher{ | 	}) | ||||||
| 				&expect.BSnd{S: "alr fix\n"}, |  | ||||||
| 				&expect.BExp{R: `--> Done`}, |  | ||||||
| 				&expect.BSnd{S: "echo $?\n"}, |  | ||||||
| 				&expect.BExp{R: `^0\n$`}, |  | ||||||
| 			}) |  | ||||||
| 		}, |  | ||||||
| 	) |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EGroupAndSummaryField(t *testing.T) { | func TestE2EGroupAndSummaryField(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"group-and-summary-field", | 		"group-and-summary-field", | ||||||
| 		RPM_SYSTEMS, | 		RPM_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Group.Resolved}}\" | grep ^System/Base$") | 			execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Group.Resolved}}\" | grep ^System/Base$") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Summary.Resolved}}\" | grep \"^Custom summary$\"") | 			execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Summary.Resolved}}\" | grep \"^Custom summary$\"") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue32Interactive(t *testing.T) { | func TestE2EIssue32Interactive(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-32-interactive", | 		"issue-32-interactive", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			execShouldNoError(t, r, "alr", "--interactive=false", "remove", "ca-certificates") | 			execShouldNoError(t, r, "alr", "--interactive=false", "remove", "ca-certificates") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "--interactive=false", "remove", "openssl") | 			execShouldNoError(t, r, "sudo", "alr", "--interactive=false", "remove", "openssl") | ||||||
| 			execShouldNoError(t, r, "alr", "fix") | 			execShouldNoError(t, r, "alr", "fix") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue41AutoreqSkiplist(t *testing.T) { | func TestE2EIssue41AutoreqSkiplist(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-41-autoreq-skiplist", | 		"issue-41-autoreq-skiplist", | ||||||
| 		AUTOREQ_AUTOPROV_SYSTEMS, | 		AUTOREQ_AUTOPROV_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "alr", "build", "-p", "alr-repo/test-autoreq-autoprov") | 			execShouldNoError(t, r, "alr", "build", "-p", "alr-repo/test-autoreq-autoprov") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "rpm -qp --requires *.rpm | grep \"^/bin/sh$\"") | 			execShouldNoError(t, r, "sh", "-c", "rpm -qp --requires *.rpm | grep \"^/bin/sh$\"") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue50InstallMultiple(t *testing.T) { | func TestE2EIssue50InstallMultiple(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-50-install-multiple", | 		"issue-50-install-multiple", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg") | 			execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg") | ||||||
| 			execShouldNoError(t, r, "cat", "/opt/foo") | 			execShouldNoError(t, r, "cat", "/opt/foo") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue53LcAllCInfo(t *testing.T) { | func TestE2EIssue53LcAllCInfo(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-53-lc-all-c-info", | 		"issue-53-lc-all-c-info", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "bash", "-c", "LANG=C alr info foo-pkg") | 			execShouldNoError(t, r, "bash", "-c", "LANG=C alr info foo-pkg") | ||||||
| 		}, | 		}, | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue59RmCompletion(t *testing.T) { | func TestE2EIssue59RmCompletion(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-59-rm-completion", | 		"issue-59-rm-completion", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg") | 			execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr rm --generate-bash-completion | grep ^foo-pkg$") | 			execShouldNoError(t, r, "sh", "-c", "alr rm --generate-bash-completion | grep ^foo-pkg$") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue72InstallWithDeps(t *testing.T) { | func TestE2EIssue72InstallWithDeps(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-72-install-with-deps", | 		"issue-72-install-with-deps", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "in", "test-app-with-lib") | 			execShouldNoError(t, r, "sudo", "alr", "in", "test-app-with-lib") | ||||||
| 		}, | 		}, | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue74Upgradable(t *testing.T) { | func TestE2EIssue74Upgradable(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-74-upgradable", | 		"issue-74-upgradable", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7") | 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7") | ||||||
| 			execShouldNoError(t, r, "alr", "ref") | 			execShouldNoError(t, r, "alr", "ref") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue75InstallWithDeps(t *testing.T) { | func TestE2EIssue75InstallWithDeps(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-75-ref-specify", | 		"issue-75-ref-specify", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7") | 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "test $(alr list | wc -l) -eq 2 || exit 1") | 			execShouldNoError(t, r, "sh", "-c", "test $(alr list | wc -l) -eq 2 || exit 1") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func Test75SinglePackageRepo(t *testing.T) { | func Test75SinglePackageRepo(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-76-single-package-repo", | 		"issue-76-single-package-repo", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			execShouldNoError(t, r, | 			execShouldNoError(t, r, | ||||||
| 				"sudo", | 				"sudo", | ||||||
| 				"alr", | 				"alr", | ||||||
| @@ -38,8 +38,9 @@ func Test75SinglePackageRepo(t *testing.T) { | |||||||
| 				REPO_NAME_FOR_E2E_TESTS, | 				REPO_NAME_FOR_E2E_TESTS, | ||||||
| 				"https://gitea.plemya-x.ru/Maks1mS/test-single-package-alr-repo.git", | 				"https://gitea.plemya-x.ru/Maks1mS/test-single-package-alr-repo.git", | ||||||
| 			) | 			) | ||||||
|  | 			execShouldNoError(t, r, "sudo", "alr", "ref") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", REPO_NAME_FOR_E2E_TESTS, "1075c918be") | 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", REPO_NAME_FOR_E2E_TESTS, "1075c918be") | ||||||
| 			execShouldNoError(t, r, "alr", "ref") | 			execShouldNoError(t, r, "alr", "fix") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "in", "test-single-repo") | 			execShouldNoError(t, r, "sudo", "alr", "in", "test-single-repo") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr list -U") | 			execShouldNoError(t, r, "sh", "-c", "alr list -U") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "test $(alr list -U | wc -l) -eq 0 || exit 1") | 			execShouldNoError(t, r, "sh", "-c", "test $(alr list -U | wc -l) -eq 0 || exit 1") | ||||||
|   | |||||||
| @@ -21,33 +21,29 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue78Mirrors(t *testing.T) { | func TestE2EIssue78Mirrors(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite(t, "issue-78-mirrors", COMMON_SYSTEMS, func(t *testing.T, r capytest.Runner) { | ||||||
| 		t, | 		defaultPrepare(t, r) | ||||||
| 		"issue-78-mirrors", | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 		COMMON_SYSTEMS, | 		execShouldNoError(t, r, "sudo", "alr", "repo", "set-url", REPO_NAME_FOR_E2E_TESTS, "https://example.com") | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		execShouldNoError(t, r, "sudo", "alr", "ref") | ||||||
| 			defaultPrepare(t, r) | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "clear", REPO_NAME_FOR_E2E_TESTS) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldError(t, r, "sudo", "alr", "ref") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "set-url", REPO_NAME_FOR_E2E_TESTS, "https://example.com") |  | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "ref") |  | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "clear", REPO_NAME_FOR_E2E_TESTS) |  | ||||||
| 			execShouldError(t, r, "sudo", "alr", "ref") |  | ||||||
|  |  | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", "--partial", REPO_NAME_FOR_E2E_TESTS, "gitea.plemya-x.ru/Maks1mS") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", "--partial", REPO_NAME_FOR_E2E_TESTS, "gitea.plemya-x.ru/Maks1mS") | ||||||
| 			execShouldError(t, r, "sudo", "alr", "ref") | 		execShouldError(t, r, "sudo", "alr", "ref") | ||||||
|  |  | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 			execShouldError(t, r, "sudo", "alr", "ref") | 		execShouldError(t, r, "sudo", "alr", "ref") | ||||||
|  |  | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "add", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | 		execShouldNoError(t, r, "sudo", "alr", "repo", "mirror", "rm", REPO_NAME_FOR_E2E_TESTS, "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git") | ||||||
| 			execShouldError(t, r, "sudo", "alr", "ref") | 		execShouldError(t, r, "sudo", "alr", "ref") | ||||||
| 		}, | 	}, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue81MultiplePackages(t *testing.T) { | func TestE2EIssue81MultiplePackages(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-81-multiple-packages", | 		"issue-81-multiple-packages", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sudo", "alr", "in", "first-package-with-dashes") | 			execShouldNoError(t, r, "sudo", "alr", "in", "first-package-with-dashes") | ||||||
| 			execShouldNoError(t, r, "cat", "/opt/first-package") | 			execShouldNoError(t, r, "cat", "/opt/first-package") | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue91MultiplePackages(t *testing.T) { | func TestE2EIssue91MultiplePackages(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-91-set-repo-ref", | 		"issue-91-set-repo-ref", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldError(t, r, "sudo", "alr", "repo", "set-ref") | 			execShouldError(t, r, "sudo", "alr", "repo", "set-ref") | ||||||
| 			execShouldError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo") | 			execShouldError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo") | ||||||
|   | |||||||
| @@ -23,27 +23,26 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" |  | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
|  | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue94TwiceBuild(t *testing.T) { | func TestE2EIssue94TwiceBuild(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-94-twice-build", | 		"issue-94-twice-build", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
|  |  | ||||||
| 			var stderr bytes.Buffer | 			var stderr bytes.Buffer | ||||||
| 			err := r.Exec( |  | ||||||
| 				e2e.NewCommand("sudo", "alr", "in", "test-94-app"), |  | ||||||
| 				e2e.WithExecOptionStderr(&stderr), |  | ||||||
| 			) |  | ||||||
| 			assert.NoError(t, err, "command failed") |  | ||||||
|  |  | ||||||
| 			output := stderr.String() | 			r.Command("sudo", "alr", "in", "test-94-app"). | ||||||
| 			assert.Equal(t, 1, strings.Count(output, "Building package name=test-94-dep")) | 				WithCaptureStderr(&stderr). | ||||||
|  | 				ExpectSuccess(). | ||||||
|  | 				Run(t) | ||||||
|  |  | ||||||
|  | 			assert.Equal(t, 1, strings.Count(stderr.String(), "Building package name=test-94-dep")) | ||||||
| 		}, | 		}, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,15 +21,15 @@ package e2etests_test | |||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EIssue95ConfigCommand(t *testing.T) { | func TestE2EIssue95ConfigCommand(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite( | ||||||
| 		t, | 		t, | ||||||
| 		"issue-95-config-command", | 		"issue-95-config-command", | ||||||
| 		COMMON_SYSTEMS, | 		COMMON_SYSTEMS, | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 		func(t *testing.T, r capytest.Runner) { | ||||||
| 			defaultPrepare(t, r) | 			defaultPrepare(t, r) | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr config show | grep \"autoPull: true\"") | 			execShouldNoError(t, r, "sh", "-c", "alr config show | grep \"autoPull: true\"") | ||||||
| 			execShouldNoError(t, r, "sh", "-c", "alr config get | grep \"autoPull: true\"") | 			execShouldNoError(t, r, "sh", "-c", "alr config get | grep \"autoPull: true\"") | ||||||
|   | |||||||
| @@ -20,25 +20,16 @@ package e2etests_test | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/efficientgo/e2e" | 	"go.alt-gnome.ru/capytest" | ||||||
|  |  | ||||||
| 	expect "github.com/tailscale/goexpect" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestE2EAlrVersion(t *testing.T) { | func TestE2EAlrVersion(t *testing.T) { | ||||||
| 	dockerMultipleRun( | 	runMatrixSuite(t, "version", COMMON_SYSTEMS, func(t *testing.T, r capytest.Runner) { | ||||||
| 		t, | 		r.Command("alr", "version"). | ||||||
| 		"check-version", | 			ExpectStderrRegex(`^v\d+\.\d+\.\d+(?:-\d+-g[a-f0-9]+)?\n$`). | ||||||
| 		COMMON_SYSTEMS, | 			ExpectStdoutEmpty(). | ||||||
| 		func(t *testing.T, r e2e.Runnable) { | 			ExpectSuccess(). | ||||||
| 			runTestCommands(t, r, time.Second*10, []expect.Batcher{ | 			Run(t) | ||||||
| 				&expect.BSnd{S: "alr version\n"}, | 	}) | ||||||
| 				&expect.BExp{R: `^v\d+\.\d+\.\d+(?:-\d+-g[a-f0-9]+)?\n$`}, |  | ||||||
| 				&expect.BSnd{S: "echo $?\n"}, |  | ||||||
| 				&expect.BExp{R: `^0\n$`}, |  | ||||||
| 			}) |  | ||||||
| 		}, |  | ||||||
| 	) |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								go.mod
									
									
									
									
									
								
							| @@ -1,8 +1,6 @@ | |||||||
| module gitea.plemya-x.ru/Plemya-x/ALR | module gitea.plemya-x.ru/Plemya-x/ALR | ||||||
|  |  | ||||||
| go 1.23.0 | go 1.24.4 | ||||||
|  |  | ||||||
| toolchain go1.24.2 |  | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.2-0.20250408104831-427aaa7713c3 | 	gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.2-0.20250408104831-427aaa7713c3 | ||||||
| @@ -14,7 +12,6 @@ require ( | |||||||
| 	github.com/charmbracelet/bubbletea v1.2.4 | 	github.com/charmbracelet/bubbletea v1.2.4 | ||||||
| 	github.com/charmbracelet/lipgloss v1.0.0 | 	github.com/charmbracelet/lipgloss v1.0.0 | ||||||
| 	github.com/charmbracelet/log v0.4.0 | 	github.com/charmbracelet/log v0.4.0 | ||||||
| 	github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0 |  | ||||||
| 	github.com/go-git/go-billy/v5 v5.6.0 | 	github.com/go-git/go-billy/v5 v5.6.0 | ||||||
| 	github.com/go-git/go-git/v5 v5.13.0 | 	github.com/go-git/go-git/v5 v5.13.0 | ||||||
| 	github.com/goccy/go-yaml v1.18.0 | 	github.com/goccy/go-yaml v1.18.0 | ||||||
| @@ -35,9 +32,10 @@ require ( | |||||||
| 	github.com/muesli/reflow v0.3.0 | 	github.com/muesli/reflow v0.3.0 | ||||||
| 	github.com/pelletier/go-toml/v2 v2.2.4 | 	github.com/pelletier/go-toml/v2 v2.2.4 | ||||||
| 	github.com/stretchr/testify v1.10.0 | 	github.com/stretchr/testify v1.10.0 | ||||||
| 	github.com/tailscale/goexpect v0.0.0-20210902213824-6e8c725cea41 |  | ||||||
| 	github.com/urfave/cli/v2 v2.25.7 | 	github.com/urfave/cli/v2 v2.25.7 | ||||||
| 	github.com/vmihailenco/msgpack/v5 v5.3.5 | 	github.com/vmihailenco/msgpack/v5 v5.3.5 | ||||||
|  | 	go.alt-gnome.ru/capytest v0.0.2 | ||||||
|  | 	go.alt-gnome.ru/capytest/providers/podman v0.0.2 | ||||||
| 	go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4 | 	go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4 | ||||||
| 	golang.org/x/crypto v0.36.0 | 	golang.org/x/crypto v0.36.0 | ||||||
| 	golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 | 	golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 | ||||||
| @@ -75,7 +73,6 @@ require ( | |||||||
| 	github.com/dlclark/regexp2 v1.10.0 // indirect | 	github.com/dlclark/regexp2 v1.10.0 // indirect | ||||||
| 	github.com/dsnet/compress v0.0.1 // indirect | 	github.com/dsnet/compress v0.0.1 // indirect | ||||||
| 	github.com/dustin/go-humanize v1.0.1 // indirect | 	github.com/dustin/go-humanize v1.0.1 // indirect | ||||||
| 	github.com/efficientgo/core v1.0.0-rc.0 // indirect |  | ||||||
| 	github.com/emirpasic/gods v1.18.1 // indirect | 	github.com/emirpasic/gods v1.18.1 // indirect | ||||||
| 	github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect | 	github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect | ||||||
| 	github.com/fatih/color v1.7.0 // indirect | 	github.com/fatih/color v1.7.0 // indirect | ||||||
| @@ -88,7 +85,6 @@ require ( | |||||||
| 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||||||
| 	github.com/golang/protobuf v1.5.3 // indirect | 	github.com/golang/protobuf v1.5.3 // indirect | ||||||
| 	github.com/golang/snappy v0.0.4 // indirect | 	github.com/golang/snappy v0.0.4 // indirect | ||||||
| 	github.com/google/goterm v0.0.0-20190703233501-fc88cf888a3f // indirect |  | ||||||
| 	github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a // indirect | 	github.com/google/rpmpack v0.6.1-0.20240329070804-c2247cbb881a // indirect | ||||||
| 	github.com/google/uuid v1.6.0 // indirect | 	github.com/google/uuid v1.6.0 // indirect | ||||||
| 	github.com/goreleaser/chglog v0.6.1 // indirect | 	github.com/goreleaser/chglog v0.6.1 // indirect | ||||||
| @@ -139,7 +135,6 @@ require ( | |||||||
| 	go4.org v0.0.0-20200411211856-f5505b9728dd // indirect | 	go4.org v0.0.0-20200411211856-f5505b9728dd // indirect | ||||||
| 	golang.org/x/mod v0.19.0 // indirect | 	golang.org/x/mod v0.19.0 // indirect | ||||||
| 	golang.org/x/net v0.38.0 // indirect | 	golang.org/x/net v0.38.0 // indirect | ||||||
| 	golang.org/x/oauth2 v0.25.0 // indirect |  | ||||||
| 	golang.org/x/sync v0.12.0 // indirect | 	golang.org/x/sync v0.12.0 // indirect | ||||||
| 	golang.org/x/term v0.30.0 // indirect | 	golang.org/x/term v0.30.0 // indirect | ||||||
| 	golang.org/x/tools v0.23.0 // indirect | 	golang.org/x/tools v0.23.0 // indirect | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								go.sum
									
									
									
									
									
								
							| @@ -63,8 +63,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd | |||||||
| github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= | ||||||
| github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= | github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= | ||||||
| github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= | github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= | ||||||
| github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= |  | ||||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= |  | ||||||
| github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4= | github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4= | ||||||
| github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= | github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= | ||||||
| github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= | github.com/bmatcuk/doublestar/v4 v4.8.1 h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38= | ||||||
| @@ -82,8 +80,6 @@ github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTli | |||||||
| github.com/cavaliergopher/cpio v1.0.1 h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM= | github.com/cavaliergopher/cpio v1.0.1 h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM= | ||||||
| github.com/cavaliergopher/cpio v1.0.1/go.mod h1:pBdaqQjnvXxdS/6CvNDwIANIFSP0xRKI16PX4xejRQc= | github.com/cavaliergopher/cpio v1.0.1/go.mod h1:pBdaqQjnvXxdS/6CvNDwIANIFSP0xRKI16PX4xejRQc= | ||||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||||
| github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= |  | ||||||
| github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= |  | ||||||
| github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE= | github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE= | ||||||
| github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU= | github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU= | ||||||
| github.com/charmbracelet/bubbletea v1.2.4 h1:KN8aCViA0eps9SCOThb2/XPIlea3ANJLUkv3KnQRNCE= | github.com/charmbracelet/bubbletea v1.2.4 h1:KN8aCViA0eps9SCOThb2/XPIlea3ANJLUkv3KnQRNCE= | ||||||
| @@ -123,10 +119,6 @@ github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5Jflh | |||||||
| github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= | github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= | ||||||
| github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= | github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= | ||||||
| github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= | github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= | ||||||
| github.com/efficientgo/core v1.0.0-rc.0 h1:jJoA0N+C4/knWYVZ6GrdHOtDyrg8Y/TR4vFpTaqTsqs= |  | ||||||
| github.com/efficientgo/core v1.0.0-rc.0/go.mod h1:kQa0V74HNYMfuJH6jiPiwNdpWXl4xd/K4tzlrcvYDQI= |  | ||||||
| github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0 h1:C/FNIs+MtAJgQYLJ9FX/ACFYyDRuLYoXTmueErrOJyA= |  | ||||||
| github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0/go.mod h1:plsKU0YHE9uX+7utvr7SiDtVBSHJyEfHRO4UnUgDmts= |  | ||||||
| github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= | github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug= | ||||||
| github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= | github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= | ||||||
| github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= | github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= | ||||||
| @@ -200,8 +192,6 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ | |||||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
| github.com/google/goterm v0.0.0-20190703233501-fc88cf888a3f h1:5CjVwnuUcp5adK4gmY6i72gpVFVnZDP2h5TmPScB6u4= |  | ||||||
| github.com/google/goterm v0.0.0-20190703233501-fc88cf888a3f/go.mod h1:nOFQdrUlIlx6M6ODdSpBj1NVA+VgLC6kmw60mkw34H4= |  | ||||||
| github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | ||||||
| github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||||
| github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||||
| @@ -256,8 +246,6 @@ github.com/jeandeaual/go-locale v0.0.0-20241217141322-fcc2cadd6f08 h1:wMeVzrPO3m | |||||||
| github.com/jeandeaual/go-locale v0.0.0-20241217141322-fcc2cadd6f08/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o= | github.com/jeandeaual/go-locale v0.0.0-20241217141322-fcc2cadd6f08/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o= | ||||||
| github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= | github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= | ||||||
| github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= | github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= | ||||||
| github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= |  | ||||||
| github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= |  | ||||||
| github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | ||||||
| github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||||
| github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | ||||||
| @@ -316,8 +304,6 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T | |||||||
| github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||||||
| github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= | github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= | ||||||
| github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= |  | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= |  | ||||||
| github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= | github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= | ||||||
| github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= | github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= | ||||||
| github.com/mholt/archiver/v4 v4.0.0-alpha.8 h1:tRGQuDVPh66WCOelqe6LIGh0gwmfwxUrSSDunscGsRM= | github.com/mholt/archiver/v4 v4.0.0-alpha.8 h1:tRGQuDVPh66WCOelqe6LIGh0gwmfwxUrSSDunscGsRM= | ||||||
| @@ -343,8 +329,6 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= | |||||||
| github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= | github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= | ||||||
| github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= | github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= | ||||||
| github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= | github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= | ||||||
| github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= |  | ||||||
| github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= |  | ||||||
| github.com/nwaples/rardecode/v2 v2.0.0-beta.2 h1:e3mzJFJs4k83GXBEiTaQ5HgSc/kOK8q0rDaRO0MPaOk= | github.com/nwaples/rardecode/v2 v2.0.0-beta.2 h1:e3mzJFJs4k83GXBEiTaQ5HgSc/kOK8q0rDaRO0MPaOk= | ||||||
| github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY= | github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY= | ||||||
| github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= | github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= | ||||||
| @@ -365,15 +349,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | |||||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= |  | ||||||
| github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= |  | ||||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
| github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= |  | ||||||
| github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= |  | ||||||
| github.com/prometheus/common v0.36.0 h1:78hJTing+BLYLjhXE+Z2BubeEymH5Lr0/Mt8FKkxxYo= |  | ||||||
| github.com/prometheus/common v0.36.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= |  | ||||||
| github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= |  | ||||||
| github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= |  | ||||||
| github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | ||||||
| github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= | github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= | ||||||
| github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | ||||||
| @@ -415,8 +391,6 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf | |||||||
| github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||||
| github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= | github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= | ||||||
| github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= | github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= | ||||||
| github.com/tailscale/goexpect v0.0.0-20210902213824-6e8c725cea41 h1:/V2rCMMWcsjYaYO2MeovLw+ClP63OtXgCF2Y1eb8+Ns= |  | ||||||
| github.com/tailscale/goexpect v0.0.0-20210902213824-6e8c725cea41/go.mod h1:/roCdA6gg6lQyw/Oz6gIIGu3ggJKYhF+WC/AQReE5XQ= |  | ||||||
| github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= | github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= | ||||||
| github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= | github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= | ||||||
| github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= | github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= | ||||||
| @@ -437,6 +411,10 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsr | |||||||
| github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||||
| gitlab.com/digitalxero/go-conventional-commit v1.0.7 h1:8/dO6WWG+98PMhlZowt/YjuiKhqhGlOCwlIV8SqqGh8= | gitlab.com/digitalxero/go-conventional-commit v1.0.7 h1:8/dO6WWG+98PMhlZowt/YjuiKhqhGlOCwlIV8SqqGh8= | ||||||
| gitlab.com/digitalxero/go-conventional-commit v1.0.7/go.mod h1:05Xc2BFsSyC5tKhK0y+P3bs0AwUtNuTp+mTpbCU/DZ0= | gitlab.com/digitalxero/go-conventional-commit v1.0.7/go.mod h1:05Xc2BFsSyC5tKhK0y+P3bs0AwUtNuTp+mTpbCU/DZ0= | ||||||
|  | go.alt-gnome.ru/capytest v0.0.2 h1:clmvIqmYS86hhA1rsvivSSPpfOFkJTpbn38EQP7I3E8= | ||||||
|  | go.alt-gnome.ru/capytest v0.0.2/go.mod h1:lvxPx3H6h+LPnStBFblgoT2wkjv0wbug3S14troykEg= | ||||||
|  | go.alt-gnome.ru/capytest/providers/podman v0.0.2 h1:fTQ9fmYiONgL8dJvyMB+irCfuojIVaomnqto6bl6HjU= | ||||||
|  | go.alt-gnome.ru/capytest/providers/podman v0.0.2/go.mod h1:Wpq1Ny3eMzADJpMJArA2TZGZbsviUBmawtEPcxnoerg= | ||||||
| go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4 h1:Ep54XceQlKhcCHl9awG+wWP4kz4kIP3c3Lzw/Gc/zwY= | go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4 h1:Ep54XceQlKhcCHl9awG+wWP4kz4kIP3c3Lzw/Gc/zwY= | ||||||
| go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4/go.mod h1:/7PNW7nFnDR5W7UXZVc04gdVLR/wBNgkm33KgIz0OBk= | go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4/go.mod h1:/7PNW7nFnDR5W7UXZVc04gdVLR/wBNgkm33KgIz0OBk= | ||||||
| go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= | go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= | ||||||
| @@ -510,8 +488,6 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr | |||||||
| golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||||
| golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||||
| golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||||
| golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= |  | ||||||
| golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= |  | ||||||
| golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| @@ -654,7 +630,6 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN | |||||||
| gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= |  | ||||||
| gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user