Skip to content

Commit 4ffba91

Browse files
committed
internal/symbol: delete LegacyIntroducedHistory
For golang/go#37102 Change-Id: Ie3554874b515abda558fb58cbd5f28b814476ac8 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/317490 Trust: Julie Qiu <[email protected]> Run-TryBot: Julie Qiu <[email protected]> TryBot-Result: kokoro <[email protected]> Reviewed-by: Jonathan Amsterdam <[email protected]>
1 parent 671ddf2 commit 4ffba91

File tree

2 files changed

+57
-140
lines changed

2 files changed

+57
-140
lines changed

internal/symbol/intro.go

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
package symbol
66

77
import (
8-
"sort"
9-
10-
"golang.org/x/mod/semver"
118
"golang.org/x/pkgsite/internal"
129
"golang.org/x/pkgsite/internal/derrors"
1310
)
@@ -52,57 +49,3 @@ func IntroducedHistory(sh *internal.SymbolHistory) (outSH *internal.SymbolHistor
5249
}
5350
return outSH, nil
5451
}
55-
56-
// LegacyIntroducedHistory returns a map of the first version when a symbol name is
57-
// added to the API, to the symbol name, to the UnitSymbol struct. The
58-
// UnitSymbol.Children field will always be empty, as children names are also
59-
// tracked.
60-
func LegacyIntroducedHistory(versionToNameToUnitSymbol map[string]map[string]*internal.UnitSymbol) (
61-
outVersionToNameToUnitSymbol map[string]map[string]*internal.UnitSymbol) {
62-
// Create an array of the versions in versionToNameToUnitSymbol, sorted by
63-
// increasing semver.
64-
var orderdVersions []string
65-
for v := range versionToNameToUnitSymbol {
66-
orderdVersions = append(orderdVersions, v)
67-
}
68-
sort.Slice(orderdVersions, func(i, j int) bool {
69-
return semver.Compare(orderdVersions[i], orderdVersions[j]) == -1
70-
})
71-
72-
// Generate a map of the symbol names for each build context, and the first
73-
// version when that symbol name was found in the package.
74-
buildToNameToVersion := map[internal.BuildContext]map[string]string{}
75-
for _, v := range orderdVersions {
76-
nameToUnitSymbol := versionToNameToUnitSymbol[v]
77-
for _, us := range nameToUnitSymbol {
78-
for _, build := range us.BuildContexts() {
79-
if _, ok := buildToNameToVersion[build]; !ok {
80-
buildToNameToVersion[build] = map[string]string{}
81-
}
82-
if _, ok := buildToNameToVersion[build][us.Name]; !ok {
83-
buildToNameToVersion[build][us.Name] = v
84-
}
85-
}
86-
}
87-
}
88-
89-
// Using the map of buildToNameToVersion, construct a map of
90-
// versionToNameToUnitSymbol, where version is the first version when the
91-
// symbol name was found in the package.
92-
outVersionToNameToUnitSymbol = map[string]map[string]*internal.UnitSymbol{}
93-
for build, nameToVersion := range buildToNameToVersion {
94-
for name, version := range nameToVersion {
95-
if _, ok := outVersionToNameToUnitSymbol[version]; !ok {
96-
outVersionToNameToUnitSymbol[version] = map[string]*internal.UnitSymbol{}
97-
}
98-
us, ok := outVersionToNameToUnitSymbol[version][name]
99-
if !ok {
100-
us = versionToNameToUnitSymbol[version][name]
101-
us.RemoveBuildContexts()
102-
outVersionToNameToUnitSymbol[version][name] = us
103-
}
104-
us.AddBuildContext(build)
105-
}
106-
}
107-
return outVersionToNameToUnitSymbol
108-
}

internal/symbol/intro_test.go

Lines changed: 57 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
)
1414

