80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
package registry
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestProjectRegistryKeepsProjectsIsolated(t *testing.T) {
|
|
root := t.TempDir()
|
|
projects, err := NewProjectRegistry(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, ssl, err := projects.Ensure("ssl", "SSL", "证书项目")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, smail, err := projects.Ensure("smail", "Smail", "邮件项目")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := ssl.AddPackage(Package{
|
|
Name: "shared",
|
|
Version: "1.0.0",
|
|
Platform: "linux",
|
|
Architecture: "amd64",
|
|
Status: "published",
|
|
}, strings.NewReader("ssl")); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := smail.AddPackage(Package{
|
|
Name: "shared",
|
|
Version: "1.0.0",
|
|
Platform: "linux",
|
|
Architecture: "amd64",
|
|
Status: "published",
|
|
}, strings.NewReader("smail")); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
sslItem, ok := ssl.Latest("shared")
|
|
if !ok || sslItem.SHA256 == "" {
|
|
t.Fatal("SSL 项目未保存包")
|
|
}
|
|
smailItem, ok := smail.Latest("shared")
|
|
if !ok || smailItem.SHA256 == "" {
|
|
t.Fatal("Smail 项目未保存包")
|
|
}
|
|
if sslItem.SHA256 == smailItem.SHA256 {
|
|
t.Fatal("不同项目不应共享同一个包内容")
|
|
}
|
|
if len(projects.List()) != 2 {
|
|
t.Fatalf("项目数量错误:%d", len(projects.List()))
|
|
}
|
|
|
|
reloaded, err := NewProjectRegistry(root)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
store, ok := reloaded.Store("ssl")
|
|
if !ok {
|
|
t.Fatal("重载后找不到 SSL 项目")
|
|
}
|
|
if item, ok := store.Latest("shared"); !ok || item.SHA256 == "" {
|
|
t.Fatalf("项目包重载结果异常:%+v", item)
|
|
}
|
|
}
|
|
|
|
func TestValidateProjectID(t *testing.T) {
|
|
for _, value := range []string{"ssl", "Smail_2", "release.center"} {
|
|
if err := ValidateProjectID(value); err != nil {
|
|
t.Errorf("项目标识 %q 不应失败:%v", value, err)
|
|
}
|
|
}
|
|
for _, value := range []string{"", "../ssl", "项目", "a/b"} {
|
|
if err := ValidateProjectID(value); err == nil {
|
|
t.Errorf("项目标识 %q 应该失败", value)
|
|
}
|
|
}
|
|
}
|