Skip to content

Commit b6282e9

Browse files
Merge pull request #21304 from NullVoxPopuli-ai-agent/fix-build-info-non-ember-tags
address build-info crash on non-ember-source tags
2 parents a6513b6 + 55a6d2a commit b6282e9

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

broccoli/build-info.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ function buildGitInfo(root) {
7575
function buildFromParts(packageVersion, gitInfo) {
7676
let { tag, branch, sha } = gitInfo;
7777
let shortSha = sha.slice(0, 8);
78-
if (tag) {
79-
let tagVersion = parseTagVersion(tag);
78+
let tagVersion = tag ? parseTagVersion(tag) : null;
79+
if (tag && tagVersion) {
8080
return {
8181
tag,
8282
branch: null,
@@ -126,7 +126,8 @@ function readPackageVersion(root) {
126126
*/
127127
function parseTagVersion(tag) {
128128
if (tag) {
129-
return semver.parse(tag.replace(/-ember-source$/, '')).version;
129+
let parsed = semver.parse(tag.replace(/-ember-source$/, ''));
130+
return parsed ? parsed.version : null;
130131
}
131132
}
132133

tests/node/build-info-test.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,12 @@ QUnit.module('parseTagVersion', () => {
6262
});
6363
});
6464

65-
QUnit.test('parseTagVersion raises on non-semver tags', function (assert) {
66-
assert.throws(() => {
67-
parseTagVersion('some-non-version-tag');
68-
});
65+
QUnit.test('parseTagVersion returns null for non-semver tags', function (assert) {
66+
assert.equal(parseTagVersion('some-non-version-tag'), null);
67+
});
68+
69+
QUnit.test('parseTagVersion returns null for non-ember-source package tags', function (assert) {
70+
assert.equal(parseTagVersion('v2.1.1-@glimmer/component'), null);
6971
});
7072
});
7173

@@ -134,6 +136,27 @@ QUnit.module('buildFromParts', () => {
134136
isBuildForTag: true,
135137
},
136138
},
139+
{
140+
args: [
141+
'3.4.4', // Non-ember-source tag (e.g. @glimmer/component) should be treated as channel build
142+
{
143+
sha: 'f572d396fae9206628714fb2ce00f72e94f2258f',
144+
branch: 'main',
145+
tag: 'v2.1.1-@glimmer/component',
146+
},
147+
],
148+
expected: {
149+
tag: null,
150+
branch: 'main',
151+
sha: 'f572d396fae9206628714fb2ce00f72e94f2258f',
152+
shortSha: 'f572d396',
153+
channel: 'canary',
154+
packageVersion: '3.4.4',
155+
tagVersion: null,
156+
version: '3.4.4-canary+f572d396',
157+
isBuildForTag: false,
158+
},
159+
},
137160
].forEach(({ args, expected }) => {
138161
QUnit.test(JSON.stringify(args), function (assert) {
139162
assert.deepEqual(buildFromParts(...args), expected);

0 commit comments

Comments
 (0)