mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 02:52:16 +08:00

* test: add test for getFiles
* fix: fix getFiles test to take in a module name (not modfile name)
* move functionality unrelated to getFiles into main func
* attempt to getFiles with ParseDir, empty map returned; TODO: restore modowners_generation_script_test.go
* test
* Revert "test"
This reverts commit 2b519f3725f5709e5ace412f6bd1de4bc9f15e01.
* Revert "attempt to getFiles with ParseDir, empty map returned; TODO: restore modowners_generation_script_test.go"
This reverts commit eb952474870243110bdc1087c8468981d5eda5b2.
* attempt to getFiles with ParseDir, empty map returned; TODO: restore modowners_generation_script_test.go
* post-pairing with daniel, can access imports in a file
* clean up comments for readability
* try to return map of importName: files that import the improt
* refactor: change getFiles to accept single import name and return list of files that import it
* add log to see importPath and importName
* hasImport working
* start modowners script & add comments for hasImport
* fix modules() and uncomment main
* start script to add team names to go.mod, currently can access a map of the import and name
* 💩
* calculate root directory to point to correct go.mod
* chore: delete unnecessary files
* chore: uncomment tests
* chore: remove unnecessary comments, update documentation comments with correct cli commands
* fix: revert changes in go.mod and go.sum
* where is my dependency flag value??
* fix: owners function now can list all owners (with counts) or list a specific owner for a given dependency
* fix: change fmt.Println to logger.Println for owners func
* partial fix: modules now only prints dependencies owned by given team. -i functionality still not working properly
* fix: fix TestModules, modules
* chore: update check error message to specify user needs to assign owner to new dependency
* fix: adjust punctuation in error string
* fix: clean up comments in modowners
* chore: remove note in modowners_test
104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"log"
|
|
"strings"
|
|
"testing"
|
|
"testing/fstest"
|
|
)
|
|
|
|
func TestCommonElement(t *testing.T) {
|
|
for _, test := range []struct {
|
|
A []string
|
|
B []string
|
|
Result bool
|
|
}{
|
|
{nil, nil, false},
|
|
{[]string{"a"}, []string{"a"}, true},
|
|
{[]string{"a", "b"}, []string{"a"}, true},
|
|
{[]string{"a"}, []string{"b"}, false},
|
|
} {
|
|
if hasCommonElement(test.A, test.B) != test.Result {
|
|
t.Error(test)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCheck(t *testing.T) {
|
|
for _, test := range []struct {
|
|
description string
|
|
fileName string
|
|
contents string
|
|
args []string
|
|
valid bool
|
|
expectedOutput string
|
|
}{
|
|
{"Test valid modfile", "go.mod", `
|
|
require (
|
|
cloud.google.com/go/storage v1.28.1 // @delivery
|
|
cuelang.org/go v0.5.0 // @as-code @backend-platform
|
|
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect, @delivery
|
|
github.com/Masterminds/semver v1.5.0 // @delivery @backend-platform
|
|
)
|
|
`, []string{"go.mod"}, true, ""},
|
|
{"Test invalid modfile", "go.mod", `
|
|
require (
|
|
cloud.google.com/go/storage v1.28.1
|
|
cuelang.org/go v0.5.0 // @as-code @backend-platform
|
|
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect, @delivery
|
|
github.com/Masterminds/semver v1.5.0 // @delivery @backend-platform
|
|
)
|
|
`, []string{"go.mod"}, false, "cloud.google.com/go/storage@v1.28.1\n"},
|
|
} {
|
|
buf := &bytes.Buffer{}
|
|
logger := log.New(buf, "", 0)
|
|
filesystem := fstest.MapFS{test.fileName: &fstest.MapFile{Data: []byte(test.contents)}}
|
|
err := check(filesystem, logger, test.args)
|
|
if test.valid && err != nil {
|
|
t.Error(test.description, err)
|
|
} else if !test.valid && err == nil {
|
|
t.Error(test.description, "error expected")
|
|
}
|
|
if buf.String() != test.expectedOutput {
|
|
t.Error(test.description, buf.String())
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestModules(t *testing.T) {
|
|
buf := &bytes.Buffer{}
|
|
logger := log.New(buf, "", 0)
|
|
filesystem := fstest.MapFS{"go.mod": &fstest.MapFile{Data: []byte(`
|
|
require (
|
|
cloud.google.com/go/storage v1.28.1
|
|
cuelang.org/go v0.5.0 // @as-code @backend-platform
|
|
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect, @delivery
|
|
github.com/Masterminds/semver v1.5.0 // @delivery @backend-platform
|
|
)
|
|
`)}}
|
|
|
|
err := modules(filesystem, logger, []string{"go.mod"})
|
|
if err != nil {
|
|
t.Error(err, buf.String())
|
|
}
|
|
|
|
logs := buf.String()
|
|
|
|
// Expected results
|
|
expectedModules := []string{
|
|
"cloud.google.com/go/storage@v1.28.1",
|
|
"cuelang.org/go@v0.5.0",
|
|
"github.com/Masterminds/semver@v1.5.0",
|
|
"",
|
|
}
|
|
|
|
expectedResults := strings.Join(expectedModules, "\n")
|
|
|
|
// Compare logs to expected results
|
|
if logs != expectedResults {
|
|
t.Error(logs)
|
|
t.Error(expectedResults)
|
|
}
|
|
}
|