databricks-cli/libs/patchwheel/parse_test.go

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

127 lines
3.4 KiB
Go
Raw Normal View History

2025-03-03 20:00:50 +00:00
package patchwheel
import (
"testing"
2025-03-04 12:08:28 +00:00
"time"
2025-03-03 20:00:50 +00:00
"github.com/stretchr/testify/require"
)
// TestCalculateNewVersion tests the CalculateNewVersion function.
func TestCalculateNewVersion(t *testing.T) {
tests := []struct {
2025-03-04 12:08:28 +00:00
name string
info *WheelInfo
mtime time.Time
expectedVersion string
expectedFilename string
}{
{
name: "basic version",
info: &WheelInfo{
Distribution: "mypkg",
Version: "1.2.3",
Tags: []string{"py3", "none", "any"},
},
2025-03-04 12:08:28 +00:00
mtime: time.Date(2025, 3, 4, 12, 34, 56, 0, time.UTC),
expectedVersion: "1.2.3+20250304123456",
expectedFilename: "mypkg-1.2.3+20250304123456-py3-none-any.whl",
},
{
name: "existing plus version",
info: &WheelInfo{
Distribution: "mypkg",
Version: "1.2.3+local",
Tags: []string{"py3", "none", "any"},
},
2025-03-04 12:08:28 +00:00
mtime: time.Date(2025, 3, 4, 12, 34, 56, 0, time.UTC),
expectedVersion: "1.2.3+20250304123456",
expectedFilename: "mypkg-1.2.3+20250304123456-py3-none-any.whl",
},
{
name: "complex distribution name",
info: &WheelInfo{
Distribution: "my-pkg-name",
Version: "1.2.3",
Tags: []string{"py3", "none", "any"},
},
2025-03-04 12:08:28 +00:00
mtime: time.Date(2025, 3, 4, 12, 34, 56, 0, time.UTC),
expectedVersion: "1.2.3+20250304123456",
expectedFilename: "my-pkg-name-1.2.3+20250304123456-py3-none-any.whl",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
newVersion, newFilename := CalculateNewVersion(tt.info, tt.mtime)
if newVersion != tt.expectedVersion {
t.Errorf("expected version %s, got %s", tt.expectedVersion, newVersion)
}
if newFilename != tt.expectedFilename {
t.Errorf("expected filename %s, got %s", tt.expectedFilename, newFilename)
}
})
}
}
2025-03-03 20:00:50 +00:00
// TestParseWheelFilename tests the ParseWheelFilename function.
func TestParseWheelFilename(t *testing.T) {
tests := []struct {
filename string
wantDistribution string
wantVersion string
wantTags []string
wantErr bool
}{
{
filename: "myproj-0.1.0-py3-none-any.whl",
wantDistribution: "myproj",
wantVersion: "0.1.0",
wantTags: []string{"py3", "none", "any"},
wantErr: false,
},
{
filename: "myproj-0.1.0+20240303123456-py3-none-any.whl",
wantDistribution: "myproj",
wantVersion: "0.1.0+20240303123456",
wantTags: []string{"py3", "none", "any"},
wantErr: false,
},
{
filename: "my-proj-with-hyphens-0.1.0-py3-none-any.whl",
wantDistribution: "my-proj-with-hyphens",
wantVersion: "0.1.0",
wantTags: []string{"py3", "none", "any"},
wantErr: false,
},
{
filename: "invalid-filename.txt",
wantDistribution: "",
wantVersion: "",
wantTags: nil,
wantErr: true,
},
{
filename: "not-enough-parts-py3.whl",
wantDistribution: "",
wantVersion: "",
wantTags: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.filename, func(t *testing.T) {
info, err := ParseWheelFilename(tt.filename)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.wantDistribution, info.Distribution)
require.Equal(t, tt.wantVersion, info.Version)
require.Equal(t, tt.wantTags, info.Tags)
}
})
}
}