diff --git a/.github/workflows/latest-npm.yml b/.github/workflows/latest-npm.yml index b616158..b66c605 100644 --- a/.github/workflows/latest-npm.yml +++ b/.github/workflows/latest-npm.yml @@ -8,6 +8,12 @@ jobs: outputs: latest: ${{ steps.set-matrix.outputs.requireds }} steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + iojs.org:443 + nodejs.org:443 - uses: ljharb/actions/node/matrix@main id: set-matrix with: @@ -39,6 +45,14 @@ jobs: - node-version: "0.10" steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 + iojs.org:443 + nodejs.org:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 - uses: ljharb/actions/node/install@main name: 'nvm install-latest-npm' @@ -55,4 +69,8 @@ jobs: needs: [nodes] runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + egress-policy: block - run: 'echo tests completed' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 32f279d..62fc960 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,6 +8,12 @@ jobs: contents: read runs-on: ubuntu-latest steps: + - uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 + nodejs.org:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 - uses: ljharb/actions/node/install@main name: 'nvm install ${{ matrix.node-version }} && npm install' @@ -20,6 +26,14 @@ jobs: contents: read runs-on: ubuntu-latest steps: + - uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + ghcr.io:443 + github.com:443 + pkg-containers.githubusercontent.com:443 + nodejs.org:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 - uses: ljharb/actions/node/install@main name: 'nvm install ${{ matrix.node-version }} && npm install' @@ -32,6 +46,12 @@ jobs: contents: read runs-on: ubuntu-latest steps: + - uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 + nodejs.org:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 - uses: ljharb/actions/node/install@main name: 'nvm install ${{ matrix.node-version }} && npm install' @@ -44,6 +64,10 @@ jobs: contents: read runs-on: ubuntu-latest steps: + - uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 - uses: actions/checkout@v2 - name: check tests filenames run: ./rename_test.sh --check diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index e97e6a9..9f48710 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -11,6 +11,12 @@ jobs: runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + api.github.com:443 + github.com:443 - uses: actions/checkout@v2 - uses: ljharb/rebase@master env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dfd9969..52c133d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,6 +8,12 @@ jobs: contents: read runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: diff --git a/.github/workflows/require-allow-edits.yml b/.github/workflows/require-allow-edits.yml index b92dcd5..427eecb 100644 --- a/.github/workflows/require-allow-edits.yml +++ b/.github/workflows/require-allow-edits.yml @@ -11,6 +11,11 @@ jobs: runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + api.github.com:443 - uses: ljharb/require-allow-edits@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 7b375a8..aafcb7f 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -26,9 +26,18 @@ jobs: file: nvm-exec # only runs in bash steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + ghcr.io:443 + github.com:443 + pkg-containers.githubusercontent.com:443 - uses: actions/checkout@v2 - name: Install shellcheck run: brew install shellcheck + env: + HOMEBREW_NO_ANALYTICS: 1 - run: "shellcheck --version" - name: Run shellcheck on ${{ matrix.file }} run: shellcheck -s ${{ matrix.shell }} ${{ matrix.file }} @@ -39,4 +48,8 @@ jobs: needs: [shellcheck_matrix] runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + egress-policy: block - run: 'echo tests completed' diff --git a/.github/workflows/toc.yml b/.github/workflows/toc.yml index 60ed577..6a0fa6d 100644 --- a/.github/workflows/toc.yml +++ b/.github/workflows/toc.yml @@ -11,6 +11,12 @@ jobs: runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@v1 + with: + allowed-endpoints: + github.com:443 + registry.npmjs.org:443 - uses: actions/checkout@v2 with: # https://github.com/actions/checkout/issues/217#issue-599945005 diff --git a/.github/workflows/windows-npm.yml b/.github/workflows/windows-npm.yml index 90c5002..29fef33 100644 --- a/.github/workflows/windows-npm.yml +++ b/.github/workflows/windows-npm.yml @@ -87,6 +87,9 @@ jobs: wsl_matrix: name: 'WSL nvm install' + defaults: + run: + shell: wsl-bash {0} runs-on: windows-latest env: WSLENV: NVM_INSTALL_GITHUB_REPO:NVM_INSTALL_VERSION:/p @@ -99,19 +102,24 @@ jobs: - Ubuntu-18.04 npm-node-version: - '--lts' + - '14' + - '12' - '11' + - '10' + method: + - '' + - 'script' steps: - uses: Vampire/setup-wsl@v1 with: distribution: ${{ matrix.wsl-distrib }} - additional-packages: bash git curl ca-certificates + additional-packages: bash git curl ca-certificates wget - name: Retrieve nvm on WSL - shell: wsl-bash {0} run: | - if [ "${{ matrix.wsl-distrib }}" = "Ubuntu-18.04" ] && [ "${{ matrix.npm-node-version }}" = "--lts" ]; then + if [ -z "${{ matrix.method }}" ]; then curl -fsSLo- "https://raw.githubusercontent.com/${NVM_INSTALL_GITHUB_REPO}/${NVM_INSTALL_VERSION}/install.sh" | bash else - curl -fsSLo- "https://raw.githubusercontent.com/${NVM_INSTALL_GITHUB_REPO}/${NVM_INSTALL_VERSION}/install.sh" | METHOD=script bash + curl -fsSLo- "https://raw.githubusercontent.com/${NVM_INSTALL_GITHUB_REPO}/${NVM_INSTALL_VERSION}/install.sh" | METHOD="${{matrix.method}}" bash fi . "$HOME/.nvm/nvm.sh" nvm install ${{ matrix.npm-node-version }} diff --git a/README.md b/README.md index 8891021..8346f0b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Node Version Manager [![Build Status](https://travis-ci.org/nvm-sh/nvm.svg?branch=master)][3] [![nvm version](https://img.shields.io/badge/version-v0.39.0-yellow.svg)][4] [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/684/badge)](https://bestpractices.coreinfrastructure.org/projects/684) +# Node Version Manager [![Build Status](https://travis-ci.org/nvm-sh/nvm.svg?branch=master)][3] [![nvm version](https://img.shields.io/badge/version-v0.39.1-yellow.svg)][4] [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/684/badge)](https://bestpractices.coreinfrastructure.org/projects/684) @@ -90,10 +90,10 @@ nvm is a version manager for [node.js](https://nodejs.org/en/), designed to be i To **install** or **update** nvm, you should run the [install script][2]. To do that, you may either download and run the script manually, or use the following cURL or Wget command: ```sh -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` ```sh -wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` Running either of the above commands downloads a script and runs it. The script clones the nvm repository to `~/.nvm`, and attempts to add the source lines from the snippet below to the correct profile file (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`). @@ -152,6 +152,8 @@ If the above doesn't fix the problem, you may try the following: - For more information about this issue and possible workarounds, please [refer here](https://github.com/nvm-sh/nvm/issues/576) +**Note** For Macs with the M1 chip, node started providing **arm64** arch darwin packages since v16.0.0. For earlier versions, there were only **darwin_x64** packages available but no **darwin_arm64**. If you are facing issues installing node using `nvm`, you may want to update to v16 or later. + #### Ansible You can use a task: @@ -159,7 +161,7 @@ You can use a task: ```yaml - name: nvm shell: > - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash args: creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh" ``` @@ -221,7 +223,7 @@ If you have `git` installed (requires git v1.7.10+): 1. clone this repo in the root of your user profile - `cd ~/` from anywhere then `git clone https://github.com/nvm-sh/nvm.git .nvm` -1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.0` +1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.1` 1. activate `nvm` by sourcing it from your shell: `. ./nvm.sh` Now add these lines to your `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login: @@ -572,7 +574,7 @@ cdnvm() { nvm use default; fi - elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then + elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then declare nvm_version nvm_version=$(<"$nvm_path"/.nvmrc) @@ -787,7 +789,7 @@ If installing nvm on Alpine Linux *is* still what you want or need to do, you sh ```sh apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` The Node project has some desire but no concrete plans (due to the overheads of building, testing and support) to offer Alpine-compatible binaries. @@ -884,9 +886,9 @@ You have to make sure that the user directory name in `$HOME` and the user direc To change the user directory and/or account name follow the instructions [here](https://support.apple.com/en-us/HT201548) [1]: https://github.com/nvm-sh/nvm.git -[2]: https://github.com/nvm-sh/nvm/blob/v0.39.0/install.sh +[2]: https://github.com/nvm-sh/nvm/blob/v0.39.1/install.sh [3]: https://travis-ci.org/nvm-sh/nvm -[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.0 +[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.1 [Urchin]: https://github.com/scraperwiki/urchin [Fish]: http://fishshell.com @@ -901,56 +903,70 @@ Homebrew causes insecure directories like `/usr/local/share/zsh/site-functions` **Macs with M1 chip** -_January 2021:_ there are no pre-compiled NodeJS binaries for versions prior to 15.x for Apple's new M1 chip (arm64 architecture). +Experimental support for the M1 architecture was added in node.js v15.3 and full support was added in v16.0. +Because of this, if you try to install older versions of node as usual, you will probably experience either compilation errors when installing node or out-of-memory errors while running your code. -Some issues you may encounter: +So, if you want to run a version prior to v16.0 on an M1 Mac, it may be best to compile node targeting the x86_64 Intel architecture so that Rosetta 2 can translate the x86_64 processor instructions to ARM-based Apple Silicon instructions. +Here's what you will need to do: -- using `nvm` to install, say, `v14.15.4`: - - the C code compiles successfully - - but crashes with an out of memory error when used - - increasing the memory available to node still produces the out of memory errors: - ```sh - $ NODE_OPTIONS="--max-old-space-size=4096" ./node_modules/.bin/your_node_package - ``` -- when using `nvm` to install some versions, the compilation fails +- Install Rosetta, if you haven't already done so -One solution to this issue is to change the architecture of your shell from arm64 to x86. + ```sh + $ softwareupdate --install-rosetta + ``` -Let's assume that: -- you already have versions `12.20.1` and `14.15.4` installed using `nvm` -- the current version in use is `14.15.4` -- you are using the `zsh` shell -- you have Rosetta 2 installed (macOS prompts you to install Rosetta 2 the first time you open a Intel-only non-command-line application, or you may install Rosetta 2 from the command line with `softwareupdate --install-rosetta`) + You might wonder, "how will my M1 Mac know to use Rosetta for a version of node compiled for an Intel chip?". + If an executable contains only Intel instructions, macOS will automatically use Rosetta to translate the instructions. -```sh -# Check what version you're running: -$ node --version -v14.15.4 -# Check architecture of the `node` binary: -$ node -p process.arch -arm64 -# This confirms that the arch is for the M1 chip, which is causing the problems. -# So we need to uninstall it. -# We can't uninstall the version we are currently using, so switch to another version: -$ nvm install v12.20.1 -# Now uninstall the version we want to replace: -$ nvm uninstall v14.15.4 -# Launch a new zsh process under the 64-bit X86 architecture: -$ arch -x86_64 zsh -# Install node using nvm. This should download the precompiled x64 binary: -$ nvm install v14.15.4 -# Now check that the architecture is correct: -$ node -p process.arch -x64 -# It is now safe to return to the arm64 zsh process: -$ exit -# We're back to a native shell: -$ arch -arm64 -# And the new version is now available to use: -$ nvm use v14.15.4 -Now using node v14.15.4 (npm v6.14.10) -``` +- Open a shell that's running using Rosetta + + ```sh + $ arch -x86_64 zsh + ``` + + Note: This same thing can also be accomplished by finding the Terminal or iTerm App in Finder, right clicking, selecting "Get Info", and then checking the box labeled "Open using Rosetta". + + Note: This terminal session is now running in `zsh`. + If `zsh` is not the shell you typically use, `nvm` may not be `source`'d automatically like it probably is for your usual shell through your dotfiles. + If that's the case, make sure to source `nvm`. + + ```sh + $ source "${NVM_DIR}/.nvm/nvm.sh" + ``` + +- Install whatever older version of node you are interested in. Let's use 12.22.1 as an example. + This will fetch the node source code and compile it, which will take several minutes. + + ```sh + $ nvm install v12.22.1 --shared-zlib + ``` + + Note: You're probably curious why `--shared-zlib` is included. + There's a bug in recent versions of Apple's system `clang` compiler. + If one of these broken versions is installed on your system, the above step will likely still succeed even if you didn't include the `--shared-zlib` flag. + However, later, when you attempt to `npm install` something using your old version of node.js, you will see `incorrect data check` errors. + If you want to avoid the possible hassle of dealing with this, include that flag. + For more details, see [this issue](https://github.com/nodejs/node/issues/39313) and [this comment](https://github.com/nodejs/node/issues/39313#issuecomment-902395576) + +- Exit back to your native shell. + + ```sh + $ exit + $ arch + arm64 + ``` + + Note: If you selected the box labeled "Open using Rosetta" rather than running the CLI command in the second step, you will see `i386` here. + Unless you have another reason to have that box selected, you can deselect it now. + +- Check to make sure the architecture is correct. `x64` is the abbreviation for x86_64, which is what you want to see. + + ```sh + $ node -p process.arch + x64 + ``` + +Now you should be able to use node as usual. ## Maintainers diff --git a/install.sh b/install.sh index c5bc50f..c3dc782 100755 --- a/install.sh +++ b/install.sh @@ -27,7 +27,7 @@ nvm_install_dir() { } nvm_latest_version() { - nvm_echo "v0.39.0" + nvm_echo "v0.39.1" } nvm_profile_is_bash_or_zsh() { @@ -300,7 +300,7 @@ nvm_detect_profile() { nvm_check_global_modules() { local NPM_COMMAND NPM_COMMAND="$(command -v npm 2>/dev/null)" || return 0 - [ -n "${NVM_DIR}" ] && [ -z "${NPM_COMMAND%%$NVM_DIR/*}" ] && return 0 + [ -n "${NVM_DIR}" ] && [ -z "${NPM_COMMAND%%"$NVM_DIR"/*}" ] && return 0 local NPM_VERSION NPM_VERSION="$(npm --version)" @@ -360,7 +360,7 @@ nvm_do_install() { # Autodetect install method if nvm_has git; then install_nvm_from_git - elif nvm_has nvm_download; then + elif nvm_has curl || nvm_has wget; then install_nvm_as_script else nvm_echo >&2 'You need git, curl, or wget to install nvm' @@ -373,7 +373,7 @@ nvm_do_install() { fi install_nvm_from_git elif [ "${METHOD}" = 'script' ]; then - if ! nvm_has nvm_download; then + if ! nvm_has curl && ! nvm_has wget; then nvm_echo >&2 "You need curl or wget to install nvm" exit 1 fi diff --git a/nvm.sh b/nvm.sh index 72992c1..1a811f7 100644 --- a/nvm.sh +++ b/nvm.sh @@ -634,7 +634,7 @@ nvm_remote_versions() { NVM_LS_REMOTE_EXIT_CODE=$? # split output into two NVM_LS_REMOTE_PRE_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT%%v4\.0\.0*}" - NVM_LS_REMOTE_POST_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT#$NVM_LS_REMOTE_PRE_MERGED_OUTPUT}" + NVM_LS_REMOTE_POST_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT#"$NVM_LS_REMOTE_PRE_MERGED_OUTPUT"}" fi local NVM_LS_REMOTE_IOJS_EXIT_CODE @@ -687,6 +687,29 @@ nvm_normalize_version() { }' "${1#v}" } +nvm_normalize_lts() { + local LTS + LTS="${1-}" + + if [ "$(expr "${LTS}" : '^lts/-[1-9][0-9]*$')" -gt 0 ]; then + local N + N="$(echo "${LTS}" | cut -d '-' -f 2)" + N=$((N+1)) + local NVM_ALIAS_DIR + NVM_ALIAS_DIR="$(nvm_alias_path)" + local RESULT + RESULT="$(command ls "${NVM_ALIAS_DIR}/lts" | command tail -n "${N}" | command head -n 1)" + if [ "${RESULT}" != '*' ]; then + nvm_echo "lts/${RESULT}" + else + nvm_err 'That many LTS releases do not exist yet.' + return 2 + fi + else + nvm_echo "${LTS}" + fi +} + nvm_ensure_version_prefix() { local NVM_VERSION NVM_VERSION="$(nvm_strip_iojs_prefix "${1-}" | command sed -e 's/^\([0-9]\)/v\1/g')" @@ -940,7 +963,7 @@ nvm_print_alias_path() { return 2 fi local ALIAS - ALIAS="${ALIAS_PATH##${NVM_ALIAS_DIR}\/}" + ALIAS="${ALIAS_PATH##"${NVM_ALIAS_DIR}"\/}" local DEST DEST="$(nvm_alias "${ALIAS}" 2>/dev/null)" ||: if [ -n "${DEST}" ]; then @@ -988,6 +1011,11 @@ nvm_list_aliases() { NVM_ALIAS_DIR="$(nvm_alias_path)" command mkdir -p "${NVM_ALIAS_DIR}/lts" + if [ "${ALIAS}" != "${ALIAS#lts/}" ]; then + nvm_alias "${ALIAS}" + return $? + fi + nvm_is_zsh && unsetopt local_options nomatch ( local ALIAS_PATH @@ -1038,27 +1066,14 @@ nvm_alias() { nvm_err 'An alias is required.' return 1 fi + ALIAS="$(nvm_normalize_lts "${ALIAS}")" - local NVM_ALIAS_DIR - NVM_ALIAS_DIR="$(nvm_alias_path)" - - if [ "$(expr "${ALIAS}" : '^lts/-[1-9][0-9]*$')" -gt 0 ]; then - local N - N="$(echo "${ALIAS}" | cut -d '-' -f 2)" - N=$((N+1)) - local RESULT - RESULT="$(command ls "${NVM_ALIAS_DIR}/lts" | command tail -n "${N}" | command head -n 1)" - if [ "${RESULT}" != '*' ]; then - nvm_alias "lts/${RESULT}" - return $? - else - nvm_err 'That many LTS releases do not exist yet.' - return 2 - fi + if [ -z "${ALIAS}" ]; then + return 2 fi local NVM_ALIAS_PATH - NVM_ALIAS_PATH="${NVM_ALIAS_DIR}/${ALIAS}" + NVM_ALIAS_PATH="$(nvm_alias_path)/${ALIAS}" if [ ! -f "${NVM_ALIAS_PATH}" ]; then nvm_err 'Alias does not exist.' return 2 @@ -1186,7 +1201,7 @@ nvm_strip_iojs_prefix() { if [ "${1-}" = "${NVM_IOJS_PREFIX}" ]; then nvm_echo else - nvm_echo "${1#${NVM_IOJS_PREFIX}-}" + nvm_echo "${1#"${NVM_IOJS_PREFIX}"-}" fi } @@ -1450,6 +1465,11 @@ nvm_ls_remote_index_tab() { $VERSION_LIST EOF + if [ -n "${LTS-}" ]; then + LTS="$(nvm_normalize_lts "lts/${LTS}")" + LTS="${LTS#lts/}" + fi + VERSIONS="$({ command awk -v lts="${LTS-}" '{ if (!$1) { next } if (lts && $10 ~ /^\-?$/) { next } @@ -1951,19 +1971,7 @@ nvm_install_binary_extract() { command unzip -q "${TARBALL}" -d "${TMPDIR}" || return 1 # For non Windows system (including WSL running on Windows) else - local tar_compression_flag - tar_compression_flag='z' - if nvm_supports_xz "${VERSION}"; then - tar_compression_flag='J' - fi - - local tar - if [ "${NVM_OS}" = 'aix' ]; then - tar='gtar' - else - tar='tar' - fi - command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 || return 1 + nvm_extract_tarball "${NVM_OS}" "${VERSION}" "${TARBALL}" "${TMPDIR}" fi command mkdir -p "${VERSION_PATH}" || return 1 @@ -2093,6 +2101,14 @@ nvm_get_download_slug() { fi fi + # If node version in below 16.0.0 then there is no arm64 packages available in node repositories, so we have to install "x64" arch packages + # If running MAC M1 :: arm64 arch and Darwin OS then use "x64" Architecture because node doesn't provide darwin_arm64 package below v16.0.0 + if nvm_version_greater '16.0.0' "${VERSION}"; then + if [ "_${NVM_OS}" = '_darwin' ] && [ "${NVM_ARCH}" = 'arm64' ]; then + NVM_ARCH=x64 + fi + fi + if [ "${KIND}" = 'binary' ]; then nvm_echo "${FLAVOR}-${VERSION}-${NVM_OS}-${NVM_ARCH}" elif [ "${KIND}" = 'source' ]; then @@ -2223,6 +2239,48 @@ nvm_download_artifact() { nvm_echo "${TARBALL}" } +# args: nvm_os, version, tarball, tmpdir +nvm_extract_tarball() { + if [ "$#" -ne 4 ]; then + nvm_err 'nvm_extract_tarball requires exactly 4 arguments' + return 5 + fi + + local NVM_OS + NVM_OS="${1-}" + + local VERSION + VERSION="${2-}" + + local TARBALL + TARBALL="${3-}" + + local TMPDIR + TMPDIR="${4-}" + + local tar_compression_flag + tar_compression_flag='z' + if nvm_supports_xz "${VERSION}"; then + tar_compression_flag='J' + fi + + local tar + tar='tar' + if [ "${NVM_OS}" = 'aix' ]; then + tar='gtar' + fi + + if [ "${NVM_OS}" = 'openbsd' ]; then + if [ "${tar_compression_flag}" = 'J' ]; then + command xzcat "${TARBALL}" | "${tar}" -xf - -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 + else + command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 + fi + else + command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 || return 1 + fi +} + nvm_get_make_jobs() { if nvm_is_natural_num "${1-}"; then NVM_MAKE_JOBS="$1" @@ -2334,18 +2392,6 @@ nvm_install_source() { fi fi - local tar_compression_flag - tar_compression_flag='z' - if nvm_supports_xz "${VERSION}"; then - tar_compression_flag='J' - fi - - local tar - tar='tar' - if [ "${NVM_OS}" = 'aix' ]; then - tar='gtar' - fi - local TARBALL local TMPDIR local VERSION_PATH @@ -2365,7 +2411,7 @@ nvm_install_source() { if ! ( # shellcheck disable=SC2086 command mkdir -p "${TMPDIR}" && \ - command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 && \ + nvm_extract_tarball "${NVM_OS}" "${VERSION}" "${TARBALL}" "${TMPDIR}" && \ VERSION_PATH="$(nvm_version_path "${PREFIXED_VERSION}")" && \ nvm_cd "${TMPDIR}" && \ nvm_echo '$>'./configure --prefix="${VERSION_PATH}" $ADDITIONAL_PARAMETERS'<' && \ @@ -2614,7 +2660,7 @@ nvm_node_version_has_solaris_binary() { # Succeeds if $VERSION represents a version (node, io.js or merged) that has a # Solaris binary, fails otherwise. nvm_has_solaris_binary() { - local VERSION=$1 + local VERSION="${1-}" if nvm_is_merged_node_version "${VERSION}"; then return 0 # All merged node versions have a Solaris binary elif nvm_is_iojs_version "${VERSION}"; then @@ -3789,8 +3835,14 @@ nvm() { PATTERN="${1-}" if [ -z "${NVM_LTS-}" ]; then case "${PATTERN}" in - 'lts/*') NVM_LTS='*' ;; - lts/*) NVM_LTS="${PATTERN##lts/}" ;; + 'lts/*') + NVM_LTS='*' + PATTERN='' + ;; + lts/*) + NVM_LTS="${PATTERN##lts/}" + PATTERN='' + ;; esac fi fi @@ -4073,7 +4125,7 @@ nvm() { NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}" ;; "--version" | "-v") - nvm_echo '0.39.0' + nvm_echo '0.39.1' ;; "unload") nvm deactivate >/dev/null 2>&1 @@ -4095,7 +4147,7 @@ nvm() { nvm_resolve_alias nvm_ls_current nvm_alias \ nvm_binary_available nvm_change_path nvm_strip_path \ nvm_num_version_groups nvm_format_version nvm_ensure_version_prefix \ - nvm_normalize_version nvm_is_valid_version \ + nvm_normalize_version nvm_is_valid_version nvm_normalize_lts \ nvm_ensure_version_installed nvm_cache_dir \ nvm_version_path nvm_alias_path nvm_version_dir \ nvm_find_nvmrc nvm_find_up nvm_find_project_dir nvm_tree_contains_path \ @@ -4117,7 +4169,7 @@ nvm() { nvm_npmrc_bad_news_bears \ nvm_get_colors nvm_set_colors nvm_print_color_code nvm_format_help_message_colors \ nvm_echo_with_colors nvm_err_with_colors \ - nvm_get_artifact_compression nvm_install_binary_extract \ + nvm_get_artifact_compression nvm_install_binary_extract nvm_extract_tarball \ >/dev/null 2>&1 unset NVM_RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_IOJS_ORG_MIRROR NVM_DIR \ NVM_CD_FLAGS NVM_BIN NVM_INC NVM_MAKE_JOBS \ diff --git a/package.json b/package.json index c0630c6..a15a784 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nvm", - "version": "0.39.0", + "version": "0.39.1", "description": "Node Version Manager - Simple bash script to manage multiple active node.js versions", "directories": { "test": "test" @@ -41,9 +41,9 @@ "homepage": "https://github.com/nvm-sh/nvm", "devDependencies": { "dockerfile_lint": "^0.3.4", - "doctoc": "^2.0.1", + "doctoc": "^2.1.0", "eclint": "^2.8.1", - "markdown-link-check": "^3.8.7", + "markdown-link-check": "^3.9.0", "replace": "^1.2.1", "semver": "^7.3.5", "urchin": "^0.0.5" diff --git a/test/fast/Aliases/nvm_list_aliases works with LTS aliases b/test/fast/Aliases/nvm_list_aliases works with LTS aliases new file mode 100755 index 0000000..058a915 --- /dev/null +++ b/test/fast/Aliases/nvm_list_aliases works with LTS aliases @@ -0,0 +1,25 @@ +#!/bin/sh + +\. ../../../nvm.sh + +die () { + echo "$@" + exit 1 +} + +set -e + +nvm_alias_path() { + nvm_echo "../../../alias" +} + +nvm ls-remote >/dev/null || die 'nvm ls-remote (to populate LTS aliases) failed' + +MOCKS_DIR="../Unit tests/mocks" + +EXPECTED_OUTPUT="$(cat "$MOCKS_DIR/lts-star.txt")" +STDOUT_OUTPUT="$(nvm_list_aliases "lts/*")" +STDERR_OUTPUT="$(nvm_list_aliases "lts/*" 2>&1 >/dev/null)" + +[ -z "${STDERR_OUTPUT}" ] || die "expected no stderr output, got >${STDERR_OUTPUT}<" +[ "${STDOUT_OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "expected ${EXPECTED_OUTPUT}, got >${STDOUT_OUTPUT}<" diff --git a/test/fast/Unit tests/mocks/LTS_names.txt b/test/fast/Unit tests/mocks/LTS_names.txt index e0ce3c1..32fdb6e 100644 --- a/test/fast/Unit tests/mocks/LTS_names.txt +++ b/test/fast/Unit tests/mocks/LTS_names.txt @@ -1,3 +1,4 @@ +gallium fermium erbium dubnium diff --git a/test/fast/Unit tests/mocks/lts-star.txt b/test/fast/Unit tests/mocks/lts-star.txt new file mode 100644 index 0000000..53d838a --- /dev/null +++ b/test/fast/Unit tests/mocks/lts-star.txt @@ -0,0 +1 @@ +lts/gallium diff --git a/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab b/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab index 9ad9279..ab075ba 100644 --- a/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab +++ b/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab @@ -1,4 +1,16 @@ version date files npm v8 uv zlib openssl modules lts security +v17.2.0 2021-11-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.1.0 2021-11-09 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.1 2021-10-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0 2021-10-19 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v16.13.1 2021-12-01 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.4.146.24 1.42.0 1.2.11 1.1.1l+quic 93 Gallium - +v16.13.0 2021-10-26 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.4.146.19 1.42.0 1.2.11 1.1.1l+quic 93 Gallium - +v16.12.0 2021-10-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.4.146.19 1.42.0 1.2.11 1.1.1l+quic 93 - - +v16.11.1 2021-10-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.19 1.42.0 1.2.11 1.1.1l+quic 93 - true +v16.11.0 2021-10-08 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.19 1.42.0 1.2.11 1.1.1l+quic 93 - - +v16.10.0 2021-09-22 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 93 - - +v16.9.1 2021-09-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 93 - - +v16.9.0 2021-09-07 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 93 - - v16.8.0 2021-08-25 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.0 9.2.230.21 1.42.0 1.2.11 1.1.1k+quic 93 - - v16.7.0 2021-08-18 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.20.3 9.2.230.21 1.42.0 1.2.11 1.1.1k+quic 93 - - v16.6.2 2021-08-11 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.20.3 9.2.230.21 1.41.0 1.2.11 1.1.1k+quic 93 - true @@ -30,6 +42,9 @@ v15.2.0 2020-11-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linu v15.1.0 2020-11-04 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.0.8 8.6.395.17 1.40.0 1.2.11 1.1.1g 88 - - v15.0.1 2020-10-21 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.0.3 8.6.395.17 1.40.0 1.2.11 1.1.1g 88 - - v15.0.0 2020-10-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.0.2 8.6.395.16 1.40.0 1.2.11 1.1.1g 88 - - +v14.18.2 2021-11-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.15 8.4.371.23 1.42.0 1.2.11 1.1.1l 83 Fermium - +v14.18.1 2021-10-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.15 8.4.371.23 1.42.0 1.2.11 1.1.1l 83 Fermium true +v14.18.0 2021-09-28 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.15 8.4.371.23 1.42.0 1.2.11 1.1.1l 83 Fermium - v14.17.6 2021-08-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.15 8.4.371.23 1.41.0 1.2.11 1.1.1l 83 Fermium true v14.17.5 2021-08-11 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.14 8.4.371.23 1.41.0 1.2.11 1.1.1k 83 Fermium true v14.17.4 2021-07-29 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 6.14.14 8.4.371.23 1.41.0 1.2.11 1.1.1k 83 Fermium true @@ -79,6 +94,8 @@ v13.2.0 2019-11-21 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linu v13.1.0 2019-11-05 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 6.12.1 7.8.279.17 1.33.1 1.2.11 1.1.1d 79 - - v13.0.1 2019-10-23 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 6.12.0 7.8.279.17 1.33.1 1.2.11 1.1.1d 79 - - v13.0.0 2019-10-22 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 6.12.0 7.8.279.17 1.32.0 1.2.11 1.1.1d 79 - - +v12.22.8 2021-12-16 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 6.14.15 7.8.279.23 1.40.0 1.2.11 1.1.1m 72 Erbium - +v12.22.7 2021-10-12 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 6.14.15 7.8.279.23 1.40.0 1.2.11 1.1.1l 72 Erbium true v12.22.6 2021-08-30 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 6.14.15 7.8.279.23 1.40.0 1.2.11 1.1.1l 72 Erbium true v12.22.5 2021-08-11 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 6.14.14 7.8.279.23 1.40.0 1.2.11 1.1.1k 72 Erbium true v12.22.4 2021-07-29 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 6.14.14 7.8.279.23 1.40.0 1.2.11 1.1.1k 72 Erbium true diff --git a/test/fast/Unit tests/mocks/nodejs.org-download-nightly-index.tab b/test/fast/Unit tests/mocks/nodejs.org-download-nightly-index.tab index 62831c2..8cf5d0d 100644 --- a/test/fast/Unit tests/mocks/nodejs.org-download-nightly-index.tab +++ b/test/fast/Unit tests/mocks/nodejs.org-download-nightly-index.tab @@ -1,4 +1,107 @@ version date files npm v8 uv zlib openssl modules lts security +v18.0.0-nightly20211217a182a21636 2021-12-17 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.3.0 9.6.180.15 1.42.0 1.2.11 3.0.1+quic 102 - - +v18.0.0-nightly20211216e56bf500c7 2021-12-16 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.3.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202112156267e55685 2021-12-15 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.3.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021121485d4cd3079 2021-12-14 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.3.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211213ad91abcbad 2021-12-13 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.3.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021121212e3c74e2e 2021-12-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021121142dd3ca869 2021-12-11 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211210ecf4114f94 2021-12-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021120918ff583250 2021-12-09 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211208c93a639788 2021-12-08 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202112071fa507f098 2021-12-07 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211206b323cec78f 2021-12-06 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.2.0 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211205147d23b211 2021-12-05 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211204781408f377 2021-12-04 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021120397b8eb62fe 2021-12-03 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211202e601c0d678 2021-12-02 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211201bbed2a77d3 2021-12-01 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111306d8ab767e4 2021-11-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.15 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111294b65dec76d 2021-11-29 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211128265a47d680 2021-11-28 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211127a2572940cd 2021-11-27 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211126a5d3449f20 2021-11-26 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021112550f3428e21 2021-11-25 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111242a871df3df 2021-11-24 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211123d9de812cb8 2021-11-23 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.4 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211122bad6526a00 2021-11-22 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.6.180.14 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211121e31d1cb55d 2021-11-21 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211120a37b9c80ef 2021-11-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111198a09a1ec66 2021-11-19 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111180c2011c6c5 2021-11-18 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211117e6d8ae05b2 2021-11-17 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021111694fa781580 2021-11-16 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211115b323c63190 2021-11-15 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211114cf56abe6bb 2021-11-14 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111139cd30894f6 2021-11-13 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111122d005bb961 2021-11-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111116e1629786f 2021-11-11 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.3 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211110d8f1823d5f 2021-11-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111098d6a02583f 2021-11-09 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.25 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211108873119385f 2021-11-08 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211107549a4c9163 2021-11-07 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111050a62026f32 2021-11-05 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111042cc7a91a5d 2021-11-04 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202111032e2a6fecd9 2021-11-03 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211102229a182823 2021-11-02 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.2 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021110186099a375a 2021-11-01 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211031b5aa08d2f9 2021-10-31 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211030babd73ce25 2021-10-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211029e937662dec 2021-10-29 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202110283ff8c355c8 2021-10-28 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202110279c405f2591 2021-10-27 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202110269ebdba49c7 2021-10-26 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211025070b54a4ac 2021-10-25 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021102447fb8676ff 2021-10-24 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.1 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly2021102380e94dbb68 2021-10-23 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202110220d59d0d1c3 2021-10-22 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly20211021f233cb2c29 2021-10-21 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v18.0.0-nightly202110204cb3e06ed8 2021-10-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0-nightly202110193f11666dc7 2021-10-19 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.1.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0-nightly20211018c0a70203de 2021-10-18 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0-nightly20211017ed01811e71 2021-10-17 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0-nightly202110167624917069 2021-10-16 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - - +v17.0.0-nightly20211015a278117f28 2021-10-15 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.5.172.21 1.42.0 1.2.11 3.0.0+quic 102 - true +v17.0.0-nightly20211014f9996d5b80 2021-10-14 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src 8.0.0 9.5.172.19 1.42.0 1.2.11 3.0.0+quic 102 - true +v17.0.0-nightly20211013f570109094 2021-10-13 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.5.172.19 1.42.0 1.2.11 3.0.0+quic 102 - true +v17.0.0-nightly20211012a784258444 2021-10-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.18 1.42.0 1.2.11 3.0.0+quic 100 - - +v17.0.0-nightly202110110cc37209fa 2021-10-11 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.18 1.42.0 1.2.11 3.0.0+quic 100 - - +v17.0.0-nightly202110108068f40313 2021-10-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly20211009879ff775d0 2021-10-09 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly20211008dbc91de011 2021-10-08 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 8.0.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly2021100788e82b890b 2021-10-07 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly2021100628f711b552 2021-10-06 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly20211005dd3c4a5ded 2021-10-05 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly202110044bd8e0efa0 2021-10-04 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly20211003b5cfb264a1 2021-10-03 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.4.146.18 1.42.0 1.2.11 1.1.1l+quic 100 - - +v17.0.0-nightly20211002606bb52159 2021-10-02 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly2021100135dc3861cd 2021-10-01 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210930c44d683175 2021-09-30 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210929481c1609d8 2021-09-29 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109282caa308485 2021-09-28 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly2021092743291b98ed 2021-09-27 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly2021092685811d1ade 2021-09-26 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109258d83c47029 2021-09-25 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109243f619407fe 2021-09-24 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210923c7da13c7c4 2021-09-23 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109220991dfcece 2021-09-22 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109217153d25dd6 2021-09-21 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.24.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109204e8f11dee3 2021-09-20 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.23.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly2021091964287e4d45 2021-09-19 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip 7.23.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109186bfe5a6796 2021-09-18 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.23.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109178a920185cc 2021-09-17 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.23.0 9.3.345.19 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210916f182b9b29f 2021-09-16 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.23.0 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210915bbd4c6eee9 2021-09-15 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210914fa7c477704 2021-09-14 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109135c1adda0ae 2021-09-13 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210912df22736d80 2021-09-12 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109111b335d41a4 2021-09-11 aix-ppc64,headers,linux-arm64,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210910a42bd7e944 2021-09-10 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly202109098c905b81c1 2021-09-09 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210908861c3e0fba 2021-09-08 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly20210907c7222b3589 2021-09-07 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - - +v17.0.0-nightly2021090680785f6ec9 2021-09-06 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - true +v17.0.0-nightly20210905338ab0dfa0 2021-09-05 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - true v17.0.0-nightly20210904f26c2ce0a1 2021-09-04 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - true v17.0.0-nightly202109030c35fe02d3 2021-09-03 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - true v17.0.0-nightly2021090213b569c679 2021-09-02 aix-ppc64,headers,linux-arm64,linux-armv7l,linux-ppc64le,linux-s390x,linux-x64,osx-arm64-tar,osx-x64-pkg,osx-x64-tar,src,win-x64-7z,win-x64-exe,win-x64-msi,win-x64-zip,win-x86-7z,win-x86-exe,win-x86-msi,win-x86-zip 7.21.1 9.3.345.16 1.42.0 1.2.11 1.1.1l+quic 96 - true diff --git a/test/fast/Unit tests/mocks/nvm ls-remote lts.txt b/test/fast/Unit tests/mocks/nvm ls-remote lts.txt index 93f5c3a..d0918fa 100644 --- a/test/fast/Unit tests/mocks/nvm ls-remote lts.txt +++ b/test/fast/Unit tests/mocks/nvm ls-remote lts.txt @@ -141,7 +141,9 @@ v12.22.3  (LTS: Erbium) v12.22.4  (LTS: Erbium) v12.22.5  (LTS: Erbium) - v12.22.6  (Latest LTS: Erbium) + v12.22.6  (LTS: Erbium) + v12.22.7  (LTS: Erbium) + v12.22.8  (Latest LTS: Erbium) v14.15.0  (LTS: Fermium) v14.15.1  (LTS: Fermium) v14.15.2  (LTS: Fermium) @@ -156,4 +158,9 @@ v14.17.3  (LTS: Fermium) v14.17.4  (LTS: Fermium) v14.17.5  (LTS: Fermium) - v14.17.6  (Latest LTS: Fermium) + v14.17.6  (LTS: Fermium) + v14.18.0  (LTS: Fermium) + v14.18.1  (LTS: Fermium) + v14.18.2  (Latest LTS: Fermium) + v16.13.0  (LTS: Gallium) + v16.13.1  (Latest LTS: Gallium) diff --git a/test/fast/Unit tests/mocks/nvm ls-remote node.txt b/test/fast/Unit tests/mocks/nvm ls-remote node.txt index 016fbc5..87801ea 100644 --- a/test/fast/Unit tests/mocks/nvm ls-remote node.txt +++ b/test/fast/Unit tests/mocks/nvm ls-remote node.txt @@ -513,7 +513,9 @@ v12.22.3  (LTS: Erbium) v12.22.4  (LTS: Erbium) v12.22.5  (LTS: Erbium) - v12.22.6  (Latest LTS: Erbium) + v12.22.6  (LTS: Erbium) + v12.22.7  (LTS: Erbium) + v12.22.8  (Latest LTS: Erbium) v13.0.0 v13.0.1 v13.1.0 @@ -562,7 +564,10 @@ v14.17.3  (LTS: Fermium) v14.17.4  (LTS: Fermium) v14.17.5  (LTS: Fermium) - v14.17.6  (Latest LTS: Fermium) + v14.17.6  (LTS: Fermium) + v14.18.0  (LTS: Fermium) + v14.18.1  (LTS: Fermium) + v14.18.2  (Latest LTS: Fermium) v15.0.0 v15.0.1 v15.1.0 @@ -594,3 +599,15 @@ v16.6.2 v16.7.0 v16.8.0 + v16.9.0 + v16.9.1 + v16.10.0 + v16.11.0 + v16.11.1 + v16.12.0 + v16.13.0  (LTS: Gallium) + v16.13.1  (Latest LTS: Gallium) + v17.0.0 + v17.0.1 + v17.1.0 + v17.2.0 diff --git a/test/fast/Unit tests/mocks/nvm ls-remote.txt b/test/fast/Unit tests/mocks/nvm ls-remote.txt index d9277c8..31a2f2f 100644 --- a/test/fast/Unit tests/mocks/nvm ls-remote.txt +++ b/test/fast/Unit tests/mocks/nvm ls-remote.txt @@ -554,7 +554,9 @@ v12.22.3  (LTS: Erbium) v12.22.4  (LTS: Erbium) v12.22.5  (LTS: Erbium) - v12.22.6  (Latest LTS: Erbium) + v12.22.6  (LTS: Erbium) + v12.22.7  (LTS: Erbium) + v12.22.8  (Latest LTS: Erbium) v13.0.0 v13.0.1 v13.1.0 @@ -603,7 +605,10 @@ v14.17.3  (LTS: Fermium) v14.17.4  (LTS: Fermium) v14.17.5  (LTS: Fermium) - v14.17.6  (Latest LTS: Fermium) + v14.17.6  (LTS: Fermium) + v14.18.0  (LTS: Fermium) + v14.18.1  (LTS: Fermium) + v14.18.2  (Latest LTS: Fermium) v15.0.0 v15.0.1 v15.1.0 @@ -635,3 +640,15 @@ v16.6.2 v16.7.0 v16.8.0 + v16.9.0 + v16.9.1 + v16.10.0 + v16.11.0 + v16.11.1 + v16.12.0 + v16.13.0  (LTS: Gallium) + v16.13.1  (Latest LTS: Gallium) + v17.0.0 + v17.0.1 + v17.1.0 + v17.2.0 diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote LTS.txt b/test/fast/Unit tests/mocks/nvm_ls_remote LTS.txt index bfcef29..2fac41d 100644 --- a/test/fast/Unit tests/mocks/nvm_ls_remote LTS.txt +++ b/test/fast/Unit tests/mocks/nvm_ls_remote LTS.txt @@ -141,7 +141,9 @@ v12.22.2 Erbium v12.22.3 Erbium v12.22.4 Erbium v12.22.5 Erbium -v12.22.6 Erbium * +v12.22.6 Erbium +v12.22.7 Erbium +v12.22.8 Erbium * v14.15.0 Fermium v14.15.1 Fermium v14.15.2 Fermium @@ -156,4 +158,9 @@ v14.17.2 Fermium v14.17.3 Fermium v14.17.4 Fermium v14.17.5 Fermium -v14.17.6 Fermium * +v14.17.6 Fermium +v14.18.0 Fermium +v14.18.1 Fermium +v14.18.2 Fermium * +v16.13.0 Gallium +v16.13.1 Gallium * diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote nightly.txt b/test/fast/Unit tests/mocks/nvm_ls_remote nightly.txt index fd32cb7..30706f2 100644 --- a/test/fast/Unit tests/mocks/nvm_ls_remote nightly.txt +++ b/test/fast/Unit tests/mocks/nvm_ls_remote nightly.txt @@ -142,4 +142,5 @@ v13.13.1-nightly20200415947ddec091 v14.0.0-nightly20200421c3554307c6 v15.0.0-nightly2020102011f1ad939f v16.0.0-nightly20210420a0261d231c -v17.0.0-nightly20210904f26c2ce0a1 +v17.0.0-nightly202110193f11666dc7 +v18.0.0-nightly20211217a182a21636 diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote stable nightly.txt b/test/fast/Unit tests/mocks/nvm_ls_remote stable nightly.txt index ae8cdf0..96a1ede 100644 --- a/test/fast/Unit tests/mocks/nvm_ls_remote stable nightly.txt +++ b/test/fast/Unit tests/mocks/nvm_ls_remote stable nightly.txt @@ -1 +1 @@ -v17.0.0-nightly20210904f26c2ce0a1 +v18.0.0-nightly20211217a182a21636 diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote stable.txt b/test/fast/Unit tests/mocks/nvm_ls_remote stable.txt index 34326d6..f919416 100644 --- a/test/fast/Unit tests/mocks/nvm_ls_remote stable.txt +++ b/test/fast/Unit tests/mocks/nvm_ls_remote stable.txt @@ -1 +1 @@ -v16.8.0 +v17.2.0 diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote.txt b/test/fast/Unit tests/mocks/nvm_ls_remote.txt index f3f66c8..0bd77b1 100644 --- a/test/fast/Unit tests/mocks/nvm_ls_remote.txt +++ b/test/fast/Unit tests/mocks/nvm_ls_remote.txt @@ -513,7 +513,9 @@ v12.22.2 Erbium v12.22.3 Erbium v12.22.4 Erbium v12.22.5 Erbium -v12.22.6 Erbium * +v12.22.6 Erbium +v12.22.7 Erbium +v12.22.8 Erbium * v13.0.0 v13.0.1 v13.1.0 @@ -562,7 +564,10 @@ v14.17.2 Fermium v14.17.3 Fermium v14.17.4 Fermium v14.17.5 Fermium -v14.17.6 Fermium * +v14.17.6 Fermium +v14.18.0 Fermium +v14.18.1 Fermium +v14.18.2 Fermium * v15.0.0 v15.0.1 v15.1.0 @@ -594,3 +599,15 @@ v16.6.1 v16.6.2 v16.7.0 v16.8.0 +v16.9.0 +v16.9.1 +v16.10.0 +v16.11.0 +v16.11.1 +v16.12.0 +v16.13.0 Gallium +v16.13.1 Gallium * +v17.0.0 +v17.0.1 +v17.1.0 +v17.2.0 diff --git a/test/fast/Unit tests/mocks/nvm_make_alias LTS alias calls.txt b/test/fast/Unit tests/mocks/nvm_make_alias LTS alias calls.txt index f5cb8c1..6fd141f 100644 --- a/test/fast/Unit tests/mocks/nvm_make_alias LTS alias calls.txt +++ b/test/fast/Unit tests/mocks/nvm_make_alias LTS alias calls.txt @@ -1,6 +1,7 @@ -lts/*|lts/fermium -lts/fermium|v14.17.6 -lts/erbium|v12.22.6 +lts/*|lts/gallium +lts/gallium|v16.13.1 +lts/fermium|v14.18.2 +lts/erbium|v12.22.8 lts/dubnium|v10.24.1 lts/carbon|v8.17.0 lts/boron|v6.17.1 diff --git a/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable nightly.txt b/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable nightly.txt index 03b6389..0034b65 100644 --- a/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable nightly.txt +++ b/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable nightly.txt @@ -1 +1 @@ -17.0 +18.0 diff --git a/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable.txt b/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable.txt index bda3c37..8fad390 100644 --- a/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable.txt +++ b/test/fast/Unit tests/mocks/nvm_print_implicit_alias remote stable.txt @@ -1 +1 @@ -16.8 +17.2 diff --git a/test/fast/Unit tests/nvm ls-remote b/test/fast/Unit tests/nvm ls-remote index 7f54b4e..683fe92 100755 --- a/test/fast/Unit tests/nvm ls-remote +++ b/test/fast/Unit tests/nvm ls-remote @@ -1,6 +1,6 @@ #!/bin/sh -set -ex +set -e die () { echo "$@" ; cleanup ; exit 1; } @@ -22,6 +22,40 @@ nvm deactivate 2>/dev/null || die 'unable to deactivate' \. ../../common.sh +MOCKS_DIR="$PWD/mocks" + +nvm_download() { + if [ "$*" = "-L -s $(nvm_get_mirror node std)/index.tab -o -" ]; then + cat "$MOCKS_DIR/nodejs.org-dist-index.tab" + return + fi + return 42 +} + +EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote lts.txt" +OUTPUT="$(nvm ls-remote --lts | sed 's/[ \t]*$//')" +EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )" +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm ls-remote --lts did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")" + +EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote lts.txt" +OUTPUT="$(nvm ls-remote "lts/*" | sed 's/[ \t]*$//')" +EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )" +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm ls-remote lts/* did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")" + +MOCKS_DIR="$PWD/mocks" +LTS_NAMES_PATH="${MOCKS_DIR}/LTS_names.txt" +LTS_LIST="$(cat "${LTS_NAMES_PATH}" | tail -n +2)" + +INDEX=1 +printf '%s\n' "${LTS_LIST}" | while IFS= read -r LTS; do + ACTUAL="$(nvm ls-remote "lts/-${INDEX}" | sed 's/[ \t]*$//')" + MESSAGE="for lts/-${INDEX} (${LTS})" + EXPECTED="$(nvm ls-remote "lts/${LTS}" | sed 's/[ \t]*$//')" + [ "${ACTUAL}" = "${EXPECTED}" ] || die "${MESSAGE}: expected >${EXPECTED}<, got >${ACTUAL}<" + + INDEX=$(($INDEX + 1)) +done + REMOTE="$PWD/mocks/nvm_ls_remote.txt" nvm_ls_remote() { cat "$REMOTE" @@ -31,8 +65,7 @@ nvm_ls_remote_iojs() { cat "$REMOTE_IOJS" } -EXPECTED_OUTPUT_PATH="$PWD/mocks/nvm ls-remote.txt" - +EXPECTED_OUTPUT_PATH="${MOCKS_DIR}/nvm ls-remote.txt" OUTPUT="$(nvm ls-remote | sed 's/[ \t]*$//')" EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH" | sed 's/[ \t]*$//' )" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm ls-remote did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")" diff --git a/test/fast/Unit tests/nvm_extract_tarball b/test/fast/Unit tests/nvm_extract_tarball new file mode 100755 index 0000000..4cf7533 --- /dev/null +++ b/test/fast/Unit tests/nvm_extract_tarball @@ -0,0 +1,12 @@ +#!/bin/sh + +die () { echo "$@" ; exit 1; } + +\. ../../../nvm.sh + +[ "$(nvm_extract_tarball 2>&1)" = "nvm_extract_tarball requires exactly 4 arguments" ] || die 'incorrect error message with no args' +[ "$(nvm_extract_tarball > /dev/null 2>&1 ; echo $?)" = "5" ] || die 'incorrect error code with no args' +[ "$(nvm_extract_tarball one two three 2>&1)" = "nvm_extract_tarball requires exactly 4 arguments" ] || die 'incorrect error message with three args' +[ "$(nvm_extract_tarball one two three > /dev/null 2>&1 ; echo $?)" = "5" ] || die 'incorrect error code with three args' +[ "$(nvm_extract_tarball one two three four five 2>&1)" = "nvm_extract_tarball requires exactly 4 arguments" ] || die 'incorrect error message with five args' +[ "$(nvm_extract_tarball one two three four five > /dev/null 2>&1 ; echo $?)" = "5" ] || die 'incorrect error code with five args' diff --git a/test/fast/Unit tests/nvm_get_download_slug b/test/fast/Unit tests/nvm_get_download_slug new file mode 100755 index 0000000..a4a0bc4 --- /dev/null +++ b/test/fast/Unit tests/nvm_get_download_slug @@ -0,0 +1,111 @@ +#!/bin/sh + +cleanup() { + unset nvm_get_os + unset nvm_get_arch +} + +die () { cleanup; echo "$@" ; exit 1; } + +\. ../../../nvm.sh + +[ "$(nvm_get_download_slug 2>/dev/null ; echo $?)" = '1' ] || die 'invalid flavor did not fail with exit code 1' +[ "$(nvm_get_download_slug 2>&1)" = 'supported flavors: node, iojs' ] || die 'invalid flavor did not fail with expected message' + +[ "$(nvm_get_download_slug node 2>/dev/null ; echo $?)" = '2' ] || die 'invalid kind did not fail with exit code 2' +[ "$(nvm_get_download_slug node 2>&1)" = 'supported kinds: binary, source' ] || die 'invalid kind did not fail with expected message' +[ "$(nvm_get_download_slug iojs 2>/dev/null ; echo $?)" = '2' ] || die 'invalid kind did not fail with exit code 2' +[ "$(nvm_get_download_slug iojs 2>&1)" = 'supported kinds: binary, source' ] || die 'invalid kind did not fail with expected message' + +nvm_get_os() { + echo omgOS +} +nvm_get_arch() { + echo nemesis +} + +ACTUAL="$(nvm_get_download_slug node binary 1.2.3)" +EXPECTED='node-1.2.3-omgOS-nemesis' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs binary 1.2.3)" +EXPECTED='iojs-1.2.3-omgOS-nemesis' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_get_download_slug node source 1.2.3)" +EXPECTED="node-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs source 1.2.3)" +EXPECTED="iojs-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +nvm_get_arch() { + echo armv6l +} +ACTUAL="$(nvm_get_download_slug node binary 1.2.3)" +EXPECTED='node-1.2.3-omgOS-arm-pi' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs binary 1.2.3)" +EXPECTED='iojs-1.2.3-omgOS-arm-pi' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_get_download_slug node source 1.2.3)" +EXPECTED="node-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs source 1.2.3)" +EXPECTED="iojs-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +nvm_get_arch() { + echo armv7l +} +ACTUAL="$(nvm_get_download_slug node binary 1.2.3)" +EXPECTED='node-1.2.3-omgOS-arm-pi' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs binary 1.2.3)" +EXPECTED='iojs-1.2.3-omgOS-arm-pi' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_get_download_slug node source 1.2.3)" +EXPECTED="node-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs source 1.2.3)" +EXPECTED="iojs-1.2.3" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +nvm_get_os() { + echo darwin +} +nvm_get_arch() { + echo nemesis +} +ACTUAL="$(nvm_get_download_slug node binary 15.99.99)" +EXPECTED='node-15.99.99-darwin-nemesis' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs binary 15.99.99)" +EXPECTED='iojs-15.99.99-darwin-nemesis' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_get_download_slug node source 15.99.99)" +EXPECTED="node-15.99.99" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs source 15.99.99)" +EXPECTED="iojs-15.99.99" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +nvm_get_arch() { + echo arm64 +} +ACTUAL="$(nvm_get_download_slug node binary 15.99.99)" +EXPECTED='node-15.99.99-darwin-x64' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs binary 15.99.99)" +EXPECTED='iojs-15.99.99-darwin-x64' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_get_download_slug node source 15.99.99)" +EXPECTED="node-15.99.99" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" +ACTUAL="$(nvm_get_download_slug iojs source 15.99.99)" +EXPECTED="iojs-15.99.99" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + diff --git a/test/fast/Unit tests/nvm_normalize_lts b/test/fast/Unit tests/nvm_normalize_lts new file mode 100755 index 0000000..0844f95 --- /dev/null +++ b/test/fast/Unit tests/nvm_normalize_lts @@ -0,0 +1,38 @@ +#!/bin/sh + +cleanup() { + unset nvm_get_os +} + +die () { cleanup; echo "$@" ; exit 1; } + +\. ../../../nvm.sh + +ACTUAL="$(nvm_normalize_lts "foo")" +EXPECTED='foo' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +ACTUAL="$(nvm_normalize_lts "lts/*")" +EXPECTED='lts/*' +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + + +MOCKS_DIR="../Unit tests/mocks" +STAR="$(cat "$MOCKS_DIR/lts-star.txt")" + +ACTUAL="$(nvm_normalize_lts "${STAR}")" +EXPECTED="${STAR}" +[ "${ACTUAL}" = "${EXPECTED}" ] || die "expected >${EXPECTED}<, got >${ACTUAL}<" + +LTS_NAMES_PATH="${MOCKS_DIR}/LTS_names.txt" +LTS_LIST="$(cat "${LTS_NAMES_PATH}" | tail -n +2)" + +INDEX=1 +printf '%s\n' "${LTS_LIST}" | while IFS= read -r LTS; do + ACTUAL="$(nvm_normalize_lts "lts/-${INDEX}")" + MESSAGE="for lts/-${INDEX} (${LTS})" + EXPECTED="lts/$(echo "${LTS_LIST}" | tail -n +${INDEX} | head -n1)" + [ "${ACTUAL}" = "${EXPECTED}" ] || die "${MESSAGE}: expected >${EXPECTED}<, got >${ACTUAL}<" + + INDEX=$(($INDEX + 1)) +done diff --git a/update_test_mocks.sh b/update_test_mocks.sh index 30a3782..cd63843 100755 --- a/update_test_mocks.sh +++ b/update_test_mocks.sh @@ -32,6 +32,7 @@ nvm ls-remote node > "$MOCKS_DIR/nvm ls-remote node.txt" nvm ls-remote iojs > "$MOCKS_DIR/nvm ls-remote iojs.txt" nvm_print_implicit_alias remote stable > "$MOCKS_DIR/nvm_print_implicit_alias remote stable.txt" nvm_ls_remote stable > "$MOCKS_DIR/nvm_ls_remote stable.txt" +nvm alias "lts/*" > "$MOCKS_DIR/lts-star.txt" set +e NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/nightly/ nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote nightly.txt"