Files
pack/core/providers/node/package_manager_test.go
T

75 lines
1.8 KiB
Go

package node
import (
"testing"
)
func TestParsePackageManagerField(t *testing.T) {
tests := []struct {
name string
packageManager string
wantName string
wantVersion string
}{
{
name: "valid package manager field",
packageManager: "[email protected]",
wantName: "pnpm",
wantVersion: "8.15.4",
},
{
name: "valid package manager field with yarn",
packageManager: "[email protected]",
wantName: "yarn",
wantVersion: "4.1.0",
},
{
name: "valid package manager field with bun",
packageManager: "[email protected]",
wantName: "bun",
wantVersion: "1.0.25",
},
{
name: "valid package manager field with yarn and SHA",
packageManager: "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa",
wantName: "yarn",
wantVersion: "3.2.3",
},
{
name: "empty package manager field",
packageManager: "",
wantName: "",
wantVersion: "",
},
{
name: "invalid format - no version",
packageManager: "pnpm",
wantName: "",
wantVersion: "",
},
{
name: "invalid format - multiple @ symbols",
packageManager: "[email protected]@extra",
wantName: "",
wantVersion: "",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var pm *string
if tt.packageManager != "" {
pm = &tt.packageManager
}
pkgJson := &PackageJson{
PackageManager: pm,
}
gotName, gotVersion := PackageManager("").parsePackageManagerField(pkgJson)
if gotName != tt.wantName || gotVersion != tt.wantVersion {
t.Errorf("parsePackageManagerField() = (%v, %v), want (%v, %v)",
gotName, gotVersion, tt.wantName, tt.wantVersion)
}
})
}
}