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  }