loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'fix: handle renamed dependency for cargo registry' (#5941) from gusted/forgejo-renamed-cargo-dep into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5941
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>

Otto 17ec79cc 2581c9cf

+37 -7
+11 -2
modules/packages/cargo/parser.go
··· 96 96 Target *string `json:"target"` 97 97 Kind string `json:"kind"` 98 98 Registry *string `json:"registry"` 99 - ExplicitNameInToml string `json:"explicit_name_in_toml"` 99 + ExplicitNameInToml *string `json:"explicit_name_in_toml"` 100 100 } `json:"deps"` 101 101 Features map[string][]string `json:"features"` 102 102 Authors []string `json:"authors"` ··· 136 136 137 137 dependencies := make([]*Dependency, 0, len(meta.Deps)) 138 138 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 + } 139 147 dependencies = append(dependencies, &Dependency{ 140 - Name: dep.Name, 148 + Name: name, 141 149 Req: dep.VersionReq, 142 150 Features: dep.Features, 143 151 Optional: dep.Optional, ··· 145 153 Target: dep.Target, 146 154 Kind: dep.Kind, 147 155 Registry: dep.Registry, 156 + Package: packageName, 148 157 }) 149 158 } 150 159
+26 -5
modules/packages/cargo/parser_test.go
··· 22 22 ) 23 23 24 24 func TestParsePackage(t *testing.T) { 25 - createPackage := func(name, version string) io.Reader { 25 + createPackage := func(name, version, dependency string) io.Reader { 26 26 metadata := `{ 27 27 "name":"` + name + `", 28 28 "vers":"` + version + `", ··· 32 32 { 33 33 "name":"dep", 34 34 "version_req":"1.0" 35 - } 35 + }` + dependency + ` 36 36 ], 37 37 "homepage":"` + homepage + `", 38 38 "license":"` + license + `" ··· 48 48 49 49 t.Run("InvalidName", func(t *testing.T) { 50 50 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", "") 52 52 53 53 cp, err := ParsePackage(data) 54 54 assert.Nil(t, cp) ··· 58 58 59 59 t.Run("InvalidVersion", func(t *testing.T) { 60 60 for _, version := range []string{"", "1.", "-1.0", "1.0.0/1"} { 61 - data := createPackage("test", version) 61 + data := createPackage("test", version, "") 62 62 63 63 cp, err := ParsePackage(data) 64 64 assert.Nil(t, cp) ··· 67 67 }) 68 68 69 69 t.Run("Valid", func(t *testing.T) { 70 - data := createPackage("test", "1.0.0") 70 + data := createPackage("test", "1.0.0", "") 71 71 72 72 cp, err := ParsePackage(data) 73 73 assert.NotNil(t, cp) ··· 79 79 assert.Equal(t, []string{author}, cp.Metadata.Authors) 80 80 assert.Len(t, cp.Metadata.Dependencies, 1) 81 81 assert.Equal(t, "dep", cp.Metadata.Dependencies[0].Name) 82 + assert.Equal(t, homepage, cp.Metadata.ProjectURL) 83 + assert.Equal(t, license, cp.Metadata.License) 84 + content, _ := io.ReadAll(cp.Content) 85 + assert.Equal(t, "test", string(content)) 86 + }) 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) 82 103 assert.Equal(t, homepage, cp.Metadata.ProjectURL) 83 104 assert.Equal(t, license, cp.Metadata.License) 84 105 content, _ := io.ReadAll(cp.Content)