Skip to content

Commit 235fe5a

Browse files
authored
Resolve leaves when updating leaves. (#148)
1 parent 36002e6 commit 235fe5a

File tree

2 files changed

+87
-24
lines changed

2 files changed

+87
-24
lines changed

internal/cli/service.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,10 @@ func PickLatestMajorVersion(versions api.LeafVersionsResult, leaf string, _ stri
11681168
}
11691169

11701170
func PickLatestMinorVersion(versions api.LeafVersionsResult, leaf string, major string) (string, error) {
1171+
if major == "" {
1172+
return PickLatestMajorVersion(versions, leaf, major)
1173+
}
1174+
11711175
majorVersions, ok := versions.LatestMinor[leaf]
11721176
if !ok {
11731177
return "", fmt.Errorf("Unable to find the leaf %q; skipping it.", leaf)

internal/cli/service_test.go

Lines changed: 83 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1588,6 +1588,17 @@ tasks:
15881588
majorLeafVersions["mint/setup-ruby"] = "1.0.1"
15891589
majorLeafVersions["mint/setup-go"] = "1.3.5"
15901590

1591+
minorLeafVersions["mint/setup-node"] = map[string]string{
1592+
"1": "1.2.3",
1593+
}
1594+
minorLeafVersions["mint/setup-ruby"] = map[string]string{
1595+
"0": "0.0.2",
1596+
"1": "1.0.1",
1597+
}
1598+
minorLeafVersions["mint/setup-go"] = map[string]string{
1599+
"1": "1.3.5",
1600+
}
1601+
15911602
var err error
15921603

15931604
originalFooContents = `
@@ -1611,20 +1622,21 @@ tasks:
16111622
Expect(err).NotTo(HaveOccurred())
16121623
})
16131624

1614-
It("updates all files", func() {
1615-
var err error
1625+
Context("with major version updates", func() {
1626+
It("updates all files", func() {
1627+
var err error
16161628

1617-
err = service.UpdateLeaves(cli.UpdateLeavesConfig{
1618-
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1619-
ReplacementVersionPicker: cli.PickLatestMajorVersion,
1620-
})
1621-
Expect(err).NotTo(HaveOccurred())
1629+
err = service.UpdateLeaves(cli.UpdateLeavesConfig{
1630+
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1631+
ReplacementVersionPicker: cli.PickLatestMajorVersion,
1632+
})
1633+
Expect(err).NotTo(HaveOccurred())
16221634

1623-
var contents []byte
1635+
var contents []byte
16241636

1625-
contents, err = os.ReadFile(filepath.Join(tmp, "foo.yaml"))
1626-
Expect(err).NotTo(HaveOccurred())
1627-
Expect(string(contents)).To(Equal(`tasks:
1637+
contents, err = os.ReadFile(filepath.Join(tmp, "foo.yaml"))
1638+
Expect(err).NotTo(HaveOccurred())
1639+
Expect(string(contents)).To(Equal(`tasks:
16281640
- key: foo
16291641
call: mint/setup-node 1.2.3
16301642
- key: bar
@@ -1633,26 +1645,73 @@ tasks:
16331645
call: mint/setup-go 1.3.5
16341646
`))
16351647

1636-
contents, err = os.ReadFile(filepath.Join(tmp, "bar.yaml"))
1637-
Expect(err).NotTo(HaveOccurred())
1638-
Expect(string(contents)).To(Equal(`tasks:
1648+
contents, err = os.ReadFile(filepath.Join(tmp, "bar.yaml"))
1649+
Expect(err).NotTo(HaveOccurred())
1650+
Expect(string(contents)).To(Equal(`tasks:
16391651
- key: foo
16401652
call: mint/setup-ruby 1.0.1
16411653
`))
1654+
})
1655+
1656+
It("indicates leaves were updated", func() {
1657+
err := service.UpdateLeaves(cli.UpdateLeavesConfig{
1658+
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1659+
ReplacementVersionPicker: cli.PickLatestMajorVersion,
1660+
})
1661+
1662+
Expect(err).NotTo(HaveOccurred())
1663+
Expect(mockStdout.String()).To(ContainSubstring("Updated the following leaves:"))
1664+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-go → 1.3.5"))
1665+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-node 1.0.1 → 1.2.3"))
1666+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 0.0.1 → 1.0.1"))
1667+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 1.0.0 → 1.0.1"))
1668+
})
16421669
})
16431670

1644-
It("indicates leaves were updated", func() {
1645-
err := service.UpdateLeaves(cli.UpdateLeavesConfig{
1646-
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1647-
ReplacementVersionPicker: cli.PickLatestMajorVersion,
1671+
Context("with minor version updates only", func() {
1672+
It("updates all files", func() {
1673+
var err error
1674+
1675+
err = service.UpdateLeaves(cli.UpdateLeavesConfig{
1676+
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1677+
ReplacementVersionPicker: cli.PickLatestMinorVersion,
1678+
})
1679+
Expect(err).NotTo(HaveOccurred())
1680+
1681+
var contents []byte
1682+
1683+
contents, err = os.ReadFile(filepath.Join(tmp, "foo.yaml"))
1684+
Expect(err).NotTo(HaveOccurred())
1685+
Expect(string(contents)).To(Equal(`tasks:
1686+
- key: foo
1687+
call: mint/setup-node 1.2.3
1688+
- key: bar
1689+
call: mint/setup-ruby 0.0.2
1690+
- key: baz
1691+
call: mint/setup-go 1.3.5
1692+
`))
1693+
1694+
contents, err = os.ReadFile(filepath.Join(tmp, "bar.yaml"))
1695+
Expect(err).NotTo(HaveOccurred())
1696+
Expect(string(contents)).To(Equal(`tasks:
1697+
- key: foo
1698+
call: mint/setup-ruby 1.0.1
1699+
`))
16481700
})
16491701

1650-
Expect(err).NotTo(HaveOccurred())
1651-
Expect(mockStdout.String()).To(ContainSubstring("Updated the following leaves:"))
1652-
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-go → 1.3.5"))
1653-
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-node 1.0.1 → 1.2.3"))
1654-
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 0.0.1 → 1.0.1"))
1655-
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 1.0.0 → 1.0.1"))
1702+
It("indicates leaves were updated", func() {
1703+
err := service.UpdateLeaves(cli.UpdateLeavesConfig{
1704+
Files: []string{filepath.Join(tmp, "foo.yaml"), filepath.Join(tmp, "bar.yaml")},
1705+
ReplacementVersionPicker: cli.PickLatestMinorVersion,
1706+
})
1707+
1708+
Expect(err).NotTo(HaveOccurred())
1709+
Expect(mockStdout.String()).To(ContainSubstring("Updated the following leaves:"))
1710+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-go → 1.3.5"))
1711+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-node 1.0.1 → 1.2.3"))
1712+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 0.0.1 → 0.0.2"))
1713+
Expect(mockStdout.String()).To(ContainSubstring("mint/setup-ruby 1.0.0 → 1.0.1"))
1714+
})
16561715
})
16571716

16581717
Context("when a single file is targeted", func() {

0 commit comments

Comments
 (0)