summaryrefslogtreecommitdiffstats
path: root/test/fixedbugs/issue56990.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixedbugs/issue56990.go')
-rw-r--r--test/fixedbugs/issue56990.go119
1 files changed, 119 insertions, 0 deletions
diff --git a/test/fixedbugs/issue56990.go b/test/fixedbugs/issue56990.go
new file mode 100644
index 0000000..4fa6d75
--- /dev/null
+++ b/test/fixedbugs/issue56990.go
@@ -0,0 +1,119 @@
+// run
+
+// Copyright 2022 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "path/filepath"
+ "testing"
+)
+
+var t *testing.T
+
+type TypeMeta struct {
+ Kind string
+ APIVersion string
+}
+
+type ObjectMeta struct {
+ Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
+ GenerateName string `json:"generateName,omitempty" protobuf:"bytes,2,opt,name=generateName"`
+ Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
+ SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,4,opt,name=selfLink"`
+}
+
+type ConfigSpec struct {
+ Disks []DiskSpec
+ StorageClass string
+}
+
+type DiskSpec struct {
+ Name string
+ Size string
+ StorageClass string
+ Annotations map[string]string
+ VolumeName string
+}
+
+// Config is the Schema for the configs API.
+type Config struct {
+ TypeMeta
+ ObjectMeta
+
+ Spec ConfigSpec
+}
+
+func findDiskSize(diskSpec *DiskSpec, configSpec *ConfigSpec) string {
+ t.Log(fmt.Sprintf("Hello World"))
+ return diskSpec.Size
+}
+
+func findStorageClassName(diskSpec *DiskSpec, configSpec *ConfigSpec) *string {
+ if diskSpec.StorageClass != "" {
+ return &diskSpec.StorageClass
+ }
+
+ if configSpec != nil {
+ for _, d := range configSpec.Disks {
+ if d.Name == diskSpec.Name {
+ if d.StorageClass != "" {
+ return &d.StorageClass
+ }
+ break
+ }
+ }
+
+ if configSpec.StorageClass != "" {
+ return &configSpec.StorageClass
+ }
+ }
+ return nil
+}
+
+func Bar(config *Config) *ConfigSpec {
+ var configSpec *ConfigSpec
+ if config != nil {
+ configSpec = &config.Spec
+ }
+ return configSpec
+}
+
+func Foo(diskSpec DiskSpec, config *Config) {
+ cs := Bar(config)
+ _ = findDiskSize(&diskSpec, cs)
+ cs = Bar(config)
+ _ = findStorageClassName(&diskSpec, cs)
+
+}
+
+func TestPanic(tt *testing.T) {
+ t = tt
+ myarray := []string{filepath.Join("..", "config", "crd", "bases")}
+
+ for i := 0; i < 1000; i++ {
+ Foo(DiskSpec{
+ Name: "DataDisk",
+ Size: "1Gi",
+ }, nil)
+ }
+
+ t.Log(myarray)
+}
+
+// Hack to run tests in a playground
+func matchString(a, b string) (bool, error) {
+ return a == b, nil
+}
+func main() {
+ testSuite := []testing.InternalTest{
+ {
+ Name: "TestPanic",
+ F: TestPanic,
+ },
+ }
+ testing.Main(matchString, testSuite, nil, nil)
+}