Files
trivy/internal/testutil/image.go
Teppei Fukuda bcfc37bb16 test: define constants for test images (#7739)
Signed-off-by: knqyf263 <knqyf263@gmail.com>
Co-authored-by: DmitriyLewen <91113035+DmitriyLewen@users.noreply.github.com>
2024-10-16 23:41:59 +00:00

68 lines
1.3 KiB
Go

package testutil
import (
"bufio"
"fmt"
"os"
"path/filepath"
"runtime"
"strings"
)
var (
testImages string
testVMImages string
)
func init() {
_, b, _, _ := runtime.Caller(0)
currentDir := filepath.Dir(b)
f, err := os.Open(filepath.Join(currentDir, "..", "..", "integration", "testimages.ini"))
if err != nil {
panic(err)
}
defer f.Close()
scanner := bufio.NewScanner(f)
for scanner.Scan() {
if strings.HasPrefix(scanner.Text(), "#") {
continue
}
parts := strings.SplitN(scanner.Text(), "=", 2)
if len(parts) == 2 {
key := strings.TrimSpace(parts[0])
value := strings.TrimSpace(parts[1])
switch key {
case "TEST_IMAGES":
testImages = value
case "TEST_VM_IMAGES":
testVMImages = value
}
}
}
if err = scanner.Err(); err != nil {
panic(err)
}
}
func ImageName(subpath, tag, digest string) string {
return imageName(testImages, subpath, tag, digest)
}
func VMImageName(subpath, tag, digest string) string {
return imageName(testVMImages, subpath, tag, digest)
}
func imageName(img, subpath, tag, digest string) string {
if subpath != "" {
img = fmt.Sprintf("%s/%s", img, subpath)
}
if tag != "" {
img = fmt.Sprintf("%s:%s", img, tag)
}
if digest != "" {
img = fmt.Sprintf("%s@%s", img, digest)
}
return img
}