From 52d20068decb29ee568ff1c975d1d33c3ad7fb5a Mon Sep 17 00:00:00 2001
From: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
Date: Mon, 23 Dec 2024 14:30:12 +0900
Subject: [PATCH 1/3] fix: make updated npm version more accurate in action
 logs

The current log message "Update npm to latest" is not accurate
because npm can be updated to v9 or v10.

E.g. https://github.com/ybiquitous/.github/actions/runs/12461745399/job/34781727243
---
 .github/workflows/nodejs-test-reusable.yml | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/nodejs-test-reusable.yml b/.github/workflows/nodejs-test-reusable.yml
index b678dcb..b2eb162 100644
--- a/.github/workflows/nodejs-test-reusable.yml
+++ b/.github/workflows/nodejs-test-reusable.yml
@@ -44,21 +44,28 @@ jobs:
           node-version: ${{ inputs.node-version }}
           cache: npm
 
-      - name: Update npm to latest
+      - name: Get npm version
+        id: npm-version
         shell: bash
         run: |
           case $(node -v) in
             v16.*|v14.*|v12.*|v10.*)
-              npm install --global npm@9
+              npm_version=9
               ;;
             v18.*)
-              npm install --global npm@10
+              npm_version=10
               ;;
             *)
-              npm install --global npm@latest
+              npm_version=latest
               ;;
           esac
-          echo "Successfully updated npm to $(npm -v)"
+          echo "version=${npm_version}" >> "${GITHUB_OUTPUT}"
+
+      - name: Update npm to ${{ steps.npm-version.outputs.version }}
+        shell: bash
+        env:
+          npm_version: ${{ steps.npm-version.outputs.version }}
+        run: npm install --global "npm@${npm_version}"
 
       - name: Install dependencies
         run: npm ci

From ae328032f50b6c571b56fa3f5a03fa94c3c476ee Mon Sep 17 00:00:00 2001
From: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
Date: Mon, 23 Dec 2024 14:39:23 +0900
Subject: [PATCH 2/3] fix: get more accurate npm version

---
 .github/workflows/nodejs-test-reusable.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/nodejs-test-reusable.yml b/.github/workflows/nodejs-test-reusable.yml
index b2eb162..2728360 100644
--- a/.github/workflows/nodejs-test-reusable.yml
+++ b/.github/workflows/nodejs-test-reusable.yml
@@ -57,11 +57,13 @@ jobs:
               ;;
             *)
               npm_version=latest
+              echo "latest=true" >> "${GITHUB_OUTPUT}"
               ;;
           esac
+          npm_version=$(npm view "npm@${npm_version}" version)
           echo "version=${npm_version}" >> "${GITHUB_OUTPUT}"
 
-      - name: Update npm to ${{ steps.npm-version.outputs.version }}
+      - name: Update npm to ${{ steps.npm-version.outputs.version }}${{ steps.npm-version.outputs.latest && ' (latest)' }}
         shell: bash
         env:
           npm_version: ${{ steps.npm-version.outputs.version }}

From 1a846c26b14e3ab5f6e021b23c9afebd441b7fe9 Mon Sep 17 00:00:00 2001
From: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
Date: Mon, 23 Dec 2024 14:45:12 +0900
Subject: [PATCH 3/3] fix: address multiple npm versions

---
 .github/workflows/nodejs-test-reusable.yml | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/nodejs-test-reusable.yml b/.github/workflows/nodejs-test-reusable.yml
index 2728360..ffcc0b1 100644
--- a/.github/workflows/nodejs-test-reusable.yml
+++ b/.github/workflows/nodejs-test-reusable.yml
@@ -50,18 +50,19 @@ jobs:
         run: |
           case $(node -v) in
             v16.*|v14.*|v12.*|v10.*)
-              npm_version=9
+              major_version=9
               ;;
             v18.*)
-              npm_version=10
+              major_version=10
               ;;
             *)
-              npm_version=latest
               echo "latest=true" >> "${GITHUB_OUTPUT}"
+              echo "version=$(npm view npm version)" >> "${GITHUB_OUTPUT}"
+              exit 0
               ;;
           esac
-          npm_version=$(npm view "npm@${npm_version}" version)
-          echo "version=${npm_version}" >> "${GITHUB_OUTPUT}"
+          version=$(npm view "npm@${major_version}" version --json | jq -r '.[-1]')
+          echo "version=${version}" >> "${GITHUB_OUTPUT}"
 
       - name: Update npm to ${{ steps.npm-version.outputs.version }}${{ steps.npm-version.outputs.latest && ' (latest)' }}
         shell: bash