Skip to content

Commit dc8d5a2

Browse files
authored
Merge pull request clearlydefined#588 from qtomlinson/qt/fix_pod_latest_version
Fix fetching latest version for some pod components
2 parents ae32c98 + 6a55052 commit dc8d5a2

File tree

3 files changed

+139
-2
lines changed

3 files changed

+139
-2
lines changed

providers/fetch/podFetch.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,11 @@ class PodFetch extends AbstractFetch {
141141
if (spec.revision) {
142142
return versions.find(version => version.name === spec.revision)
143143
} else {
144-
return versions[versions.length - 1] // the versions are already sorted
144+
return versions.sort((a, b) => {
145+
const aDate = typeof a.created_at === 'string' ? a.created_at : ''
146+
const bDate = typeof b.created_at === 'string' ? b.created_at : ''
147+
return bDate.localeCompare(aDate)
148+
})[0]
145149
}
146150
} else {
147151
return null

test/fixtures/pod/versions2.json

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
{
2+
"versions": [
3+
{
4+
"name": "0.10.2",
5+
"created_at": "2021-12-03 22:39:52 UTC"
6+
},
7+
{
8+
"name": "0.11.0",
9+
"created_at": "2021-12-22 06:52:38 UTC"
10+
},
11+
{
12+
"name": "0.12.0",
13+
"created_at": "2022-02-28 09:47:12 UTC"
14+
},
15+
{
16+
"name": "0.13.0",
17+
"created_at": "2022-05-27 10:49:32 UTC"
18+
},
19+
{
20+
"name": "0.14.0",
21+
"created_at": "2022-09-18 12:25:31 UTC"
22+
},
23+
{
24+
"name": "0.15.0",
25+
"created_at": "2022-10-08 12:30:37 UTC"
26+
},
27+
{
28+
"name": "0.16.0",
29+
"created_at": "2023-02-19 01:26:47 UTC"
30+
},
31+
{
32+
"name": "0.17.0",
33+
"created_at": "2023-02-19 01:45:57 UTC"
34+
},
35+
{
36+
"name": "0.3.5",
37+
"created_at": "2018-12-09 23:53:19 UTC"
38+
},
39+
{
40+
"name": "0.3.6",
41+
"created_at": "2018-12-15 05:56:51 UTC"
42+
},
43+
{
44+
"name": "0.3.7",
45+
"created_at": "2019-02-04 14:17:14 UTC"
46+
},
47+
{
48+
"name": "0.3.8",
49+
"created_at": "2019-04-07 00:47:43 UTC"
50+
},
51+
{
52+
"name": "0.4.0",
53+
"created_at": "2019-04-17 04:12:45 UTC"
54+
},
55+
{
56+
"name": "0.4.1",
57+
"created_at": "2019-04-17 08:25:41 UTC"
58+
},
59+
{
60+
"name": "0.5.0",
61+
"created_at": "2019-07-27 05:09:12 UTC"
62+
},
63+
{
64+
"name": "0.6.0",
65+
"created_at": "2019-09-16 22:38:50 UTC"
66+
},
67+
{
68+
"name": "0.7.0",
69+
"created_at": "2019-12-09 00:04:16 UTC"
70+
},
71+
{
72+
"name": "0.7.1",
73+
"created_at": "2019-12-21 05:26:01 UTC"
74+
},
75+
{
76+
"name": "0.7.2",
77+
"created_at": "2019-12-23 14:09:48 UTC"
78+
},
79+
{
80+
"name": "0.7.3",
81+
"created_at": "2020-01-19 09:15:23 UTC"
82+
},
83+
{
84+
"name": "0.7.4",
85+
"created_at": "2020-02-21 11:47:13 UTC"
86+
},
87+
{
88+
"name": "0.7.5",
89+
"created_at": "2020-03-09 01:16:13 UTC"
90+
},
91+
{
92+
"name": "0.7.6",
93+
"created_at": "2020-05-14 09:18:29 UTC"
94+
},
95+
{
96+
"name": "0.8.0",
97+
"created_at": "2020-05-26 02:32:55 UTC"
98+
},
99+
{
100+
"name": "0.8.1",
101+
"created_at": "2020-08-23 23:35:54 UTC"
102+
},
103+
{
104+
"name": "0.9.0",
105+
"created_at": "2020-12-19 10:14:22 UTC"
106+
},
107+
{
108+
"name": "0.9.1",
109+
"created_at": "2021-01-01 05:52:47 UTC"
110+
}
111+
],
112+
"owners": [
113+
{
114+
"created_at": "2014-11-08 08:56:14 UTC",
115+
"email": "t@thi.im",
116+
"name": "Thi Doan"
117+
},
118+
{
119+
"created_at": "2022-01-08 12:04:30 UTC",
120+
"email": "pedro@craftweg.com",
121+
"name": "Pedro Piñera¨"
122+
}
123+
]
124+
}

test/unit/providers/fetch/podFetchTests.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ describe('podFetch', () => {
1010
return JSON.parse(fs.readFileSync(`test/fixtures/pod/${fileName}`))
1111
}
1212

13+
const getVersionsStub = sinon.stub()
1314
const PodFetch = proxyquire('../../../../providers/fetch/podFetch', {
1415
requestretry: {
1516
defaults: () => {
1617
return {
17-
get: sinon.stub().resolves({ body: loadJson('versions.json'), statusCode: 200 })
18+
get: getVersionsStub
1819
}
1920
}
2021
},
@@ -29,6 +30,7 @@ describe('podFetch', () => {
2930
})
3031

3132
it('spec with version', async () => {
33+
getVersionsStub.resolves({ body: loadJson('versions.json'), statusCode: 200 })
3234
const result = await fetch.handle(new Request('test', 'cd:/pod/cocoapods/-/SwiftLCS/1.0'))
3335
result.fetchResult.copyTo(result)
3436
expect(result.url).to.be.equal('cd:/pod/cocoapods/-/SwiftLCS/1.0')
@@ -39,10 +41,17 @@ describe('podFetch', () => {
3941
})
4042

4143
it('spec without version', async () => {
44+
getVersionsStub.resolves({ body: loadJson('versions.json'), statusCode: 200 })
4245
const result = await fetch.handle(new Request('test', 'cd:/pod/cocoapods/-/SwiftLCS'))
4346
result.fetchResult.copyTo(result)
4447
expect(result.url).to.be.equal('cd:/pod/cocoapods/-/SwiftLCS/1.3.4')
4548
expect(result.document.releaseDate).to.be.equal('2019-04-10 00:22:10 UTC')
4649
expect(result.casedSpec.toUrl()).to.be.equal('cd:/pod/cocoapods/-/SwiftLCS/1.3.4')
4750
})
51+
52+
it('spec without version when version is lexically sorted', async () => {
53+
getVersionsStub.resolves({ body: loadJson('versions2.json'), statusCode: 200 })
54+
const version = await fetch._getVersion(new Request('test', 'cd:/pod/cocoapods/-/xcbeautify'))
55+
expect(version.name).to.be.equal('0.17.0')
56+
})
4857
})

0 commit comments

Comments
 (0)