From 3b27b772f4c05c13f6ca41abfbe9991a17019728 Mon Sep 17 00:00:00 2001 From: Syasusu Date: Mon, 11 Dec 2023 20:51:36 +0100 Subject: [PATCH] [#144] If it is single import, do not convert into an import list --- reviser/file.go | 15 ++++++---- reviser/file_test.go | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 6 deletions(-) diff --git a/reviser/file.go b/reviser/file.go index 9686895..56e0bec 100644 --- a/reviser/file.go +++ b/reviser/file.go @@ -378,19 +378,22 @@ 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) + var importSlice []string + for _, group := range imports { + importSlice = append(importSlice, group...) + } 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 diff --git a/reviser/file_test.go b/reviser/file_test.go index a621f07..7927e18 100644 --- a/reviser/file_test.go +++ b/reviser/file_test.go @@ -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{ @@ -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", @@ -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 +*/ +import "C" + +import "errors" +`, + }, + want: `package testdata + +/* +#include +*/ +import "C" + +import "errors" `, wantChange: false, wantErr: false,