github.com/nya3jp/tast@v0.0.0-20230601000426-85c8e4d83a9b/src/go.chromium.org/tast/core/cmd/tast-lint/internal/check/forbidden_imports_test.go (about) 1 // Copyright 2018 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package check 6 7 import ( 8 "testing" 9 ) 10 11 func TestForbiddenImports_ErrorPackage(t *testing.T) { 12 const code = `package main 13 14 import ( 15 "fmt" 16 "errors" 17 18 "go.chromium.org/tast/core/errors" 19 20 "github.com/pkg/errors" 21 ) 22 ` 23 expects := []string{ 24 "testfile.go:5:2: go.chromium.org/tast/core/errors package should be used instead of errors package", 25 "testfile.go:9:2: go.chromium.org/tast/core/errors package should be used instead of github.com/pkg/errors package", 26 } 27 28 f, fs := parse(code, "testfile.go") 29 issues := ForbiddenImports(fs, f) 30 verifyIssues(t, issues, expects) 31 } 32 33 func TestForbiddenImports(t *testing.T) { 34 const code = `package main 35 36 import ( 37 "go.chromium.org/tast-tests/cros/common/foo" 38 "go.chromium.org/tast-tests/cros/local/foo" 39 "go.chromium.org/tast-tests/cros/remote/foo" 40 "some/other/package" 41 ) 42 ` 43 44 for _, tc := range []struct { 45 filepath string 46 want []string 47 }{{ 48 filepath: "src/go.chromium.org/tast-tests/cros/local/testfile.go", 49 want: []string{ 50 "src/go.chromium.org/tast-tests/cros/local/testfile.go:6:2: Non-remote package should not import remote package go.chromium.org/tast-tests/cros/remote/foo", 51 }, 52 }, { 53 filepath: "src/go.chromium.org/tast-tests/cros/remote/testfile.go", 54 want: []string{ 55 "src/go.chromium.org/tast-tests/cros/remote/testfile.go:5:2: Non-local package should not import local package go.chromium.org/tast-tests/cros/local/foo", 56 }, 57 }, { 58 filepath: "src/go.chromium.org/tast-tests/cros/common/testfile.go", 59 want: []string{ 60 "src/go.chromium.org/tast-tests/cros/common/testfile.go:5:2: Non-local package should not import local package go.chromium.org/tast-tests/cros/local/foo", 61 "src/go.chromium.org/tast-tests/cros/common/testfile.go:6:2: Non-remote package should not import remote package go.chromium.org/tast-tests/cros/remote/foo", 62 }, 63 }, { 64 filepath: "src/go.chromium.org/tast-tests/cros/common/testfile_test.go", 65 want: nil, 66 }} { 67 f, fs := parse(code, tc.filepath) 68 issues := ForbiddenImports(fs, f) 69 verifyIssues(t, issues, tc.want) 70 } 71 }