diff --git a/Makefile b/Makefile
index 68fa3f7..58d3a6a 100644
--- a/Makefile
+++ b/Makefile
@@ -88,7 +88,7 @@ i18n:
bash scripts/i18n-badge.sh
test-coverage:
- go test ./... -v -coverpkg=./... -coverprofile=coverage.out
+ go test -tags=test ./... -v -coverpkg=./... -coverprofile=coverage.out
bash scripts/coverage-badge.sh
update-deps-cve:
diff --git a/pkg/dlcache/dlcache.go b/pkg/dlcache/dlcache.go
index 1a1cbb0..4a775de 100644
--- a/pkg/dlcache/dlcache.go
+++ b/pkg/dlcache/dlcache.go
@@ -25,7 +25,6 @@ import (
"path/filepath"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
- "gitea.plemya-x.ru/Plemya-x/ALR/internal/utils"
)
type Config interface {
@@ -62,8 +61,8 @@ func (dc *DownloadCache) New(ctx context.Context, id string) (string, error) {
}
}
- // Используем специальную функцию для создания каталогов с setgid битом
- err = utils.EnsureTempDirWithRootOwner(itemPath, 0o2775)
+ // Создаем директорию с правильными правами (различается для prod и тестов)
+ err = createDir(itemPath, 0o2775)
if err != nil {
return "", err
}
diff --git a/pkg/dlcache/dlcache_prod.go b/pkg/dlcache/dlcache_prod.go
new file mode 100644
index 0000000..3040761
--- /dev/null
+++ b/pkg/dlcache/dlcache_prod.go
@@ -0,0 +1,37 @@
+//go:build !test
+
+// ALR - Any Linux Repository
+// Copyright (C) 2025 The ALR Authors
+//
+// 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 .
+
+package dlcache
+
+import (
+ "os"
+ "strings"
+
+ "gitea.plemya-x.ru/Plemya-x/ALR/internal/utils"
+)
+
+// createDir создает директорию с правильными правами для production
+func createDir(itemPath string, mode os.FileMode) error {
+ // Используем специальную функцию для создания каталогов с setgid битом только для /tmp/alr
+ // В остальных случаях используем обычное создание директории
+ if strings.HasPrefix(itemPath, "/tmp/alr") {
+ return utils.EnsureTempDirWithRootOwner(itemPath, mode)
+ } else {
+ return os.MkdirAll(itemPath, mode)
+ }
+}
\ No newline at end of file
diff --git a/pkg/dlcache/dlcache_test.go b/pkg/dlcache/dlcache_test.go
index b10bbd1..532450e 100644
--- a/pkg/dlcache/dlcache_test.go
+++ b/pkg/dlcache/dlcache_test.go
@@ -26,7 +26,6 @@ import (
"io"
"os"
"path/filepath"
- "strings"
"testing"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
diff --git a/pkg/dlcache/dlcache_test_impl.go b/pkg/dlcache/dlcache_test_impl.go
new file mode 100644
index 0000000..2e8581b
--- /dev/null
+++ b/pkg/dlcache/dlcache_test_impl.go
@@ -0,0 +1,28 @@
+//go:build test
+
+// ALR - Any Linux Repository
+// Copyright (C) 2025 The ALR Authors
+//
+// 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 .
+
+package dlcache
+
+import (
+ "os"
+)
+
+// createDir создает директорию с обычными правами для тестирования
+func createDir(itemPath string, mode os.FileMode) error {
+ return os.MkdirAll(itemPath, mode)
+}
\ No newline at end of file