88 lines
2.7 KiB
Go
88 lines
2.7 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package gendoc_test
|
|
|
|
import (
|
|
"github.com/hyperledger/fabric/common/metrics"
|
|
"github.com/hyperledger/fabric/common/metrics/gendoc"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Options", func() {
|
|
It("finds standard options", func() {
|
|
f, err := ParseFile("testdata/basic.go")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(f).NotTo(BeNil())
|
|
|
|
options, err := gendoc.FileOptions(f)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(options).To(HaveLen(3))
|
|
|
|
for _, opt := range options {
|
|
switch opt := opt.(type) {
|
|
case metrics.CounterOpts:
|
|
Expect(opt).To(Equal(metrics.CounterOpts{
|
|
Namespace: "fixtures",
|
|
Name: "counter",
|
|
Help: "This is some help text that is more than a few words long. It really can be quite long. Really long.",
|
|
LabelNames: []string{"label_one", "label_two", "missing_help"},
|
|
LabelHelp: map[string]string{
|
|
"label_one": "this is a really cool label that is the first of many",
|
|
"label_two": "short and sweet",
|
|
},
|
|
StatsdFormat: "%{#fqname}.%{label_one}.%{label_two}",
|
|
}))
|
|
|
|
case metrics.GaugeOpts:
|
|
Expect(opt).To(Equal(metrics.GaugeOpts{
|
|
Namespace: "fixtures",
|
|
Name: "gauge",
|
|
Help: "This is some help text that is more than a few words long. It really can be quite long. Really long. This is some help text that is more than a few words long. It really can be quite long. Really long.",
|
|
LabelNames: []string{"label_one", "label_two"},
|
|
StatsdFormat: "%{#fqname}.%{label_one}.%{label_two}",
|
|
}))
|
|
|
|
case metrics.HistogramOpts:
|
|
Expect(opt).To(Equal(metrics.HistogramOpts{
|
|
Namespace: "fixtures",
|
|
Name: "histogram",
|
|
Help: "This is some help text",
|
|
LabelNames: []string{"label_one", "label_two"},
|
|
LabelHelp: map[string]string{
|
|
"label_one": "This is a very long help message for label_one, which could be really, really long, and it may never end...",
|
|
},
|
|
StatsdFormat: "%{#fqname}.%{label_one}.%{label_two}",
|
|
}))
|
|
|
|
default:
|
|
Fail("unexpected option")
|
|
}
|
|
}
|
|
})
|
|
|
|
It("finds options that use named imports", func() {
|
|
f, err := ParseFile("testdata/named_import.go")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(f).NotTo(BeNil())
|
|
|
|
options, err := gendoc.FileOptions(f)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(options).To(HaveLen(3))
|
|
})
|
|
|
|
It("ignores variables that are tagged", func() {
|
|
f, err := ParseFile("testdata/ignored.go")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(f).NotTo(BeNil())
|
|
|
|
options, err := gendoc.FileOptions(f)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(options).To(BeEmpty())
|
|
})
|
|
})
|