123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // Copyright 2021 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- 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)
- }
|