Skip to content

Commit cf0c993

Browse files
authored
Check host platform when finding node version (#363)
See #362
1 parent 4442d10 commit cf0c993

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

nodeenv.py

+22-3
Original file line numberDiff line numberDiff line change
@@ -1045,19 +1045,38 @@ def print_node_versions():
10451045
logger.info('\t'.join(chunk))
10461046

10471047

1048+
def _get_last_node_version(lts=False):
1049+
"""
1050+
Return last node.js version matching the filter
1051+
"""
1052+
print({"x86": is_x86_64_musl(), "risc": is_riscv64(), "lts": lts})
1053+
def version_filter(v):
1054+
if lts and not v['lts']:
1055+
return False
1056+
1057+
if is_x86_64_musl() and "linux-x64-musl" not in v['files']:
1058+
return False
1059+
elif is_riscv64() and "linux-riscv64" not in v['files']:
1060+
return False
1061+
1062+
return True
1063+
1064+
return next((v['version'].lstrip('v')
1065+
for v in _get_versions_json() if version_filter(v)), None)
1066+
1067+
10481068
def get_last_stable_node_version():
10491069
"""
10501070
Return last stable node.js version
10511071
"""
1052-
return _get_versions_json()[0]['version'].lstrip('v')
1072+
return _get_last_node_version()
10531073

10541074

10551075
def get_last_lts_node_version():
10561076
"""
10571077
Return the last node.js version marked as LTS
10581078
"""
1059-
return next((v['version'].lstrip('v')
1060-
for v in _get_versions_json() if v['lts']), None)
1079+
return _get_last_node_version(lts=True)
10611080

10621081

10631082
def get_env_dir(args):

tests/nodeenv_test.py

+26-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@ def cap_logging_info():
6868
yield mck
6969

7070

71+
@pytest.fixture
72+
def mock_host_platform():
73+
with mock.patch.object(nodeenv, 'is_x86_64_musl', return_value=False) as x64_mck:
74+
with mock.patch.object(nodeenv, 'is_riscv64', return_value=False) as risc_mck:
75+
yield
76+
77+
78+
@pytest.fixture
79+
def mock_riscv64_platform():
80+
with mock.patch.object(nodeenv, 'is_x86_64_musl', return_value=False) as x64_mck:
81+
with mock.patch.object(nodeenv, 'is_riscv64', return_value=True) as risc_mck:
82+
yield
83+
84+
7185
def mck_to_out(mck):
7286
return '\n'.join(call[0][0] for call in mck.call_args_list)
7387

@@ -142,16 +156,26 @@ def rewind(_):
142156
mock_logger.assert_called()
143157

144158

145-
@pytest.mark.usefixtures('mock_index_json')
159+
@pytest.mark.usefixtures('mock_index_json', 'mock_host_platform')
146160
def test_get_latest_node_version():
147161
assert nodeenv.get_last_stable_node_version() == '13.5.0'
148162

149163

150-
@pytest.mark.usefixtures('mock_index_json')
164+
@pytest.mark.usefixtures('mock_index_json', 'mock_host_platform')
151165
def test_get_lts_node_version():
152166
assert nodeenv.get_last_lts_node_version() == '12.14.0'
153167

154168

169+
@pytest.mark.usefixtures('mock_index_json', 'mock_riscv64_platform')
170+
def test_get_latest_node_version_riscv64():
171+
assert nodeenv.get_last_stable_node_version() == '13.4.0'
172+
173+
174+
@pytest.mark.usefixtures('mock_index_json', 'mock_riscv64_platform')
175+
def test_get_lts_node_version_riscv64():
176+
assert nodeenv.get_last_lts_node_version() == '12.13.1'
177+
178+
155179
def test__download_node_file():
156180
with mock.patch.object(nodeenv, 'urlopen') as m_urlopen:
157181
m_urlopen.side_effect = IncompleteRead("dummy")

tests/nodejs_index.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[
22
{"version":"v13.5.0","date":"2019-12-18","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
3-
{"version":"v13.4.0","date":"2019-12-17","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":true},
3+
{"version":"v13.4.0","date":"2019-12-17","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-riscv64","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.9.317.25","uv":"1.34.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":true},
44
{"version":"v13.3.0","date":"2019-12-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.1","v8":"7.9.317.25","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
55
{"version":"v13.2.0","date":"2019-11-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.1","v8":"7.9.317.23","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
66
{"version":"v13.1.0","date":"2019-11-05","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.1","v8":"7.8.279.17","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
77
{"version":"v13.0.1","date":"2019-10-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.8.279.17","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
88
{"version":"v13.0.0","date":"2019-10-10","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.8.279.17","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"79","lts":false,"security":false},
99
{"version":"v12.14.0","date":"2019-12-16","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.13.4","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":true},
10-
{"version":"v12.13.1","date":"2019-11-19","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.1","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
10+
{"version":"v12.13.1","date":"2019-11-19","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-riscv64","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.1","v8":"7.7.299.13","uv":"1.33.1","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
1111
{"version":"v12.13.0","date":"2019-10-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.12.0","v8":"7.7.299.13","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":"Erbium","security":false},
1212
{"version":"v12.12.0","date":"2019-10-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"7.7.299.13","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1d","modules":"72","lts":false,"security":false},
1313
{"version":"v12.11.1","date":"2019-10-01","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","sunos-x64","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.11.3","v8":"7.7.299.11","uv":"1.32.0","zlib":"1.2.11","openssl":"1.1.1c","modules":"72","lts":false,"security":false},

0 commit comments

Comments
 (0)