Skip to content

Commit a7858af

Browse files
axicr0qs
authored andcommitted
Sanitize nightly version string which had leading zeroes
1 parent fc232fe commit a7858af

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

test/translate.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ tape('Version string to Semver translator', function (t) {
1818
st.equal(versionToSemver('0.4.20-nightly.2018.2.13+commit.27ef9794.Emscripten.clang'), '0.4.20-nightly.2018.2.13+commit.27ef9794.Emscripten.clang');
1919
st.end();
2020
});
21+
t.test('Broken nightly with leading zeroes', function (st) {
22+
st.equal(versionToSemver('0.3.6-nightly.2016.08.27+commit.91d4fa47.Emscripten.clang'), '0.3.6-nightly.2016.8.27+commit.91d4fa47.Emscripten.clang');
23+
st.equal(versionToSemver('0.4.1-nightly.2016.09.09+commit.79867f49.Emscripten.clang'), '0.4.1-nightly.2016.9.9+commit.79867f49.Emscripten.clang');
24+
st.end();
25+
});
2126
t.test('Old style 0.1.1', function (st) {
2227
st.equal(versionToSemver('0.1.1-6ff4cd6b/RelWithDebInfo-Emscripten/clang/int'), '0.1.1+commit.6ff4cd6b');
2328
st.end();
@@ -37,6 +42,10 @@ tape('Version string to Semver translator', function (t) {
3742
);
3843
st.end();
3944
});
45+
t.test('Broken 0.3.4 nightly', function (st) {
46+
st.equal(versionToSemver('0.3.4-0/Release-Emscripten/clang/Interpreter'), '0.3.4-nightly');
47+
st.end();
48+
});
4049
t.test('Old style 0.3.5', function (st) {
4150
// The one in the solc-bin list
4251
st.equal(versionToSemver('0.3.5-371690f0/Release-Emscripten/clang/Interpreter'), '0.3.5+commit.371690f0');

translate.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import linker from './linker';
22

33
/// Translate old style version numbers to semver.
4-
/// Old style: 0.3.6-3fc68da5/Release-Emscripten/clang
4+
/// Old style: 0.4.1-nightly.2016.09.09+commit.79867f49.Emscripten.clang
5+
/// 0.3.6-nightly.2016.08.27+commit.91d4fa47.Emscripten.clang
6+
/// 0.3.6-3fc68da5/Release-Emscripten/clang
57
/// 0.3.5-371690f0/Release-Emscripten/clang/Interpreter
68
/// 0.3.5-0/Release-Emscripten/clang/Interpreter
9+
/// 0.3.4-0/Release-Emscripten/clang/Interpreter
710
/// 0.2.0-e7098958/.-Emscripten/clang/int linked to libethereum-1.1.1-bbb80ab0/.-Emscripten/clang/int
811
/// 0.1.3-0/.-/clang/int linked to libethereum-0.9.92-0/.-/clang/int
912
/// 0.1.2-5c3bfd4b*/.-/clang/int
1013
/// 0.1.1-6ff4cd6b/RelWithDebInfo-Emscripten/clang/int
11-
/// New style: 0.4.5+commit.b318366e.Emscripten.clang
14+
/// New style: 0.8.1-nightly.2021.1.7+commit.d11cf15d.js
15+
/// 0.4.5+commit.b318366e.Emscripten.clang
1216
function versionToSemver (version) {
17+
// This parses the old style with a commit hash. It ignores the details past the commit hash.
1318
// FIXME: parse more detail, but this is a good start
1419
const parsed = version.match(/^([0-9]+\.[0-9]+\.[0-9]+)-([0-9a-f]{8})[/*].*$/);
1520
if (parsed) {
@@ -18,9 +23,17 @@ function versionToSemver (version) {
1823
if (version.indexOf('0.1.3-0') !== -1) {
1924
return '0.1.3';
2025
}
26+
if (version.indexOf('0.3.4-0') !== -1) {
27+
return '0.3.4-nightly';
28+
}
2129
if (version.indexOf('0.3.5-0') !== -1) {
2230
return '0.3.5';
2331
}
32+
// This parses the obsolete nightly style where the date can have leading zeroes.
33+
const nightlyParsed = version.match(/^([0-9]+\.[0-9]+\.[0-9]+)-nightly\.([0-9]+)\.0?([1-9])\.0?([1-9])(.*)$/);
34+
if (nightlyParsed) {
35+
return nightlyParsed[1] + '-nightly.' + nightlyParsed[2] + '.' + nightlyParsed[3] + '.' + nightlyParsed[4] + nightlyParsed[5];
36+
}
2437
// assume it is already semver compatible
2538
return version;
2639
}

0 commit comments

Comments
 (0)