From 770a0ea68313dea17502b9daeb51af965e9544c0 Mon Sep 17 00:00:00 2001 From: Sahilb315 Date: Mon, 2 Jun 2025 20:13:54 +0530 Subject: [PATCH] test: add test for pypi dependency parse function --- packagemanager/pypi_resolver_test.go | 104 +++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/packagemanager/pypi_resolver_test.go b/packagemanager/pypi_resolver_test.go index d39eba7..1f6a347 100644 --- a/packagemanager/pypi_resolver_test.go +++ b/packagemanager/pypi_resolver_test.go @@ -96,3 +96,107 @@ func TestPipGetLatestMatchingVersion(t *testing.T) { }) } } + +func TestPypiParseDependency(t *testing.T) { + tests := []struct { + name string + input string + wantName string + wantVersion string + wantExtra string + }{ + { + name: "simple package without version", + input: "requests", + wantName: "requests", + wantVersion: "", + wantExtra: "", + }, + { + name: "package with exact version", + input: "requests==2.28.1", + wantName: "requests", + wantVersion: "==2.28.1", + wantExtra: "", + }, + { + name: "package with greater than version", + input: "django>=4.2.0", + wantName: "django", + wantVersion: ">=4.2.0", + wantExtra: "", + }, + { + name: "package with less than version", + input: "pylint<3.0.0", + wantName: "pylint", + wantVersion: "<3.0.0", + wantExtra: "", + }, + { + name: "package with not equal version", + input: "pytest!=3.0.0", + wantName: "pytest", + wantVersion: "!=3.0.0", + wantExtra: "", + }, + { + name: "package with compatible release version", + input: "sphinx~=4.0.0", + wantName: "sphinx", + wantVersion: "~=4.0.0", + wantExtra: "", + }, + { + name: "package with extra", + input: "requests;extra=='security'", + wantName: "requests", + wantVersion: "", + wantExtra: "security", + }, + { + name: "package with version and extra", + input: "requests>=2.28.1;extra=='security'", + wantName: "requests", + wantVersion: ">=2.28.1", + wantExtra: "security", + }, + { + name: "package with single quotes in extra", + input: "django>=4.2.0;extra=='testing'", + wantName: "django", + wantVersion: ">=4.2.0", + wantExtra: "testing", + }, + { + name: "package with double quotes in extra", + input: "django>=4.2.0;extra==\"testing\"", + wantName: "django", + wantVersion: ">=4.2.0", + wantExtra: "testing", + }, + { + name: "package with multiple version constraints", + input: "requests>=2.28.1,<3.0.0", + wantName: "requests", + wantVersion: ">=2.28.1,<3.0.0", + wantExtra: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotName, gotVersion, gotExtra := pypiParseDependency(tt.input) + + if gotName != tt.wantName { + t.Errorf("pypiParseDependency() gotName = %v, want %v", gotName, tt.wantName) + } + if gotVersion != tt.wantVersion { + t.Errorf("pypiParseDependency() gotVersion = %v, want %v", gotVersion, tt.wantVersion) + } + if gotExtra != tt.wantExtra { + t.Errorf("pypiParseDependency() gotExtra = %v, want %v", gotExtra, tt.wantExtra) + } + }) + } +}