Skip to content

Commit

Permalink
[#144] If it is single import, do not convert into an import list
Browse files Browse the repository at this point in the history
  • Loading branch information
Ericwww authored Jan 24, 2024
1 parent 194719a commit 38044e6
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 6 deletions.
11 changes: 5 additions & 6 deletions reviser/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -378,19 +378,18 @@ func removeEmptyImportNode(f *ast.File) {
func rebuildImports(tok token.Token, commentsMetadata map[string]*commentsMetadata, imports [][]string) []ast.Spec {
var specs []ast.Spec

amountOfGroups := len(imports)
for i, group := range imports {
if i != 0 && len(group) != 0 && len(specs) != 0 {
spec := &ast.ImportSpec{Path: &ast.BasicLit{Value: "", Kind: token.STRING}}

specs = append(specs, spec)
}
for _, imprt := range group {
spec := &ast.ImportSpec{
Path: &ast.BasicLit{Value: importWithComment(imprt, commentsMetadata), Kind: tok},
}
specs = append(specs, spec)
}
if len(group) != 0 && i != amountOfGroups-1 {
spec := &ast.ImportSpec{Path: &ast.BasicLit{Value: "", Kind: token.STRING}}

specs = append(specs, spec)
}
}

return specs
Expand Down
68 changes: 68 additions & 0 deletions reviser/file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,27 @@ import (
wantChange: true,
wantErr: false,
},
{
name: "success with single std deps only",
args: args{
projectName: "github.com/incu6us/goimports-reviser",
filePath: "./testdata/example.go",
fileContent: `package testdata
import "log"
// nolint:gomnd
`,
},
want: `package testdata
import "log"
// nolint:gomnd
`,
wantChange: false,
wantErr: false,
},
{
name: "success with third-party deps only",
args: args{
Expand All @@ -297,6 +317,27 @@ import (
wantChange: true,
wantErr: false,
},
{
name: "success with single third-party deps",
args: args{
projectName: "github.com/incu6us/goimports-reviser",
filePath: "./testdata/example.go",
fileContent: `package testdata
import "golang.org/x/exp/slices"
// nolint:gomnd
`,
},
want: `package testdata
import "golang.org/x/exp/slices"
// nolint:gomnd
`,
wantChange: false,
wantErr: false,
},

{
name: "success with project deps only",
Expand Down Expand Up @@ -510,6 +551,33 @@ import (
"errors"
"fmt"
)
`,
wantChange: false,
wantErr: false,
},
{
name: "preserves cgo import with single std deps",
args: args{
projectName: "github.com/incu6us/goimports-reviser",
filePath: "./testdata/cgo_example.go",
fileContent: `package testdata
/*
#include <stdlib.h>
*/
import "C"
import "errors"
`,
},
want: `package testdata
/*
#include <stdlib.h>
*/
import "C"
import "errors"
`,
wantChange: false,
wantErr: false,
Expand Down

0 comments on commit 38044e6

Please sign in to comment.