44package internal
55
66import (
7+ "os"
8+ "path/filepath"
79 "testing"
810
911 "github.com/stretchr/testify/require"
@@ -13,6 +15,22 @@ import (
1315 "go.opentelemetry.io/collector/pdata/pmetric"
1416)
1517
18+ func TestTwoPackagesInDirectory (t * testing.T ) {
19+ contents , err := os .ReadFile ("testdata/twopackages.yaml" )
20+ require .NoError (t , err )
21+ tempDir := t .TempDir ()
22+ metadataPath := filepath .Join (tempDir , "metadata.yaml" )
23+ // we create a trivial module and packages to avoid having invalid go checked into our test directory.
24+ require .NoError (t , os .WriteFile (filepath .Join (tempDir , "go.mod" ), []byte ("module twopackages" ), 0o600 ))
25+ require .NoError (t , os .WriteFile (filepath .Join (tempDir , "package1.go" ), []byte ("package package1" ), 0o600 ))
26+ require .NoError (t , os .WriteFile (filepath .Join (tempDir , "package2.go" ), []byte ("package package2" ), 0o600 ))
27+ require .NoError (t , os .WriteFile (metadataPath , contents , 0o600 ))
28+
29+ _ , err = LoadMetadata (metadataPath )
30+ require .Error (t , err )
31+ require .ErrorContains (t , err , "unable to determine package name: [go list -f {{.ImportPath}}] failed: (stderr) found packages package1 (package1.go) and package2 (package2.go)" )
32+ }
33+
1634func TestLoadMetadata (t * testing.T ) {
1735 tests := []struct {
1836 name string
@@ -348,7 +366,7 @@ func TestLoadMetadata(t *testing.T) {
348366 Type : "subcomponent" ,
349367 Parent : "parentComponent" ,
350368 GeneratedPackageName : "metadata" ,
351- ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal" ,
369+ ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal/testdata " ,
352370 ShortFolderName : "testdata" ,
353371 Tests : Tests {Host : "componenttest.NewNopHost()" },
354372 },
@@ -358,7 +376,7 @@ func TestLoadMetadata(t *testing.T) {
358376 want : Metadata {
359377 Type : "custom" ,
360378 GeneratedPackageName : "customname" ,
361- ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal" ,
379+ ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal/testdata " ,
362380 ShortFolderName : "testdata" ,
363381 Tests : Tests {Host : "componenttest.NewNopHost()" },
364382 Status : & Status {
@@ -376,7 +394,7 @@ func TestLoadMetadata(t *testing.T) {
376394 want : Metadata {
377395 Type : "test" ,
378396 GeneratedPackageName : "metadata" ,
379- ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal" ,
397+ ScopeName : "go.opentelemetry.io/collector/cmd/mdatagen/internal/testdata " ,
380398 ShortFolderName : "testdata" ,
381399 Tests : Tests {Host : "componenttest.NewNopHost()" },
382400 Status : & Status {
@@ -422,13 +440,17 @@ func TestLoadMetadata(t *testing.T) {
422440 want : Metadata {},
423441 wantErr : "decoding failed due to the following error(s):\n \n error decoding 'attributes[used_attr].type': invalid type: \" invalidtype\" " ,
424442 },
443+ {
444+ name : "testdata/~~this file doesn't exist~~.yaml" ,
445+ wantErr : "unable to read the file file:testdata/~~this file doesn't exist~~.yaml" ,
446+ },
425447 }
426448 for _ , tt := range tests {
427449 t .Run (tt .name , func (t * testing.T ) {
428450 got , err := LoadMetadata (tt .name )
429451 if tt .wantErr != "" {
430452 require .Error (t , err )
431- require .EqualError (t , err , tt .wantErr )
453+ require .ErrorContains (t , err , tt .wantErr )
432454 } else {
433455 require .NoError (t , err )
434456 require .Equal (t , tt .want , got )
0 commit comments