diff --git a/src/main/java/org/openrewrite/github/SetupJavaDistributionReplacerVisitor.java b/src/main/java/org/openrewrite/github/SetupJavaDistributionReplacerVisitor.java index af4bc3b..a8ddb6d 100644 --- a/src/main/java/org/openrewrite/github/SetupJavaDistributionReplacerVisitor.java +++ b/src/main/java/org/openrewrite/github/SetupJavaDistributionReplacerVisitor.java @@ -33,7 +33,9 @@ class SetupJavaDistributionReplacerVisitor extends YamlIsoVisitor spec.path(".github/workflows/ci.yml") + ) + ); + } } diff --git a/src/test/java/org/openrewrite/github/SetupJavaUpgradeJavaVersionTest.java b/src/test/java/org/openrewrite/github/SetupJavaUpgradeJavaVersionTest.java index 4f643c7..fca31c0 100644 --- a/src/test/java/org/openrewrite/github/SetupJavaUpgradeJavaVersionTest.java +++ b/src/test/java/org/openrewrite/github/SetupJavaUpgradeJavaVersionTest.java @@ -246,4 +246,26 @@ void doesNotUpdateVersionInOtherActions() { ) ); } + + @Test + void doesNotUpdateMatrixVersion() { + rewriteRun( + //language=yaml + yaml( + """ + jobs: + build: + strategy: + matrix: + java-version: [11, 17] + steps: + - name: set-up-jdk + uses: actions/setup-java@v2.3.0 + with: + java-version: ${{ matrix.java-version }} + """, + spec -> spec.path(".github/workflows/ci.yml") + ) + ); + } } diff --git a/src/test/java/org/openrewrite/github/SetupNodeUpgradeNodeVersionTest.java b/src/test/java/org/openrewrite/github/SetupNodeUpgradeNodeVersionTest.java index 992318a..1190c49 100644 --- a/src/test/java/org/openrewrite/github/SetupNodeUpgradeNodeVersionTest.java +++ b/src/test/java/org/openrewrite/github/SetupNodeUpgradeNodeVersionTest.java @@ -33,306 +33,330 @@ public void defaults(RecipeSpec spec) { @Test void upgradeNodeVersion() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18' - - run: npm ci - - run: npm test - """, - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '24' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '18' + - run: npm ci + - run: npm test + """, + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void upgradeNodeVersionFromNode20() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '20' - - run: npm ci - - run: npm test - """, - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '24' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - run: npm ci + - run: npm test + """, + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void upgradeNodeVersionFromVersionWithPatch() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: '18.17.1' - - run: npm ci - - run: npm test - """, - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 - with: - node-version: '24' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: '18.17.1' + - run: npm ci + - run: npm test + """, + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: '24' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void doNotUpgradeAlreadyCurrentVersion() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '24' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void doNotUpgradeNewerVersion() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '25' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '25' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void ignoreNonVersionValues() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void ignoreLatestKeyword() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 'latest' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 'latest' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void customMinimumVersion() { rewriteRun( - spec -> spec.recipe(new SetupNodeUpgradeNodeVersion(20)), - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18' - - run: npm ci - - run: npm test - """, - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '20' - - run: npm ci - - run: npm test - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + spec -> spec.recipe(new SetupNodeUpgradeNodeVersion(20)), + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '18' + - run: npm ci + - run: npm test + """, + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - run: npm ci + - run: npm test + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } @Test void multipleJobsUpgrade() { rewriteRun( - yaml( - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '16' - - run: npm test - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18' - - run: npm run build - """, - """ - name: CI - on: - pull_request: - jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '24' - - run: npm test - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '24' - - run: npm run build - """, - spec -> spec.path(".github/workflows/ci.yml") - ) + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '16' + - run: npm test + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '18' + - run: npm run build + """, + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: npm test + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: npm run build + """, + spec -> spec.path(".github/workflows/ci.yml") + ) + ); + } + + @Test + void doesNotUpdateMatrixVersion() { + rewriteRun( + yaml( + """ + name: CI + on: + pull_request: + jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18, 20] + steps: + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + """, + spec -> spec.path(".github/workflows/ci.yml") + ) ); } }