1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2026-06-03 18:35:08 +02:00

semconvkit: add invariant test for histogram-exclusion rule (#8370)

Fixes #8353
This commit is contained in:
Aakash T M
2026-05-27 04:21:44 +12:00
committed by GitHub
parent d0b6cbdff5
commit 36c2f1bfd1
+41
View File
@@ -4,8 +4,10 @@
package main
import (
"bytes"
"os"
"path/filepath"
"strings"
"testing"
)
@@ -42,6 +44,45 @@ func errorType(err error) {}
}
}
// TestNoInvalidObservableHistogramTypes asserts that the semconv code
// generator never emits types containing "HistogramObservable" or
// "ObservableObservable", which would indicate the histogram-exclusion
// rule in metric.go.j2 was accidentally removed or bypassed.
func TestNoInvalidObservableHistogramTypes(t *testing.T) {
t.Parallel()
semconvDir := filepath.Join("..", "..", "..", "semconv")
forbidden := [][]byte{
[]byte("HistogramObservable"),
[]byte("ObservableObservable"),
}
err := filepath.WalkDir(semconvDir, func(path string, d os.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() || filepath.Base(path) != "metric.go" || !strings.HasSuffix(filepath.Base(filepath.Dir(path)), "conv") {
return nil
}
data, err := os.ReadFile(path)
if err != nil {
return err
}
for _, term := range forbidden {
if bytes.Contains(data, term) {
t.Errorf("%s: contains forbidden substring %q", path, term)
}
}
return nil
})
if err != nil {
t.Fatalf("WalkDir(%q) error = %v", semconvDir, err)
}
}
func writeGoFile(t *testing.T, dir, pkg, src string) {
t.Helper()