Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.5 KiB
125 lines
2.5 KiB
// Copyright 2021 The Gitea Authors. All rights reserved. |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package codeformat |
|
|
|
import ( |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestFormatImportsSimple(t *testing.T) { |
|
formatted, err := formatGoImports([]byte(` |
|
package codeformat |
|
|
|
import ( |
|
"github.com/stretchr/testify/assert" |
|
"testing" |
|
) |
|
`)) |
|
|
|
expected := ` |
|
package codeformat |
|
|
|
import ( |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
` |
|
|
|
assert.NoError(t, err) |
|
assert.Equal(t, expected, string(formatted)) |
|
} |
|
|
|
func TestFormatImportsGroup(t *testing.T) { |
|
// gofmt/goimports won't group the packages, for example, they produce such code: |
|
// "bytes" |
|
// "image" |
|
// (a blank line) |
|
// "fmt" |
|
// "image/color/palette" |
|
// our formatter does better, and these packages are grouped into one. |
|
|
|
formatted, err := formatGoImports([]byte(` |
|
package test |
|
|
|
import ( |
|
"bytes" |
|
"fmt" |
|
"image" |
|
"image/color" |
|
|
|
_ "image/gif" // for processing gif images |
|
_ "image/jpeg" // for processing jpeg images |
|
_ "image/png" // for processing png images |
|
|
|
"code.gitea.io/other/package" |
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
"code.gitea.io/gitea/modules/util" |
|
|
|
"xorm.io/the/package" |
|
|
|
"github.com/issue9/identicon" |
|
"github.com/nfnt/resize" |
|
"github.com/oliamb/cutter" |
|
) |
|
`)) |
|
|
|
expected := ` |
|
package test |
|
|
|
import ( |
|
"bytes" |
|
"fmt" |
|
"image" |
|
"image/color" |
|
|
|
_ "image/gif" // for processing gif images |
|
_ "image/jpeg" // for processing jpeg images |
|
_ "image/png" // for processing png images |
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
"code.gitea.io/gitea/modules/util" |
|
|
|
"code.gitea.io/other/package" |
|
"github.com/issue9/identicon" |
|
"github.com/nfnt/resize" |
|
"github.com/oliamb/cutter" |
|
"xorm.io/the/package" |
|
) |
|
` |
|
|
|
assert.NoError(t, err) |
|
assert.Equal(t, expected, string(formatted)) |
|
} |
|
|
|
func TestFormatImportsInvalidComment(t *testing.T) { |
|
// why we shouldn't write comments between imports: it breaks the grouping of imports |
|
// for example: |
|
// "pkg1" |
|
// "pkg2" |
|
// // a comment |
|
// "pkgA" |
|
// "pkgB" |
|
// the comment splits the packages into two groups, pkg1/2 are sorted separately, pkgA/B are sorted separately |
|
// we don't want such code, so the code should be: |
|
// "pkg1" |
|
// "pkg2" |
|
// "pkgA" // a comment |
|
// "pkgB" |
|
|
|
_, err := formatGoImports([]byte(` |
|
package test |
|
|
|
import ( |
|
"image/jpeg" |
|
// for processing gif images |
|
"image/gif" |
|
) |
|
`)) |
|
assert.ErrorIs(t, err, errInvalidCommentBetweenImports) |
|
}
|
|
|