1515
func TestIntroducedHistory_OneBuildContext(t *testing.T) {
16-
input := map[string]map[string]*internal.UnitSymbol{}
16+
input := internal.NewSymbolHistory()
1717
for _, s := range []struct {
1818
name, version string
1919
}{
@@ -22,57 +22,50 @@ func TestIntroducedHistory_OneBuildContext(t *testing.T) {
2222
{"Foo.A", "v1.2.0"},
2323
{"Bar", "v1.1.0"},
2424
} {
25-
if _, ok := input[s.version]; !ok {
26-
input[s.version] = map[string]*internal.UnitSymbol{}
27-
}
28-
us := &internal.UnitSymbol{
29-
SymbolMeta: internal.SymbolMeta{
30-
Name: s.name,
31-
},
32-
}
25+
sm := internal.SymbolMeta{Name: s.name}
3326
for _, b := range internal.BuildContexts {
34-
us.AddBuildContext(b)
27+
input.AddSymbol(sm, s.version, b)
3528
}
36-
input[s.version][s.name] = us
3729
}
38-
want := map[string]map[string]*internal.UnitSymbol{
39-
"v1.0.0": {
40-
"Foo": &internal.UnitSymbol{
41-
SymbolMeta: internal.SymbolMeta{
42-
Name: "Foo",
43-
},
44-
},
45-
},
46-
"v1.1.0": {
47-
"Bar": &internal.UnitSymbol{
48-
SymbolMeta: internal.SymbolMeta{
49-
Name: "Bar",
50-
},
51-
},
52-
},
53-
"v1.2.0": {
54-
"Foo.A": &internal.UnitSymbol{
55-
SymbolMeta: internal.SymbolMeta{
56-
Name: "Foo.A",
57-
},
58-
},
59-
},
30+
want := internal.NewSymbolHistory()
31+
want.AddSymbol(
32+
internal.SymbolMeta{Name: "Foo"},
33+
"v1.0.0",
34+
internal.BuildContextAll,
35+
)
36+
want.AddSymbol(
37+
internal.SymbolMeta{Name: "Bar"},
38+
"v1.1.0",
39+
internal.BuildContextAll,
40+
)
41+
want.AddSymbol(
42+
internal.SymbolMeta{Name: "Foo.A"},
43+
"v1.2.0",
44+
internal.BuildContextAll,
45+
)
46+
got, err := IntroducedHistory(input)
47+
if err != nil {
48+
t.Fatal(err)
6049
}
61-
got := LegacyIntroducedHistory(input)
62-
if diff := cmp.Diff(want, got, cmpopts.IgnoreFields(internal.UnitSymbol{}, "builds")); diff != "" {
50+
if diff := cmp.Diff(want, got,
51+
cmp.AllowUnexported(internal.UnitSymbol{}, internal.SymbolHistory{}),
52+
cmpopts.IgnoreFields(internal.UnitSymbol{}, "builds")); diff != "" {
6353
t.Errorf("mismatch (-want, +got):\n%s", diff)
6454
}
65-
for _, nts := range got {
66-
for _, g := range nts {
67-
if !g.InAll() {
68-
t.Errorf("got build contexts = %v; want all", g.BuildContexts())
55+
for _, v := range got.Versions() {
56+
nts := got.SymbolsAtVersion(v)
57+
for _, stu := range nts {
58+
for _, g := range stu {
59+
if !g.InAll() {
60+
t.Errorf("got build contexts = %v; want all", g.BuildContexts())
61+
}
6962
}
7063
}
7164
}
7265
}
7366

7467
func TestIntroducedHistory_MultiGOOS(t *testing.T) {
75-
input := map[string]map[string]*internal.UnitSymbol{}
68+
input := internal.NewSymbolHistory()
7669
for _, s := range []struct {
7770
name, version string
7871
build internal.BuildContext
@@ -88,55 +81,36 @@ func TestIntroducedHistory_MultiGOOS(t *testing.T) {
8881
{"Foo", "v1.1.0", internal.BuildContextJS},
8982
{"Foo.A", "v1.2.0", internal.BuildContextJS},
9083
} {
91-
if _, ok := input[s.version]; !ok {
92-
input[s.version] = map[string]*internal.UnitSymbol{}
93-
}
94-
us, ok := input[s.version][s.name]
95-
if !ok {
96-
us = &internal.UnitSymbol{
97-
SymbolMeta: internal.SymbolMeta{
98-
Name: s.name,
99-
},
100-
}
101-
input[s.version][s.name] = us
102-
}
103-
us.AddBuildContext(s.build)
84+
sm := internal.SymbolMeta{Name: s.name}
85+
input.AddSymbol(sm, s.version, s.build)
10486
}
10587

106-
withBuilds := func(name string, builds ...internal.BuildContext) *internal.UnitSymbol {
107-
us := &internal.UnitSymbol{
108-
SymbolMeta: internal.SymbolMeta{
109-
Name: name,
110-
},
111-
}
88+
want := internal.NewSymbolHistory()
89+
withSym := func(name, v string, builds []internal.BuildContext) {
90+
s := internal.SymbolMeta{Name: name}
11291
for _, b := range builds {
113-
us.AddBuildContext(b)
92+
want.AddSymbol(s, v, b)
11493
}
115-
return us
11694
}
117-
want := map[string]map[string]*internal.UnitSymbol{
118-
"v1.0.0": {
119-
"Bar": withBuilds("Bar", internal.BuildContextAll),
120-
"Foo": withBuilds("Foo", internal.BuildContextLinux, internal.BuildContextWindows),
121-
},
122-
"v1.1.0": {
123-
"Foo": withBuilds("Foo", internal.BuildContextJS),
124-
"Foo.A": withBuilds("Foo.A", internal.BuildContextLinux),
125-
},
126-
"v1.2.0": {
127-
"Foo.A": withBuilds("Foo.A", internal.BuildContextJS),
128-
},
95+
for _, s := range []struct {
96+
n, v string
97+
builds []internal.BuildContext
98+
}{
99+
{"Bar", "v1.0.0", []internal.BuildContext{internal.BuildContextAll}},
100+
{"Foo", "v1.0.0", []internal.BuildContext{internal.BuildContextLinux, internal.BuildContextWindows}},
101+
{"Foo", "v1.1.0", []internal.BuildContext{internal.BuildContextJS}},
102+
{"Foo.A", "v1.1.0", []internal.BuildContext{internal.BuildContextLinux}},
103+
{"Foo.A", "v1.2.0", []internal.BuildContext{internal.BuildContextJS}},
104+
} {
105+
withSym(s.n, s.v, s.builds)
106+
}
107+
108+
got, err := IntroducedHistory(input)
109+
if err != nil {
110+
t.Fatal(err)
129111
}
130-
got := LegacyIntroducedHistory(input)
131-
if diff := cmp.Diff(want, got, cmpopts.IgnoreFields(internal.UnitSymbol{}, "builds")); diff != "" {
112+
if diff := cmp.Diff(want, got,
113+
cmp.AllowUnexported(internal.UnitSymbol{}, internal.SymbolHistory{})); diff != "" {
132114
t.Errorf("mismatch (-want, +got):\n%s", diff)
133115
}
134-
for v, nts := range got {
135-
for n, g := range nts {
136-
w := want[v][n]
137-
if diff := cmp.Diff(w.BuildContexts(), g.BuildContexts()); diff != "" {
138-
t.Errorf("(%s %s): got build contexts = %v; want %v", n, v, g.BuildContexts(), w.BuildContexts())
139-
}
140-
}
141-
}
142116
}

0 commit comments

Comments
 (0)