66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package integration
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/marte-community/marte-dev-tools/internal/index"
|
|
"github.com/marte-community/marte-dev-tools/internal/parser"
|
|
"github.com/marte-community/marte-dev-tools/internal/validator"
|
|
)
|
|
|
|
func TestGlobalPragmaDebug(t *testing.T) {
|
|
content := `//! allow(implicit): Debugging
|
|
//! allow(unused): Debugging
|
|
+Data={Class=ReferenceContainer}
|
|
+GAM={Class=IOGAM InputSignals={Impl={DataSource=Data Type=uint32}}}
|
|
+UnusedGAM={Class=IOGAM}
|
|
`
|
|
p := parser.NewParser(content)
|
|
config, err := p.Parse()
|
|
if err != nil {
|
|
t.Fatalf("Parse failed: %v", err)
|
|
}
|
|
|
|
// Check if pragma parsed
|
|
if len(config.Pragmas) == 0 {
|
|
t.Fatal("Pragma not parsed")
|
|
}
|
|
t.Logf("Parsed Pragma 0: %s", config.Pragmas[0].Text)
|
|
|
|
idx := index.NewProjectTree()
|
|
idx.AddFile("debug.marte", config)
|
|
idx.ResolveReferences()
|
|
|
|
// Check if added to GlobalPragmas
|
|
pragmas, ok := idx.GlobalPragmas["debug.marte"]
|
|
if !ok || len(pragmas) == 0 {
|
|
t.Fatal("GlobalPragmas not populated")
|
|
}
|
|
t.Logf("Global Pragma stored: %s", pragmas[0])
|
|
|
|
v := validator.NewValidator(idx, ".")
|
|
v.ValidateProject()
|
|
v.CheckUnused() // Must call this for unused check!
|
|
|
|
foundImplicitWarning := false
|
|
foundUnusedWarning := false
|
|
for _, d := range v.Diagnostics {
|
|
if strings.Contains(d.Message, "Implicitly Defined Signal") {
|
|
foundImplicitWarning = true
|
|
t.Logf("Found warning: %s", d.Message)
|
|
}
|
|
if strings.Contains(d.Message, "Unused GAM") {
|
|
foundUnusedWarning = true
|
|
t.Logf("Found warning: %s", d.Message)
|
|
}
|
|
}
|
|
|
|
if foundImplicitWarning {
|
|
t.Error("Expected implicit warning to be suppressed")
|
|
}
|
|
if foundUnusedWarning {
|
|
t.Error("Expected unused warning to be suppressed")
|
|
}
|
|
}
|