Skip to content

Commit 86496d7

Browse files
author
Otto
committed
Merge pull request '[v9.0/forgejo] fix: handle renamed dependency for cargo registry' (go-gitea#5945) from bp-v9.0/forgejo-bb93d3e into v9.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5945 Reviewed-by: Gusted <[email protected]>
2 parents e43533c + de389f2 commit 86496d7

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

modules/packages/cargo/parser.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func parsePackage(r io.Reader) (*Package, error) {
9696
Target *string `json:"target"`
9797
Kind string `json:"kind"`
9898
Registry *string `json:"registry"`
99-
ExplicitNameInToml string `json:"explicit_name_in_toml"`
99+
ExplicitNameInToml *string `json:"explicit_name_in_toml"`
100100
} `json:"deps"`
101101
Features map[string][]string `json:"features"`
102102
Authors []string `json:"authors"`
@@ -136,15 +136,24 @@ func parsePackage(r io.Reader) (*Package, error) {
136136

137137
dependencies := make([]*Dependency, 0, len(meta.Deps))
138138
for _, dep := range meta.Deps {
139+
name := dep.Name
140+
packageName := dep.ExplicitNameInToml
141+
// If the explicit_name_in_toml field is set, the package is renamed and
142+
// should be set accordingly.
143+
if dep.ExplicitNameInToml != nil {
144+
name = *dep.ExplicitNameInToml
145+
packageName = &dep.Name
146+
}
139147
dependencies = append(dependencies, &Dependency{
140-
Name: dep.Name,
148+
Name: name,
141149
Req: dep.VersionReq,
142150
Features: dep.Features,
143151
Optional: dep.Optional,
144152
DefaultFeatures: dep.DefaultFeatures,
145153
Target: dep.Target,
146154
Kind: dep.Kind,
147155
Registry: dep.Registry,
156+
Package: packageName,
148157
})
149158
}
150159

modules/packages/cargo/parser_test.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
)
2323

2424
func TestParsePackage(t *testing.T) {
25-
createPackage := func(name, version string) io.Reader {
25+
createPackage := func(name, version, dependency string) io.Reader {
2626
metadata := `{
2727
"name":"` + name + `",
2828
"vers":"` + version + `",
@@ -32,7 +32,7 @@ func TestParsePackage(t *testing.T) {
3232
{
3333
"name":"dep",
3434
"version_req":"1.0"
35-
}
35+
}` + dependency + `
3636
],
3737
"homepage":"` + homepage + `",
3838
"license":"` + license + `"
@@ -48,7 +48,7 @@ func TestParsePackage(t *testing.T) {
4848

4949
t.Run("InvalidName", func(t *testing.T) {
5050
for _, name := range []string{"", "0test", "-test", "_test", strings.Repeat("a", 65)} {
51-
data := createPackage(name, "1.0.0")
51+
data := createPackage(name, "1.0.0", "")
5252

5353
cp, err := ParsePackage(data)
5454
assert.Nil(t, cp)
@@ -58,7 +58,7 @@ func TestParsePackage(t *testing.T) {
5858

5959
t.Run("InvalidVersion", func(t *testing.T) {
6060
for _, version := range []string{"", "1.", "-1.0", "1.0.0/1"} {
61-
data := createPackage("test", version)
61+
data := createPackage("test", version, "")
6262

6363
cp, err := ParsePackage(data)
6464
assert.Nil(t, cp)
@@ -67,7 +67,7 @@ func TestParsePackage(t *testing.T) {
6767
})
6868

6969
t.Run("Valid", func(t *testing.T) {
70-
data := createPackage("test", "1.0.0")
70+
data := createPackage("test", "1.0.0", "")
7171

7272
cp, err := ParsePackage(data)
7373
assert.NotNil(t, cp)
@@ -84,4 +84,25 @@ func TestParsePackage(t *testing.T) {
8484
content, _ := io.ReadAll(cp.Content)
8585
assert.Equal(t, "test", string(content))
8686
})
87+
88+
t.Run("Renamed dependency", func(t *testing.T) {
89+
data := createPackage("test", "1.0.0", `, {"name":"v4l2-sys", "version":"0.3.0", "explicit_name_in_toml":"v4l2-sys-mit"}`)
90+
91+
cp, err := ParsePackage(data)
92+
assert.NotNil(t, cp)
93+
require.NoError(t, err)
94+
95+
assert.Equal(t, "test", cp.Name)
96+
assert.Equal(t, "1.0.0", cp.Version)
97+
assert.Equal(t, description, cp.Metadata.Description)
98+
assert.Equal(t, []string{author}, cp.Metadata.Authors)
99+
assert.Len(t, cp.Metadata.Dependencies, 2)
100+
assert.Equal(t, "dep", cp.Metadata.Dependencies[0].Name)
101+
assert.EqualValues(t, "v4l2-sys-mit", cp.Metadata.Dependencies[1].Name)
102+
assert.EqualValues(t, "v4l2-sys", *cp.Metadata.Dependencies[1].Package)
103+
assert.Equal(t, homepage, cp.Metadata.ProjectURL)
104+
assert.Equal(t, license, cp.Metadata.License)
105+
content, _ := io.ReadAll(cp.Content)
106+
assert.Equal(t, "test", string(content))
107+
})
87108
}

0 commit comments

Comments
 (0)