Skip to content

Commit adf73a6

Browse files
committed
feat(poetry): support uv.lock and add tests
1 parent 3ba503e commit adf73a6

3 files changed

Lines changed: 55 additions & 5 deletions

File tree

module/poetry/poetry.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,21 @@ func (Inspector) InspectProject(ctx context.Context) error {
5050
for _, it := range manifest.Dependencies {
5151
cmap[it.CompName] = it.CompVersion
5252
}
53-
poetryFile := filepath.Join(task.Dir(), "poetry.lock.py")
54-
if !utils.IsFile(poetryFile) {
55-
poetryFile = filepath.Join(task.Dir(), "poetry.lock")
53+
lockFiles := []string{
54+
filepath.Join(task.Dir(), "poetry.lock.py"),
55+
filepath.Join(task.Dir(), "poetry.lock"),
56+
filepath.Join(task.Dir(), "uv.lock"),
5657
}
57-
if utils.IsFile(poetryFile) {
58-
if deps, e := parsePoetryLock(ctx, poetryFile); e == nil {
58+
for _, lockFile := range lockFiles {
59+
if !utils.IsFile(lockFile) {
60+
continue
61+
}
62+
if deps, e := parsePoetryLock(ctx, lockFile); e == nil {
5963
for _, it := range deps {
6064
cmap[it.CompName] = it.CompVersion
6165
}
6266
}
67+
break
6368
}
6469
module := model.Module{
6570
PackageManager: "poetry",

module/poetry/poetry_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package poetry
22

33
import (
4+
"context"
45
_ "embed"
56
"fmt"
7+
"os"
8+
"path/filepath"
69
"github.com/pelletier/go-toml/v2"
710
"github.com/stretchr/testify/assert"
811
"testing"
@@ -27,3 +30,22 @@ func TestParsePoetryLock(t *testing.T) {
2730
assert.Equal(t, 13, len(root.Get("package").AsArray()))
2831
assert.Equal(t, "main", root.Get("package").AsArray()[0].Get("category").v)
2932
}
33+
34+
//go:embed uv.lock
35+
var __uvLockData []byte
36+
37+
func TestParseUvLock(t *testing.T) {
38+
dir := t.TempDir()
39+
uvLockPath := filepath.Join(dir, "uv.lock")
40+
assert.NoError(t, os.WriteFile(uvLockPath, __uvLockData, 0o600))
41+
42+
deps, e := parsePoetryLock(context.Background(), uvLockPath)
43+
assert.NoError(t, e)
44+
assert.Equal(t, 3, len(deps))
45+
assert.Equal(t, "annotated-types", deps[0].CompName)
46+
assert.Equal(t, "0.7.0", deps[0].CompVersion)
47+
assert.Equal(t, "anyio", deps[1].CompName)
48+
assert.Equal(t, "4.10.0", deps[1].CompVersion)
49+
assert.Equal(t, "idna", deps[2].CompName)
50+
assert.Equal(t, "3.10", deps[2].CompVersion)
51+
}

module/poetry/uv.lock

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)