From c40b3c6d2a4a36a75a13a9756c451bdc70086081 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Tue, 6 Oct 2015 23:31:14 +1100 Subject: [PATCH] src: add 'dynamic' process.release.lts property This makes the process.release.lts property configurable by a constant. This ref is the original PR to v6.x. Refs: https://github.com/nodejs/node/pull/3212 Conflicts: doc/api/process.md PR-URL: https://github.com/nodejs/node/pull/16656 Reviewed-By: Myles Borins Reviewed-By: Colin Ihrig Reviewed-By: Gireesh Punathil Reviewed-By: Anatoli Papirovski --- doc/api/process.md | 6 +++++- src/node.cc | 5 +++++ test/parallel/test-process-release.js | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-process-release.js diff --git a/doc/api/process.md b/doc/api/process.md index 4ff5013f50d239..ef1a916a43653f 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -1444,7 +1444,11 @@ tarball. compiling Node.js native add-ons. _This property is only present on Windows builds of Node.js and will be missing on all other platforms._ * `lts` {string} a string label identifying the [LTS][] label for this release. - If the Node.js release is not an LTS release, this will be `undefined`. + This property only exists for LTS releases and is `undefined` for all other + release types, including _Current_ releases. Currently the valid values are: + - `'Argon'` for the v4.x LTS line beginning with v4.2.0. + - `'Boron'` for the v6.x LTS line beginning with v6.9.0. + - `'Carbon'` for the v8.x LTS line beginning with v8.9.1. For example: diff --git a/src/node.cc b/src/node.cc index bfe36f218adf4b..3e88f36e1353cf 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3496,6 +3496,11 @@ void SetupProcessObject(Environment* env, READONLY_PROPERTY(release, "name", OneByteString(env->isolate(), NODE_RELEASE)); +#if NODE_VERSION_IS_LTS + READONLY_PROPERTY(release, "lts", + OneByteString(env->isolate(), NODE_VERSION_LTS_CODENAME)); +#endif + // if this is a release build and no explicit base has been set // substitute the standard release download URL #ifndef NODE_RELEASE_URLBASE diff --git a/test/parallel/test-process-release.js b/test/parallel/test-process-release.js new file mode 100644 index 00000000000000..5d5228af72b599 --- /dev/null +++ b/test/parallel/test-process-release.js @@ -0,0 +1,16 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const versionParts = process.versions.node.split('.'); + +assert.equal(process.release.name, 'node'); + +// it's expected that future LTS release lines will have additional +// branches in here +if (versionParts[0] === '4' && versionParts[1] >= 2) { + assert.equal(process.release.lts, 'Argon'); +} else if (versionParts[0] === '6' && versionParts[1] >= 9) { + assert.equal(process.release.lts, 'Boron'); +} else { + assert.strictEqual(process.release.lts, undefined); +}