kittenipc/kitcom/internal/tsgo/project/ata/validatepackagename_test.go
2025-10-15 10:12:44 +03:00

108 lines
4.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package ata_test
import (
"testing"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/project/ata"
"gotest.tools/v3/assert"
)
func TestValidatePackageName(t *testing.T) {
t.Parallel()
t.Run("name cannot be too long", func(t *testing.T) {
t.Parallel()
packageName := "a"
for range 8 {
packageName += packageName
}
status, _, _ := ata.ValidatePackageName(packageName)
assert.Equal(t, status, ata.NameTooLong)
})
t.Run("package name cannot start with dot", func(t *testing.T) {
t.Parallel()
status, _, _ := ata.ValidatePackageName(".foo")
assert.Equal(t, status, ata.NameStartsWithDot)
})
t.Run("package name cannot start with underscore", func(t *testing.T) {
t.Parallel()
status, _, _ := ata.ValidatePackageName("_foo")
assert.Equal(t, status, ata.NameStartsWithUnderscore)
})
t.Run("package non URI safe characters are not supported", func(t *testing.T) {
t.Parallel()
status, _, _ := ata.ValidatePackageName(" scope ")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
status, _, _ = ata.ValidatePackageName("; say Hello from TypeScript! #")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
status, _, _ = ata.ValidatePackageName("a/b/c")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
})
t.Run("scoped package name is supported", func(t *testing.T) {
t.Parallel()
status, _, _ := ata.ValidatePackageName("@scope/bar")
assert.Equal(t, status, ata.NameOk)
})
t.Run("scoped name in scoped package name cannot start with dot", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@.scope/bar")
assert.Equal(t, status, ata.NameStartsWithDot)
assert.Equal(t, name, ".scope")
assert.Equal(t, isScopeName, true)
status, name, isScopeName = ata.ValidatePackageName("@.scope/.bar")
assert.Equal(t, status, ata.NameStartsWithDot)
assert.Equal(t, name, ".scope")
assert.Equal(t, isScopeName, true)
})
t.Run("scoped name in scoped package name cannot start with dot", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@_scope/bar")
assert.Equal(t, status, ata.NameStartsWithUnderscore)
assert.Equal(t, name, "_scope")
assert.Equal(t, isScopeName, true)
status, name, isScopeName = ata.ValidatePackageName("@_scope/_bar")
assert.Equal(t, status, ata.NameStartsWithUnderscore)
assert.Equal(t, name, "_scope")
assert.Equal(t, isScopeName, true)
})
t.Run("scope name in scoped package name with non URI safe characters are not supported", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@ scope /bar")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
assert.Equal(t, name, " scope ")
assert.Equal(t, isScopeName, true)
status, name, isScopeName = ata.ValidatePackageName("@; say Hello from TypeScript! #/bar")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
assert.Equal(t, name, "; say Hello from TypeScript! #")
assert.Equal(t, isScopeName, true)
status, name, isScopeName = ata.ValidatePackageName("@ scope / bar ")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
assert.Equal(t, name, " scope ")
assert.Equal(t, isScopeName, true)
})
t.Run("package name in scoped package name cannot start with dot", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@scope/.bar")
assert.Equal(t, status, ata.NameStartsWithDot)
assert.Equal(t, name, ".bar")
assert.Equal(t, isScopeName, false)
})
t.Run("package name in scoped package name cannot start with underscore", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@scope/_bar")
assert.Equal(t, status, ata.NameStartsWithUnderscore)
assert.Equal(t, name, "_bar")
assert.Equal(t, isScopeName, false)
})
t.Run("package name in scoped package name with non URI safe characters are not supported", func(t *testing.T) {
t.Parallel()
status, name, isScopeName := ata.ValidatePackageName("@scope/ bar ")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
assert.Equal(t, name, " bar ")
assert.Equal(t, isScopeName, false)
status, name, isScopeName = ata.ValidatePackageName("@scope/; say Hello from TypeScript! #")
assert.Equal(t, status, ata.NameContainsNonURISafeCharacters)
assert.Equal(t, name, "; say Hello from TypeScript! #")
assert.Equal(t, isScopeName, false)
})
}