Skip to content

Commit fcd5520

Browse files
committed
add test for UneededGoFiles
1 parent 25fd81c commit fcd5520

File tree

2 files changed

+59
-4
lines changed

2 files changed

+59
-4
lines changed

pkg/codegen/golang.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
"github.com/pulumi/pulumi/pkg/v3/codegen/schema"
2828
)
2929

30-
var unneededGoFiles = codegen.NewStringSet(
30+
var UnneededGoFiles = codegen.NewStringSet(
3131
// The root directory doesn't define any resources:
3232
"doc.go",
3333
"init.go",
@@ -76,7 +76,7 @@ func GenerateGo(pg *PackageGenerator, name string) (buffers map[string]*bytes.Bu
7676
return nil, fmt.Errorf("could not generate Go package: %w", err)
7777
}
7878

79-
packageRoot, err := getPackageRoot(pkg.Reference())
79+
packageRoot, err := goPackageRoot(pkg.Reference())
8080
if err != nil {
8181
return nil, fmt.Errorf("could not get package root: %w", err)
8282
}
@@ -89,7 +89,7 @@ func GenerateGo(pg *PackageGenerator, name string) (buffers map[string]*bytes.Bu
8989
newPath, _ := filepath.Rel(name, path)
9090
pkgRelPath := strings.TrimPrefix(path, packageRoot+"/")
9191

92-
if !unneededGoFiles.Has(pkgRelPath) {
92+
if !UnneededGoFiles.Has(pkgRelPath) {
9393
buffers[newPath] = bytes.NewBuffer(code)
9494
}
9595
}
@@ -98,7 +98,7 @@ func GenerateGo(pg *PackageGenerator, name string) (buffers map[string]*bytes.Bu
9898
}
9999

100100
// Similar to "packageRoot" method from pulumi/pkg/codegen/go/gen.go
101-
func getPackageRoot(pkg schema.PackageReference) (string, error) {
101+
func goPackageRoot(pkg schema.PackageReference) (string, error) {
102102
def, err := pkg.Definition()
103103
if err != nil {
104104
return "", err

tests/unneeded_go_files_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package tests
2+
3+
import (
4+
"io"
5+
"strings"
6+
"testing"
7+
8+
"github.com/pulumi/crd2pulumi/pkg/codegen"
9+
)
10+
11+
func TestUnneededGoFiles(t *testing.T) {
12+
mockCRDYaml := `---
13+
apiVersion: apiextensions.k8s.io/v1
14+
kind: CustomResourceDefinition
15+
spec:
16+
group: uneeded-go-files-test.pulumi.com
17+
names:
18+
plural: testresources
19+
singular: testresource
20+
kind: TestResource
21+
scope: Namespaced
22+
versions:
23+
- test:
24+
name: test
25+
schema:
26+
openAPIV3Schema:
27+
properties:
28+
testProperty:
29+
type: string`
30+
31+
yamlSources := []io.ReadCloser{
32+
io.NopCloser(strings.NewReader(mockCRDYaml)),
33+
}
34+
35+
// Invoke ReadPackagesFromSource
36+
pg, err := codegen.ReadPackagesFromSource("", yamlSources)
37+
if err != nil {
38+
t.Fatalf("ReadPackagesFromSource failed: %v", err)
39+
}
40+
41+
// Pick a generated file we want to exclude
42+
uneededGoFile := "uneededgofilestest/test/testResource.go"
43+
codegen.UnneededGoFiles.Add(uneededGoFile)
44+
45+
// Generate the code from the mocked CRD
46+
buffers, err := codegen.GenerateGo(pg, "crds")
47+
if err != nil {
48+
t.Fatalf("GenerateGo failed: %v", err)
49+
}
50+
51+
// Assert that buffers do not contain unneeded file
52+
if _, exists := buffers["../kubernetes/"+uneededGoFile]; exists {
53+
t.Errorf("Uneeded GO file was not excluded by GoGenerate, %s", uneededGoFile)
54+
}
55+
}

0 commit comments

Comments
 (0)