tests/thirdparty: multiple packages per project (#262)
This commit is contained in:
committed by
GitHub
parent
96c4d85995
commit
84071ae4f9
91
tests/thirdparty/config_test.go
vendored
91
tests/thirdparty/config_test.go
vendored
@@ -26,46 +26,57 @@ func TestValidateErrors(t *testing.T) {
|
||||
ErrorSubstring: "missing commands",
|
||||
},
|
||||
{
|
||||
Name: "package_missing_default_branch",
|
||||
Item: &Package{
|
||||
Name: "project_missing_default_branch",
|
||||
Item: &Project{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
},
|
||||
ErrorSubstring: "missing default branch",
|
||||
},
|
||||
{
|
||||
Name: "package_missing_version",
|
||||
Item: &Package{
|
||||
Name: "project_missing_version",
|
||||
Item: &Project{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
DefaultBranch: "main",
|
||||
},
|
||||
ErrorSubstring: "missing version",
|
||||
},
|
||||
{
|
||||
Name: "package_missing_module",
|
||||
Item: &Package{
|
||||
Name: "project_missing_packages",
|
||||
Item: &Project{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
DefaultBranch: "main",
|
||||
Version: "v1.0.1",
|
||||
Version: "v0.1.1",
|
||||
},
|
||||
ErrorSubstring: "missing packages",
|
||||
},
|
||||
{
|
||||
Name: "project_package_error",
|
||||
Item: &Project{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
DefaultBranch: "main",
|
||||
Version: "v0.1.1",
|
||||
Packages: []*Package{
|
||||
{},
|
||||
},
|
||||
},
|
||||
ErrorSubstring: "package root: missing module",
|
||||
},
|
||||
{
|
||||
Name: "package_missing_module",
|
||||
Item: &Package{},
|
||||
ErrorSubstring: "missing module",
|
||||
},
|
||||
{
|
||||
Name: "package_no_generate_commands",
|
||||
Item: &Package{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
DefaultBranch: "main",
|
||||
Version: "v1.0.1",
|
||||
Module: "avo/go.mod",
|
||||
Module: "avo/go.mod",
|
||||
},
|
||||
ErrorSubstring: "no generate commands",
|
||||
},
|
||||
{
|
||||
Name: "package_invalid_generate_commands",
|
||||
Item: &Package{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
DefaultBranch: "main",
|
||||
Version: "v1.0.1",
|
||||
Module: "avo/go.mod",
|
||||
Module: "avo/go.mod",
|
||||
Generate: []*Step{
|
||||
{},
|
||||
},
|
||||
@@ -73,8 +84,8 @@ func TestValidateErrors(t *testing.T) {
|
||||
ErrorSubstring: "generate step: missing name",
|
||||
},
|
||||
{
|
||||
Name: "packages_invalid_package",
|
||||
Item: Packages{
|
||||
Name: "projects_invalid_package",
|
||||
Item: Projects{
|
||||
{
|
||||
Repository: GithubRepository{Owner: "octocat", Name: "hello-world"},
|
||||
},
|
||||
@@ -96,17 +107,17 @@ func TestValidateErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadPackagesBad(t *testing.T) {
|
||||
func TestLoadProjectsBad(t *testing.T) {
|
||||
r := strings.NewReader(`[{"unknown_field": "value"}]`)
|
||||
_, err := LoadPackages(r)
|
||||
_, err := LoadProjects(r)
|
||||
if err == nil {
|
||||
t.Fatal("expected non-nil error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadPackagesFileNotExist(t *testing.T) {
|
||||
pkgs, err := LoadPackagesFile("does_not_exist")
|
||||
if pkgs != nil {
|
||||
func TestLoadProjectsFileNotExist(t *testing.T) {
|
||||
prjs, err := LoadProjectsFile("does_not_exist")
|
||||
if prjs != nil {
|
||||
t.Fatal("expected nil return")
|
||||
}
|
||||
if err == nil {
|
||||
@@ -114,24 +125,24 @@ func TestLoadPackagesFileNotExist(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPackagesFileValid(t *testing.T) {
|
||||
pkgs, err := LoadPackagesFile("packages.json")
|
||||
func TestProjectsFileValid(t *testing.T) {
|
||||
prjs, err := LoadProjectsFile("projects.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, pkg := range pkgs {
|
||||
t.Logf("read: %s", pkg.ID())
|
||||
for _, prj := range prjs {
|
||||
t.Logf("read: %s", prj.ID())
|
||||
}
|
||||
if len(pkgs) == 0 {
|
||||
if len(prjs) == 0 {
|
||||
t.Fatal("no packages loaded")
|
||||
}
|
||||
if err := pkgs.Validate(); err != nil {
|
||||
if err := prjs.Validate(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPackagesFileStepsValid(t *testing.T) {
|
||||
pkgs, err := LoadPackagesFile("packages.json")
|
||||
func TestProjectsFileStepsValid(t *testing.T) {
|
||||
prjs, err := LoadProjectsFile("projects.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -139,34 +150,36 @@ func TestPackagesFileStepsValid(t *testing.T) {
|
||||
AvoDirectory: "avo",
|
||||
RepositoryDirectory: "repo",
|
||||
}
|
||||
for _, pkg := range pkgs {
|
||||
for _, s := range pkg.Steps(c) {
|
||||
if err := s.Validate(); err != nil {
|
||||
t.Errorf("package %s: %s", pkg.ID(), err)
|
||||
for _, prj := range prjs {
|
||||
for _, pkg := range prj.Packages {
|
||||
for _, s := range pkg.Steps(c) {
|
||||
if err := s.Validate(); err != nil {
|
||||
t.Errorf("project %s: package %s: %s", prj.ID(), pkg.Name(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPackagesFileRoundtrip(t *testing.T) {
|
||||
pkgs, err := LoadPackagesFile("packages.json")
|
||||
func TestProjectsFileRoundtrip(t *testing.T) {
|
||||
prjs, err := LoadProjectsFile("projects.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Write and read back.
|
||||
buf := bytes.NewBuffer(nil)
|
||||
if err := StorePackages(buf, pkgs); err != nil {
|
||||
if err := StoreProjects(buf, prjs); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
roundtrip, err := LoadPackages(buf)
|
||||
roundtrip, err := LoadProjects(buf)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Should be identical.
|
||||
if !reflect.DeepEqual(pkgs, roundtrip) {
|
||||
if !reflect.DeepEqual(prjs, roundtrip) {
|
||||
t.Fatal("roundtrip mismatch")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user