forked from Plemya-x/ALR
		
	fix: removerepo and LC_ALL=C for info command
This commit is contained in:
		
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							@@ -73,5 +73,6 @@ test-coverage:
 | 
				
			|||||||
	bash scripts/coverage-badge.sh
 | 
						bash scripts/coverage-badge.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
e2e-test: clean build
 | 
					e2e-test: clean build
 | 
				
			||||||
 | 
						rm -f ./e2e-tests/alr
 | 
				
			||||||
	cp alr e2e-tests
 | 
						cp alr e2e-tests
 | 
				
			||||||
	go test -tags=e2e ./...
 | 
						go test -tags=e2e ./...
 | 
				
			||||||
@@ -19,33 +19,52 @@
 | 
				
			|||||||
package e2etests_test
 | 
					package e2etests_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"regexp"
 | 
						"bytes"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/efficientgo/e2e"
 | 
						"github.com/efficientgo/e2e"
 | 
				
			||||||
	expect "github.com/tailscale/goexpect"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestE2EAlrAddRepo(t *testing.T) {
 | 
					func TestE2EAlrAddRepo(t *testing.T) {
 | 
				
			||||||
	dockerMultipleRun(
 | 
						dockerMultipleRun(
 | 
				
			||||||
		t,
 | 
							t,
 | 
				
			||||||
		"add-repo",
 | 
							"add-repo-remove-repo",
 | 
				
			||||||
		COMMON_SYSTEMS,
 | 
							COMMON_SYSTEMS,
 | 
				
			||||||
		func(t *testing.T, r e2e.Runnable) {
 | 
							func(t *testing.T, r e2e.Runnable) {
 | 
				
			||||||
			runTestCommands(t, r, time.Second*10, []expect.Batcher{
 | 
								err := r.Exec(e2e.NewCommand(
 | 
				
			||||||
				&expect.BSnd{S: "alr addrepo --name alr-repo --url https://gitea.plemya-x.ru/Plemya-x/alr-repo.git ; echo ALR-ADD-REPO-RETURN-CODE $?\n"},
 | 
									"alr",
 | 
				
			||||||
				&expect.BCas{C: []expect.Caser{
 | 
									"addrepo",
 | 
				
			||||||
					&expect.Case{
 | 
									"--name",
 | 
				
			||||||
						R: regexp.MustCompile(`ALR-ADD-REPO-RETURN-CODE 0\n$`),
 | 
									"alr-repo",
 | 
				
			||||||
						T: expect.OK(),
 | 
									"--url",
 | 
				
			||||||
					},
 | 
									"https://gitea.plemya-x.ru/Plemya-x/alr-repo.git",
 | 
				
			||||||
					&expect.Case{
 | 
								))
 | 
				
			||||||
						R: regexp.MustCompile(`ALR-ADD-REPO-RETURN-CODE \d\n$`),
 | 
								assert.NoError(t, err)
 | 
				
			||||||
						T: expect.Fail(expect.NewStatus(expect.Internal, "Unexpected return code!")),
 | 
					
 | 
				
			||||||
					},
 | 
								err = r.Exec(e2e.NewCommand(
 | 
				
			||||||
				}},
 | 
									"bash",
 | 
				
			||||||
			})
 | 
									"-c",
 | 
				
			||||||
 | 
									"cat $HOME/.config/alr/alr.toml",
 | 
				
			||||||
 | 
								))
 | 
				
			||||||
 | 
								assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								err = r.Exec(e2e.NewCommand(
 | 
				
			||||||
 | 
									"alr",
 | 
				
			||||||
 | 
									"removerepo",
 | 
				
			||||||
 | 
									"--name",
 | 
				
			||||||
 | 
									"alr-repo",
 | 
				
			||||||
 | 
								))
 | 
				
			||||||
 | 
								assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								var buf bytes.Buffer
 | 
				
			||||||
 | 
								err = r.Exec(e2e.NewCommand(
 | 
				
			||||||
 | 
									"bash",
 | 
				
			||||||
 | 
									"-c",
 | 
				
			||||||
 | 
									"cat $HOME/.config/alr/alr.toml",
 | 
				
			||||||
 | 
								), e2e.WithExecOptionStdout(&buf))
 | 
				
			||||||
 | 
								assert.NoError(t, err)
 | 
				
			||||||
 | 
								assert.Contains(t, buf.String(), "rootCmd")
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								e2e-tests/issue_53_lc_all_c_info_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								e2e-tests/issue_53_lc_all_c_info_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					// ALR - Any Linux Repository
 | 
				
			||||||
 | 
					// Copyright (C) 2025 Евгений Храмов
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					// it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					// the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					// (at your option) any later version.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					// GNU General Public License for more details.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:build e2e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package e2etests_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/alecthomas/assert/v2"
 | 
				
			||||||
 | 
						"github.com/efficientgo/e2e"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestE2EIssue53LcAllCInfo(t *testing.T) {
 | 
				
			||||||
 | 
						dockerMultipleRun(
 | 
				
			||||||
 | 
							t,
 | 
				
			||||||
 | 
							"issue-53-lc-all-c-info",
 | 
				
			||||||
 | 
							COMMON_SYSTEMS,
 | 
				
			||||||
 | 
							func(t *testing.T, r e2e.Runnable) {
 | 
				
			||||||
 | 
								err := r.Exec(e2e.NewCommand(
 | 
				
			||||||
 | 
									"alr",
 | 
				
			||||||
 | 
									"addrepo",
 | 
				
			||||||
 | 
									"--name",
 | 
				
			||||||
 | 
									"alr-repo",
 | 
				
			||||||
 | 
									"--url",
 | 
				
			||||||
 | 
									"https://gitea.plemya-x.ru/Plemya-x/alr-repo.git",
 | 
				
			||||||
 | 
								))
 | 
				
			||||||
 | 
								assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								err = r.Exec(e2e.NewCommand(
 | 
				
			||||||
 | 
									"bash",
 | 
				
			||||||
 | 
									"-c",
 | 
				
			||||||
 | 
									"LANG=C alr info alr-bin",
 | 
				
			||||||
 | 
								))
 | 
				
			||||||
 | 
								assert.NoError(t, err)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							@@ -8,6 +8,7 @@ require (
 | 
				
			|||||||
	gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.1
 | 
						gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.1
 | 
				
			||||||
	github.com/AlecAivazis/survey/v2 v2.3.7
 | 
						github.com/AlecAivazis/survey/v2 v2.3.7
 | 
				
			||||||
	github.com/PuerkitoBio/purell v1.2.0
 | 
						github.com/PuerkitoBio/purell v1.2.0
 | 
				
			||||||
 | 
						github.com/alecthomas/assert/v2 v2.2.1
 | 
				
			||||||
	github.com/alecthomas/chroma/v2 v2.9.1
 | 
						github.com/alecthomas/chroma/v2 v2.9.1
 | 
				
			||||||
	github.com/charmbracelet/bubbles v0.20.0
 | 
						github.com/charmbracelet/bubbles v0.20.0
 | 
				
			||||||
	github.com/charmbracelet/bubbletea v1.2.4
 | 
						github.com/charmbracelet/bubbletea v1.2.4
 | 
				
			||||||
@@ -48,6 +49,7 @@ require (
 | 
				
			|||||||
	github.com/Masterminds/sprig/v3 v3.2.3 // indirect
 | 
						github.com/Masterminds/sprig/v3 v3.2.3 // indirect
 | 
				
			||||||
	github.com/Microsoft/go-winio v0.6.1 // indirect
 | 
						github.com/Microsoft/go-winio v0.6.1 // indirect
 | 
				
			||||||
	github.com/ProtonMail/go-crypto v1.0.0 // indirect
 | 
						github.com/ProtonMail/go-crypto v1.0.0 // indirect
 | 
				
			||||||
 | 
						github.com/alecthomas/repr v0.2.0 // indirect
 | 
				
			||||||
	github.com/andybalholm/brotli v1.0.4 // indirect
 | 
						github.com/andybalholm/brotli v1.0.4 // indirect
 | 
				
			||||||
	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
 | 
						github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
 | 
				
			||||||
	github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect
 | 
						github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect
 | 
				
			||||||
@@ -81,6 +83,7 @@ require (
 | 
				
			|||||||
	github.com/goreleaser/fileglob v1.3.0 // indirect
 | 
						github.com/goreleaser/fileglob v1.3.0 // indirect
 | 
				
			||||||
	github.com/hashicorp/errwrap v1.0.0 // indirect
 | 
						github.com/hashicorp/errwrap v1.0.0 // indirect
 | 
				
			||||||
	github.com/hashicorp/go-multierror v1.1.1 // indirect
 | 
						github.com/hashicorp/go-multierror v1.1.1 // indirect
 | 
				
			||||||
 | 
						github.com/hexops/gotextdiff v1.0.3 // indirect
 | 
				
			||||||
	github.com/huandu/xstrings v1.3.3 // indirect
 | 
						github.com/huandu/xstrings v1.3.3 // indirect
 | 
				
			||||||
	github.com/imdario/mergo v0.3.16 // indirect
 | 
						github.com/imdario/mergo v0.3.16 // indirect
 | 
				
			||||||
	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
 | 
						github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								info.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								info.go
									
									
									
									
									
								
							@@ -122,6 +122,9 @@ func InfoCmd() *cli.Command {
 | 
				
			|||||||
				slog.Error("Can't detect system language", "err", err)
 | 
									slog.Error("Can't detect system language", "err", err)
 | 
				
			||||||
				os.Exit(1)
 | 
									os.Exit(1)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if systemLang == "" {
 | 
				
			||||||
 | 
									systemLang = "en"
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if !all {
 | 
								if !all {
 | 
				
			||||||
				info, err := distro.ParseOSRelease(ctx)
 | 
									info, err := distro.ParseOSRelease(ctx)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,15 +138,15 @@ msgstr ""
 | 
				
			|||||||
msgid "Error finding packages"
 | 
					msgid "Error finding packages"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:129
 | 
					#: info.go:132
 | 
				
			||||||
msgid "Error parsing os-release file"
 | 
					msgid "Error parsing os-release file"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:138
 | 
					#: info.go:141
 | 
				
			||||||
msgid "Error resolving overrides"
 | 
					msgid "Error resolving overrides"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:147 info.go:153
 | 
					#: info.go:150 info.go:156
 | 
				
			||||||
msgid "Error encoding script variables"
 | 
					msgid "Error encoding script variables"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -477,7 +477,7 @@ msgstr ""
 | 
				
			|||||||
msgid "Error opening config file"
 | 
					msgid "Error opening config file"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:88 repo.go:153
 | 
					#: repo.go:88 repo.go:153 repo.go:165
 | 
				
			||||||
msgid "Error encoding config"
 | 
					msgid "Error encoding config"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -497,11 +497,11 @@ msgstr ""
 | 
				
			|||||||
msgid "Error removing repo directory"
 | 
					msgid "Error removing repo directory"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:170
 | 
					#: repo.go:176
 | 
				
			||||||
msgid "Error removing packages from database"
 | 
					msgid "Error removing packages from database"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:182
 | 
					#: repo.go:188
 | 
				
			||||||
msgid "Pull all repositories that have changed"
 | 
					msgid "Pull all repositories that have changed"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,15 +145,15 @@ msgstr "Для команды info ожидался хотя бы 1 аргуме
 | 
				
			|||||||
msgid "Error finding packages"
 | 
					msgid "Error finding packages"
 | 
				
			||||||
msgstr "Ошибка при поиске пакетов"
 | 
					msgstr "Ошибка при поиске пакетов"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:129
 | 
					#: info.go:132
 | 
				
			||||||
msgid "Error parsing os-release file"
 | 
					msgid "Error parsing os-release file"
 | 
				
			||||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
 | 
					msgstr "Ошибка при разборе файла выпуска операционной системы"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:138
 | 
					#: info.go:141
 | 
				
			||||||
msgid "Error resolving overrides"
 | 
					msgid "Error resolving overrides"
 | 
				
			||||||
msgstr "Ошибка устранения переорпеделений"
 | 
					msgstr "Ошибка устранения переорпеделений"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: info.go:147 info.go:153
 | 
					#: info.go:150 info.go:156
 | 
				
			||||||
msgid "Error encoding script variables"
 | 
					msgid "Error encoding script variables"
 | 
				
			||||||
msgstr "Ошибка кодирования переменных скрита"
 | 
					msgstr "Ошибка кодирования переменных скрита"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -497,7 +497,7 @@ msgstr "URL-адрес нового репозитория"
 | 
				
			|||||||
msgid "Error opening config file"
 | 
					msgid "Error opening config file"
 | 
				
			||||||
msgstr "Ошибка при открытии конфигурационного файла"
 | 
					msgstr "Ошибка при открытии конфигурационного файла"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:88 repo.go:153
 | 
					#: repo.go:88 repo.go:153 repo.go:165
 | 
				
			||||||
msgid "Error encoding config"
 | 
					msgid "Error encoding config"
 | 
				
			||||||
msgstr "Ошибка при кодировании конфигурации"
 | 
					msgstr "Ошибка при кодировании конфигурации"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -517,11 +517,11 @@ msgstr "Репозитория не существует"
 | 
				
			|||||||
msgid "Error removing repo directory"
 | 
					msgid "Error removing repo directory"
 | 
				
			||||||
msgstr "Ошибка при удалении каталога репозитория"
 | 
					msgstr "Ошибка при удалении каталога репозитория"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:170
 | 
					#: repo.go:176
 | 
				
			||||||
msgid "Error removing packages from database"
 | 
					msgid "Error removing packages from database"
 | 
				
			||||||
msgstr "Ошибка при удалении пакетов из базы данных"
 | 
					msgstr "Ошибка при удалении пакетов из базы данных"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: repo.go:182
 | 
					#: repo.go:188
 | 
				
			||||||
msgid "Pull all repositories that have changed"
 | 
					msgid "Pull all repositories that have changed"
 | 
				
			||||||
msgstr "Скачать все изменённые репозитории"
 | 
					msgstr "Скачать все изменённые репозитории"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								repo.go
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								repo.go
									
									
									
									
									
								
							@@ -160,6 +160,12 @@ func RemoveRepoCmd() *cli.Command {
 | 
				
			|||||||
				os.Exit(1)
 | 
									os.Exit(1)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								err = cfg.Save(cfgFl)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									slog.Error(gotext.Get("Error encoding config"), "err", err)
 | 
				
			||||||
 | 
									os.Exit(1)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			db := database.New(cfg)
 | 
								db := database.New(cfg)
 | 
				
			||||||
			err = db.Init(ctx)
 | 
								err = db.Init(ctx)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user