Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-54652

[Groovy] Invalid switch case flow on empty "block"

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major

      In standard C-based language (such as Java, Groovy, ...), switch cases ends with break keyword. When there's no statement that break the flow, the next case is executed. For example:

      String value = "foo";
      switch (value) {
          case "rab":
              System.out.println("rab");
          case "oof":
              System.out.println("oof");
              break;
      
          case "foo":
              System.out.println("foo");
          case "bar":
              System.out.println("bar");
              break;
      }
      

      It must print "foobar".

      However, following pipeline prints: 1, null and 2.

      def switchCase(value) {
      	switch (value) {
      		case 'foo':
      			return 1
      		case 'bar':
      		default:
      			return 2
      	}
      }
      
      pipeline {
      	agent any
      
      	options {
      		buildDiscarder(logRotator(numToKeepStr:'5'))
      		disableConcurrentBuilds()
      		timestamps()
      		skipDefaultCheckout()
      	}
      
      	stages {
      		stage('Switch') {
      			steps {
      				echo "foo  -> '${switchCase('foo')}'"
      				echo "bar  -> '${switchCase('bar')}'"
      				echo "null -> '${switchCase(null)}'"
      			}
      		}
      	}
      }
      

      You can check its valid on Groovy through: https://groovyconsole.appspot.com/

          [JENKINS-54652] [Groovy] Invalid switch case flow on empty "block"

          Guillaume DeMengin added a comment - - edited

          still failing with 2.303.2

          actually the issue is with default statement only, this code is failing on the last assert 

          // test default
          
          test0_reached_case1 = false
          test0_reached_case2 = false
          test0_reached_default = false
          a = 0
          switch(a) {
              case 1:
                  test0_reached_case1 = true
                  break
              case 2:
                  test0_reached_case2 = true
                  break
              default:
                  test0_reached_default = true
          }
          assert ! test0_reached_case1
          assert ! test0_reached_case2
          assert test0_reached_default
          
          
          // test break
          
          test1_reached_case1 = false
          test1_reached_case2 = false
          test1_reached_default = false
          a = 1
          switch(a) {
              case 1:
                  test1_reached_case1 = true
                  break
              case 2:
                  test1_reached_case2 = true
                  break
              default:
                  test1_reached_default = true
          }
          assert test1_reached_case1
          assert ! test1_reached_case2
          assert ! test1_reached_default
          
          
          // test no break between 2 cases
          
          test2_reached_case1 = false
          test2_reached_case2 = false
          test2_reached_default = false
          a = 1
          switch(a) {
              case 1:
                  test2_reached_case1 = true
              case 2:
                  test2_reached_case2 = true
                  break
              default:
                  test2_reached_default = true
          }
          assert test2_reached_case1
          assert test2_reached_case2
          assert ! test2_reached_default
          
          
          // test no break before default
          
          test3_reached_case1 = false
          test3_reached_case2 = false
          test3_reached_case3 = false
          test3_reached_default = false
          a = 1
          switch(a) {
              case 1:
                  test3_reached_case1 = true
              case 2:
                  test3_reached_case2 = true
              case 3:
                  test3_reached_case3 = true
              default:
                  test3_reached_default = true
          }
          assert test3_reached_case1
          assert test3_reached_case2
          assert test3_reached_case3
          
          // it fails here
          assert test3_reached_default
          
          print 'happy End!'
          

          we lost countless hours before realizing that the code to handle unexpected cases below default should be repeated under the last case statement

           

          how can it be "Minor" ? code is not doing what it's supposed to do , and using default as a fallback is pretty common in swith cases.

          Guillaume DeMengin added a comment - - edited still failing with 2.303.2 actually the issue is with default statement only, this code is failing on the last assert  // test default test0_reached_case1 = false test0_reached_case2 = false test0_reached_default = false a = 0 switch (a) { case 1: test0_reached_case1 = true break case 2: test0_reached_case2 = true break default : test0_reached_default = true } assert ! test0_reached_case1 assert ! test0_reached_case2 assert test0_reached_default // test break test1_reached_case1 = false test1_reached_case2 = false test1_reached_default = false a = 1 switch (a) { case 1: test1_reached_case1 = true break case 2: test1_reached_case2 = true break default : test1_reached_default = true } assert test1_reached_case1 assert ! test1_reached_case2 assert ! test1_reached_default // test no break between 2 cases test2_reached_case1 = false test2_reached_case2 = false test2_reached_default = false a = 1 switch (a) { case 1: test2_reached_case1 = true case 2: test2_reached_case2 = true break default : test2_reached_default = true } assert test2_reached_case1 assert test2_reached_case2 assert ! test2_reached_default // test no break before default test3_reached_case1 = false test3_reached_case2 = false test3_reached_case3 = false test3_reached_default = false a = 1 switch (a) { case 1: test3_reached_case1 = true case 2: test3_reached_case2 = true case 3: test3_reached_case3 = true default : test3_reached_default = true } assert test3_reached_case1 assert test3_reached_case2 assert test3_reached_case3 // it fails here assert test3_reached_default print 'happy End!' we lost countless hours before realizing that the code to handle unexpected cases below default should be repeated under the last case statement   how can it be "Minor" ? code is not doing what it's supposed to do , and using default as a fallback is pretty common in swith cases.

          Stefan Hölzle added a comment - - edited

          The following example shows that a fallthrough to the default case doesn't work:

          Jenkinsfile

          int value = 1
          
          switch(value) {
              case 1:
                  echo "case 1"
              case 2:
                  echo "case 2"
              default:
                  echo "case default"
          }
          

          The code prints out "case 1" and "case 2", but not "case default".

          Environment:
          Jenkins Core 2.375.1
          Jenkins Plugins:

          com/coravy/hudson/plugins/github/github/1.29.3/github-1.29.3.hpi
          com/datapipe/jenkins/plugins/hashicorp-vault-plugin/359.v2da_3b_45f17d5/hashicorp-vault-plugin-359.v2da_3b_45f17d5.hpi
          io/jenkins/blueocean/blueocean-bitbucket-pipeline/1.27.0/blueocean-bitbucket-pipeline-1.27.0.hpi
          io/jenkins/blueocean/blueocean-commons/1.27.0/blueocean-commons-1.27.0.hpi
          io/jenkins/blueocean/blueocean-config/1.27.0/blueocean-config-1.27.0.hpi
          io/jenkins/blueocean/blueocean-core-js/1.27.0/blueocean-core-js-1.27.0.hpi
          io/jenkins/blueocean/blueocean-dashboard/1.27.0/blueocean-dashboard-1.27.0.hpi
          io/jenkins/blueocean/blueocean-events/1.27.0/blueocean-events-1.27.0.hpi
          io/jenkins/blueocean/blueocean-git-pipeline/1.27.0/blueocean-git-pipeline-1.27.0.hpi
          io/jenkins/blueocean/blueocean-github-pipeline/1.27.0/blueocean-github-pipeline-1.27.0.hpi
          io/jenkins/blueocean/blueocean-i18n/1.27.0/blueocean-i18n-1.27.0.hpi
          io/jenkins/blueocean/blueocean-jwt/1.27.0/blueocean-jwt-1.27.0.hpi
          io/jenkins/blueocean/blueocean-personalization/1.27.0/blueocean-personalization-1.27.0.hpi
          io/jenkins/blueocean/blueocean-pipeline-api-impl/1.27.0/blueocean-pipeline-api-impl-1.27.0.hpi
          io/jenkins/blueocean/blueocean-pipeline-editor/1.27.0/blueocean-pipeline-editor-1.27.0.hpi
          io/jenkins/blueocean/blueocean-pipeline-scm-api/1.27.0/blueocean-pipeline-scm-api-1.27.0.hpi
          io/jenkins/blueocean/blueocean-rest-impl/1.27.0/blueocean-rest-impl-1.27.0.hpi
          io/jenkins/blueocean/blueocean-rest/1.27.0/blueocean-rest-1.27.0.hpi
          io/jenkins/blueocean/blueocean-web/1.27.0/blueocean-web-1.27.0.hpi
          io/jenkins/blueocean/blueocean/1.27.0/blueocean-1.27.0.hpi
          io/jenkins/blueocean/jenkins-design-language/1.27.0/jenkins-design-language-1.27.0.hpi
          io/jenkins/configuration-as-code/1569.vb_72405b_80249/configuration-as-code-1569.vb_72405b_80249.hpi
          io/jenkins/plugins/bootstrap4-api/4.6.0-3/bootstrap4-api-4.6.0-3.hpi
          io/jenkins/plugins/bootstrap5-api/5.2.0-3/bootstrap5-api-5.2.0-3.hpi
          io/jenkins/plugins/caffeine-api/2.9.3-65.v6a_47d0f4d1fe/caffeine-api-2.9.3-65.v6a_47d0f4d1fe.hpi
          io/jenkins/plugins/checks-api/1.8.0/checks-api-1.8.0.hpi
          io/jenkins/plugins/code-coverage-api/3.4.1/code-coverage-api-3.4.1.hpi
          io/jenkins/plugins/commons-lang3-api/3.12.0-36.vd97de6465d5b_/commons-lang3-api-3.12.0-36.vd97de6465d5b_.hpi
          io/jenkins/plugins/commons-text-api/1.10.0-27.vb_fa_3896786a_7/commons-text-api-1.10.0-27.vb_fa_3896786a_7.hpi
          io/jenkins/plugins/configuration-as-code-groovy/1.1/configuration-as-code-groovy-1.1.hpi
          io/jenkins/plugins/data-tables-api/1.12.1-4/data-tables-api-1.12.1-4.hpi
          io/jenkins/plugins/echarts-api/5.4.0-1/echarts-api-5.4.0-1.hpi
          io/jenkins/plugins/font-awesome-api/6.1.2-1/font-awesome-api-6.1.2-1.hpi
          io/jenkins/plugins/forensics-api/1.15.1/forensics-api-1.15.1.hpi
          io/jenkins/plugins/h2-api/1.4.199/h2-api-1.4.199.hpi
          io/jenkins/plugins/ionicons-api/31.v4757b_6987003/ionicons-api-31.v4757b_6987003.hpi
          io/jenkins/plugins/jakarta-activation-api/2.0.0-3/jakarta-activation-api-2.0.0-3.hpi
          io/jenkins/plugins/jakarta-mail-api/2.0.0-6/jakarta-mail-api-2.0.0-6.hpi
          io/jenkins/plugins/javax-activation-api/1.2.0-3/javax-activation-api-1.2.0-3.hpi
          io/jenkins/plugins/jaxb/2.3.6-1/jaxb-2.3.6-1.hpi
          io/jenkins/plugins/jquery3-api/3.6.1-2/jquery3-api-3.6.1-2.hpi
          io/jenkins/plugins/okhttp-api/3.12.12.2/okhttp-api-3.12.12.2.hpi
          io/jenkins/plugins/pipeline-groovy-lib/629.vb_5627b_ee2104/pipeline-groovy-lib-629.vb_5627b_ee2104.hpi
          io/jenkins/plugins/plugin-util-api/2.17.0/plugin-util-api-2.17.0.hpi
          io/jenkins/plugins/popper-api/1.16.1-2/popper-api-1.16.1-2.hpi
          io/jenkins/plugins/popper2-api/2.11.5-2/popper2-api-2.11.5-2.hpi
          io/jenkins/plugins/prism-api/1.28.0-2/prism-api-1.28.0-2.hpi
          io/jenkins/plugins/snakeyaml-api/1.33-90.v80dcb_3814d35/snakeyaml-api-1.33-90.v80dcb_3814d35.hpi
          org/6wind/jenkins/lockable-resources/1109.v470b_a_941b_06e/lockable-resources-1109.v470b_a_941b_06e.hpi
          org/csanchez/jenkins/plugins/kubernetes/3802.vb_b_600831fcb_3/kubernetes-3802.vb_b_600831fcb_3.hpi
          org/jenkins-ci/main/maven-plugin/3.20/maven-plugin-3.20.hpi
          org/jenkins-ci/modules/instance-identity/116.vf8f487400980/instance-identity-116.vf8f487400980.hpi
          org/jenkins-ci/plugins/antisamy-markup-formatter/155.v795fb_8702324/antisamy-markup-formatter-155.v795fb_8702324.hpi
          org/jenkins-ci/plugins/apache-httpcomponents-client-4-api/4.5.13-138.v4e7d9a_7b_a_e61/apache-httpcomponents-client-4-api-4.5.13-138.v4e7d9a_7b_a_e61.hpi
          org/jenkins-ci/plugins/authentication-tokens/1.4/authentication-tokens-1.4.hpi
          org/jenkins-ci/plugins/authorize-project/1.4.0/authorize-project-1.4.0.hpi
          org/jenkins-ci/plugins/badge/1.9.1/badge-1.9.1.hpi
          org/jenkins-ci/plugins/blueocean-display-url/2.4.1/blueocean-display-url-2.4.1.hpi
          org/jenkins-ci/plugins/bouncycastle-api/2.26/bouncycastle-api-2.26.hpi
          org/jenkins-ci/plugins/branch-api/2.1051.v9985666b_f6cc/branch-api-2.1051.v9985666b_f6cc.hpi
          org/jenkins-ci/plugins/build-with-parameters/76.v9382db_f78962/build-with-parameters-76.v9382db_f78962.hpi
          org/jenkins-ci/plugins/cloudbees-bitbucket-branch-source/791.vb_eea_a_476405b/cloudbees-bitbucket-branch-source-791.vb_eea_a_476405b.hpi
          org/jenkins-ci/plugins/cloudbees-folder/6.800.v71307ca_b_986b/cloudbees-folder-6.800.v71307ca_b_986b.hpi
          org/jenkins-ci/plugins/config-file-provider/3.11.1/config-file-provider-3.11.1.hpi
          org/jenkins-ci/plugins/credentials-binding/523.vd859a_4b_122e6/credentials-binding-523.vd859a_4b_122e6.hpi
          org/jenkins-ci/plugins/credentials/1189.vf61b_a_5e2f62e/credentials-1189.vf61b_a_5e2f62e.hpi
          org/jenkins-ci/plugins/dependency-track/4.2.0/dependency-track-4.2.0.hpi
          org/jenkins-ci/plugins/display-url-api/2.3.7/display-url-api-2.3.7.hpi
          org/jenkins-ci/plugins/durable-task/503.v57154d18d478/durable-task-503.v57154d18d478.hpi
          org/jenkins-ci/plugins/git-client/4.0.0/git-client-4.0.0.hpi
          org/jenkins-ci/plugins/git/5.0.0/git-5.0.0.hpi
          org/jenkins-ci/plugins/github-api/1.114.2/github-api-1.114.2.hpi
          org/jenkins-ci/plugins/github-branch-source/2.6.0/github-branch-source-2.6.0.hpi
          org/jenkins-ci/plugins/gradle/2.2/gradle-2.2.hpi
          org/jenkins-ci/plugins/handy-uri-templates-2-api/2.1.8-22.v77d5b_75e6953/handy-uri-templates-2-api-2.1.8-22.v77d5b_75e6953.hpi
          org/jenkins-ci/plugins/htmlpublisher/1.31/htmlpublisher-1.31.hpi
          org/jenkins-ci/plugins/http_request/1.16/http_request-1.16.hpi
          org/jenkins-ci/plugins/jackson2-api/2.13.4.20221013-295.v8e29ea_354141/jackson2-api-2.13.4.20221013-295.v8e29ea_354141.hpi
          org/jenkins-ci/plugins/javadoc/217.v905b_86277a_2a_/javadoc-217.v905b_86277a_2a_.hpi
          org/jenkins-ci/plugins/job-dsl/1.81/job-dsl-1.81.hpi
          org/jenkins-ci/plugins/jsch/0.1.55.61.va_e9ee26616e7/jsch-0.1.55.61.va_e9ee26616e7.hpi
          org/jenkins-ci/plugins/junit/1166.va_436e268e972/junit-1166.va_436e268e972.hpi
          org/jenkins-ci/plugins/kubernetes-client-api/6.3.1-206.v76d3b_6b_14db_b/kubernetes-client-api-6.3.1-206.v76d3b_6b_14db_b.hpi
          org/jenkins-ci/plugins/mailer/438.v02c7f0a_12fa_4/mailer-438.v02c7f0a_12fa_4.hpi
          org/jenkins-ci/plugins/matrix-auth/3.1.6/matrix-auth-3.1.6.hpi
          org/jenkins-ci/plugins/matrix-project/785.v06b_7f47b_c631/matrix-project-785.v06b_7f47b_c631.hpi
          org/jenkins-ci/plugins/metrics/4.2.13-420.vea_2f17932dd6/metrics-4.2.13-420.vea_2f17932dd6.hpi
          org/jenkins-ci/plugins/nodejs/1.5.1/nodejs-1.5.1.hpi
          org/jenkins-ci/plugins/parameterized-scheduler/1.1/parameterized-scheduler-1.1.hpi
          org/jenkins-ci/plugins/parameterized-trigger/2.45/parameterized-trigger-2.45.hpi
          org/jenkins-ci/plugins/pipeline-build-step/2.18/pipeline-build-step-2.18.hpi
          org/jenkins-ci/plugins/pipeline-graph-analysis/195.v5812d95a_a_2f9/pipeline-graph-analysis-195.v5812d95a_a_2f9.hpi
          org/jenkins-ci/plugins/pipeline-input-step/466.v6d0a_5df34f81/pipeline-input-step-466.v6d0a_5df34f81.hpi
          org/jenkins-ci/plugins/pipeline-maven/1257.v89e586d3c58c/pipeline-maven-1257.v89e586d3c58c.hpi
          org/jenkins-ci/plugins/pipeline-milestone-step/101.vd572fef9d926/pipeline-milestone-step-101.vd572fef9d926.hpi
          org/jenkins-ci/plugins/pipeline-stage-step/296.v5f6908f017a_5/pipeline-stage-step-296.v5f6908f017a_5.hpi
          org/jenkins-ci/plugins/pipeline-stage-view/pipeline-rest-api/2.28/pipeline-rest-api-2.28.hpi
          org/jenkins-ci/plugins/pipeline-stage-view/pipeline-stage-view/2.28/pipeline-stage-view-2.28.hpi
          org/jenkins-ci/plugins/pipeline-utility-steps/2.15.0/pipeline-utility-steps-2.15.0.hpi
          org/jenkins-ci/plugins/plain-credentials/139.ved2b_9cf7587b/plain-credentials-139.ved2b_9cf7587b.hpi
          org/jenkins-ci/plugins/prometheus/2.1.0/prometheus-2.1.0.hpi
          org/jenkins-ci/plugins/pubsub-light/1.16/pubsub-light-1.16.hpi
          org/jenkins-ci/plugins/resource-disposer/0.20/resource-disposer-0.20.hpi
          org/jenkins-ci/plugins/scm-api/631.v9143df5b_e4a_a/scm-api-631.v9143df5b_e4a_a.hpi
          org/jenkins-ci/plugins/script-security/1228.vd93135a_2fb_25/script-security-1228.vd93135a_2fb_25.hpi
          org/jenkins-ci/plugins/simple-theme-plugin/136.v23a_15f86c53d/simple-theme-plugin-136.v23a_15f86c53d.hpi
          org/jenkins-ci/plugins/sonar/2.15/sonar-2.15.hpi
          org/jenkins-ci/plugins/sse-gateway/1.24/sse-gateway-1.24.hpi
          org/jenkins-ci/plugins/ssh-agent/295.v9ca_a_1c7cc3a_a_/ssh-agent-295.v9ca_a_1c7cc3a_a_.hpi
          org/jenkins-ci/plugins/ssh-credentials/305.v8f4381501156/ssh-credentials-305.v8f4381501156.hpi
          org/jenkins-ci/plugins/ssh-steps/2.0.39.v831c5e6468b_c/ssh-steps-2.0.39.v831c5e6468b_c.hpi
          org/jenkins-ci/plugins/structs/324.va_f5d6774f3a_d/structs-324.va_f5d6774f3a_d.hpi
          org/jenkins-ci/plugins/timestamper/1.21/timestamper-1.21.hpi
          org/jenkins-ci/plugins/token-macro/321.vd7cc1f2a_52c8/token-macro-321.vd7cc1f2a_52c8.hpi
          org/jenkins-ci/plugins/trilead-api/2.84.v72119de229b_7/trilead-api-2.84.v72119de229b_7.hpi
          org/jenkins-ci/plugins/variant/59.vf075fe829ccb/variant-59.vf075fe829ccb.hpi
          org/jenkins-ci/plugins/webhook-step/173.vfa_b_93560b_977/webhook-step-173.vfa_b_93560b_977.hpi
          org/jenkins-ci/plugins/workflow/workflow-aggregator/590.v6a_d052e5a_a_b_5/workflow-aggregator-590.v6a_d052e5a_a_b_5.hpi
          org/jenkins-ci/plugins/workflow/workflow-api/1200.v8005c684b_a_c6/workflow-api-1200.v8005c684b_a_c6.hpi
          org/jenkins-ci/plugins/workflow/workflow-basic-steps/994.vd57e3ca_46d24/workflow-basic-steps-994.vd57e3ca_46d24.hpi
          org/jenkins-ci/plugins/workflow/workflow-cps/3601.v9b_36a_d99e1cc/workflow-cps-3601.v9b_36a_d99e1cc.hpi
          org/jenkins-ci/plugins/workflow/workflow-durable-task-step/1217.v38306d8fa_b_5c/workflow-durable-task-step-1217.v38306d8fa_b_5c.hpi
          org/jenkins-ci/plugins/workflow/workflow-job/1254.v3f64639b_11dd/workflow-job-1254.v3f64639b_11dd.hpi
          org/jenkins-ci/plugins/workflow/workflow-multibranch/716.vc692a_e52371b_/workflow-multibranch-716.vc692a_e52371b_.hpi
          org/jenkins-ci/plugins/workflow/workflow-scm-step/400.v6b_89a_1317c9a_/workflow-scm-step-400.v6b_89a_1317c9a_.hpi
          org/jenkins-ci/plugins/workflow/workflow-step-api/639.v6eca_cd8c04a_a_/workflow-step-api-639.v6eca_cd8c04a_a_.hpi
          org/jenkins-ci/plugins/workflow/workflow-support/839.v35e2736cfd5c/workflow-support-839.v35e2736cfd5c.hpi
          org/jenkins-ci/plugins/ws-cleanup/0.44/ws-cleanup-0.44.hpi
          org/jenkins-ci/ui/ace-editor/1.1/ace-editor-1.1.hpi
          org/jenkins-ci/ui/momentjs/1.1.1/momentjs-1.1.1.hpi
          org/jenkinsci/plugins/kubernetes-credentials/0.10.0/kubernetes-credentials-0.10.0.hpi
          org/jenkinsci/plugins/pipeline-model-api/2.2118.v31fd5b_9944b_5/pipeline-model-api-2.2118.v31fd5b_9944b_5.hpi
          org/jenkinsci/plugins/pipeline-model-definition/2.2118.v31fd5b_9944b_5/pipeline-model-definition-2.2118.v31fd5b_9944b_5.hpi
          org/jenkinsci/plugins/pipeline-model-extensions/2.2118.v31fd5b_9944b_5/pipeline-model-extensions-2.2118.v31fd5b_9944b_5.hpi
          org/jenkinsci/plugins/pipeline-stage-tags-metadata/2.2118.v31fd5b_9944b_5/pipeline-stage-tags-metadata-2.2118.v31fd5b_9944b_5.hpi
          org/jvnet/hudson/plugins/favorite/2.3.1/favorite-2.3.1.hpi
          

          Stefan Hölzle added a comment - - edited The following example shows that a fallthrough to the default case doesn't work: Jenkinsfile int value = 1 switch (value) { case 1: echo " case 1" case 2: echo " case 2" default : echo " case default " } The code prints out "case 1" and "case 2", but not "case default". Environment: Jenkins Core 2.375.1 Jenkins Plugins: com/coravy/hudson/plugins/github/github/1.29.3/github-1.29.3.hpi com/datapipe/jenkins/plugins/hashicorp-vault-plugin/359.v2da_3b_45f17d5/hashicorp-vault-plugin-359.v2da_3b_45f17d5.hpi io/jenkins/blueocean/blueocean-bitbucket-pipeline/1.27.0/blueocean-bitbucket-pipeline-1.27.0.hpi io/jenkins/blueocean/blueocean-commons/1.27.0/blueocean-commons-1.27.0.hpi io/jenkins/blueocean/blueocean-config/1.27.0/blueocean-config-1.27.0.hpi io/jenkins/blueocean/blueocean-core-js/1.27.0/blueocean-core-js-1.27.0.hpi io/jenkins/blueocean/blueocean-dashboard/1.27.0/blueocean-dashboard-1.27.0.hpi io/jenkins/blueocean/blueocean-events/1.27.0/blueocean-events-1.27.0.hpi io/jenkins/blueocean/blueocean-git-pipeline/1.27.0/blueocean-git-pipeline-1.27.0.hpi io/jenkins/blueocean/blueocean-github-pipeline/1.27.0/blueocean-github-pipeline-1.27.0.hpi io/jenkins/blueocean/blueocean-i18n/1.27.0/blueocean-i18n-1.27.0.hpi io/jenkins/blueocean/blueocean-jwt/1.27.0/blueocean-jwt-1.27.0.hpi io/jenkins/blueocean/blueocean-personalization/1.27.0/blueocean-personalization-1.27.0.hpi io/jenkins/blueocean/blueocean-pipeline-api-impl/1.27.0/blueocean-pipeline-api-impl-1.27.0.hpi io/jenkins/blueocean/blueocean-pipeline-editor/1.27.0/blueocean-pipeline-editor-1.27.0.hpi io/jenkins/blueocean/blueocean-pipeline-scm-api/1.27.0/blueocean-pipeline-scm-api-1.27.0.hpi io/jenkins/blueocean/blueocean-rest-impl/1.27.0/blueocean-rest-impl-1.27.0.hpi io/jenkins/blueocean/blueocean-rest/1.27.0/blueocean-rest-1.27.0.hpi io/jenkins/blueocean/blueocean-web/1.27.0/blueocean-web-1.27.0.hpi io/jenkins/blueocean/blueocean/1.27.0/blueocean-1.27.0.hpi io/jenkins/blueocean/jenkins-design-language/1.27.0/jenkins-design-language-1.27.0.hpi io/jenkins/configuration-as-code/1569.vb_72405b_80249/configuration-as-code-1569.vb_72405b_80249.hpi io/jenkins/plugins/bootstrap4-api/4.6.0-3/bootstrap4-api-4.6.0-3.hpi io/jenkins/plugins/bootstrap5-api/5.2.0-3/bootstrap5-api-5.2.0-3.hpi io/jenkins/plugins/caffeine-api/2.9.3-65.v6a_47d0f4d1fe/caffeine-api-2.9.3-65.v6a_47d0f4d1fe.hpi io/jenkins/plugins/checks-api/1.8.0/checks-api-1.8.0.hpi io/jenkins/plugins/code-coverage-api/3.4.1/code-coverage-api-3.4.1.hpi io/jenkins/plugins/commons-lang3-api/3.12.0-36.vd97de6465d5b_/commons-lang3-api-3.12.0-36.vd97de6465d5b_.hpi io/jenkins/plugins/commons-text-api/1.10.0-27.vb_fa_3896786a_7/commons-text-api-1.10.0-27.vb_fa_3896786a_7.hpi io/jenkins/plugins/configuration-as-code-groovy/1.1/configuration-as-code-groovy-1.1.hpi io/jenkins/plugins/data-tables-api/1.12.1-4/data-tables-api-1.12.1-4.hpi io/jenkins/plugins/echarts-api/5.4.0-1/echarts-api-5.4.0-1.hpi io/jenkins/plugins/font-awesome-api/6.1.2-1/font-awesome-api-6.1.2-1.hpi io/jenkins/plugins/forensics-api/1.15.1/forensics-api-1.15.1.hpi io/jenkins/plugins/h2-api/1.4.199/h2-api-1.4.199.hpi io/jenkins/plugins/ionicons-api/31.v4757b_6987003/ionicons-api-31.v4757b_6987003.hpi io/jenkins/plugins/jakarta-activation-api/2.0.0-3/jakarta-activation-api-2.0.0-3.hpi io/jenkins/plugins/jakarta-mail-api/2.0.0-6/jakarta-mail-api-2.0.0-6.hpi io/jenkins/plugins/javax-activation-api/1.2.0-3/javax-activation-api-1.2.0-3.hpi io/jenkins/plugins/jaxb/2.3.6-1/jaxb-2.3.6-1.hpi io/jenkins/plugins/jquery3-api/3.6.1-2/jquery3-api-3.6.1-2.hpi io/jenkins/plugins/okhttp-api/3.12.12.2/okhttp-api-3.12.12.2.hpi io/jenkins/plugins/pipeline-groovy-lib/629.vb_5627b_ee2104/pipeline-groovy-lib-629.vb_5627b_ee2104.hpi io/jenkins/plugins/plugin-util-api/2.17.0/plugin-util-api-2.17.0.hpi io/jenkins/plugins/popper-api/1.16.1-2/popper-api-1.16.1-2.hpi io/jenkins/plugins/popper2-api/2.11.5-2/popper2-api-2.11.5-2.hpi io/jenkins/plugins/prism-api/1.28.0-2/prism-api-1.28.0-2.hpi io/jenkins/plugins/snakeyaml-api/1.33-90.v80dcb_3814d35/snakeyaml-api-1.33-90.v80dcb_3814d35.hpi org/6wind/jenkins/lockable-resources/1109.v470b_a_941b_06e/lockable-resources-1109.v470b_a_941b_06e.hpi org/csanchez/jenkins/plugins/kubernetes/3802.vb_b_600831fcb_3/kubernetes-3802.vb_b_600831fcb_3.hpi org/jenkins-ci/main/maven-plugin/3.20/maven-plugin-3.20.hpi org/jenkins-ci/modules/instance-identity/116.vf8f487400980/instance-identity-116.vf8f487400980.hpi org/jenkins-ci/plugins/antisamy-markup-formatter/155.v795fb_8702324/antisamy-markup-formatter-155.v795fb_8702324.hpi org/jenkins-ci/plugins/apache-httpcomponents-client-4-api/4.5.13-138.v4e7d9a_7b_a_e61/apache-httpcomponents-client-4-api-4.5.13-138.v4e7d9a_7b_a_e61.hpi org/jenkins-ci/plugins/authentication-tokens/1.4/authentication-tokens-1.4.hpi org/jenkins-ci/plugins/authorize-project/1.4.0/authorize-project-1.4.0.hpi org/jenkins-ci/plugins/badge/1.9.1/badge-1.9.1.hpi org/jenkins-ci/plugins/blueocean-display-url/2.4.1/blueocean-display-url-2.4.1.hpi org/jenkins-ci/plugins/bouncycastle-api/2.26/bouncycastle-api-2.26.hpi org/jenkins-ci/plugins/branch-api/2.1051.v9985666b_f6cc/branch-api-2.1051.v9985666b_f6cc.hpi org/jenkins-ci/plugins/build-with-parameters/76.v9382db_f78962/build-with-parameters-76.v9382db_f78962.hpi org/jenkins-ci/plugins/cloudbees-bitbucket-branch-source/791.vb_eea_a_476405b/cloudbees-bitbucket-branch-source-791.vb_eea_a_476405b.hpi org/jenkins-ci/plugins/cloudbees-folder/6.800.v71307ca_b_986b/cloudbees-folder-6.800.v71307ca_b_986b.hpi org/jenkins-ci/plugins/config-file-provider/3.11.1/config-file-provider-3.11.1.hpi org/jenkins-ci/plugins/credentials-binding/523.vd859a_4b_122e6/credentials-binding-523.vd859a_4b_122e6.hpi org/jenkins-ci/plugins/credentials/1189.vf61b_a_5e2f62e/credentials-1189.vf61b_a_5e2f62e.hpi org/jenkins-ci/plugins/dependency-track/4.2.0/dependency-track-4.2.0.hpi org/jenkins-ci/plugins/display-url-api/2.3.7/display-url-api-2.3.7.hpi org/jenkins-ci/plugins/durable-task/503.v57154d18d478/durable-task-503.v57154d18d478.hpi org/jenkins-ci/plugins/git-client/4.0.0/git-client-4.0.0.hpi org/jenkins-ci/plugins/git/5.0.0/git-5.0.0.hpi org/jenkins-ci/plugins/github-api/1.114.2/github-api-1.114.2.hpi org/jenkins-ci/plugins/github-branch-source/2.6.0/github-branch-source-2.6.0.hpi org/jenkins-ci/plugins/gradle/2.2/gradle-2.2.hpi org/jenkins-ci/plugins/handy-uri-templates-2-api/2.1.8-22.v77d5b_75e6953/handy-uri-templates-2-api-2.1.8-22.v77d5b_75e6953.hpi org/jenkins-ci/plugins/htmlpublisher/1.31/htmlpublisher-1.31.hpi org/jenkins-ci/plugins/http_request/1.16/http_request-1.16.hpi org/jenkins-ci/plugins/jackson2-api/2.13.4.20221013-295.v8e29ea_354141/jackson2-api-2.13.4.20221013-295.v8e29ea_354141.hpi org/jenkins-ci/plugins/javadoc/217.v905b_86277a_2a_/javadoc-217.v905b_86277a_2a_.hpi org/jenkins-ci/plugins/job-dsl/1.81/job-dsl-1.81.hpi org/jenkins-ci/plugins/jsch/0.1.55.61.va_e9ee26616e7/jsch-0.1.55.61.va_e9ee26616e7.hpi org/jenkins-ci/plugins/junit/1166.va_436e268e972/junit-1166.va_436e268e972.hpi org/jenkins-ci/plugins/kubernetes-client-api/6.3.1-206.v76d3b_6b_14db_b/kubernetes-client-api-6.3.1-206.v76d3b_6b_14db_b.hpi org/jenkins-ci/plugins/mailer/438.v02c7f0a_12fa_4/mailer-438.v02c7f0a_12fa_4.hpi org/jenkins-ci/plugins/matrix-auth/3.1.6/matrix-auth-3.1.6.hpi org/jenkins-ci/plugins/matrix-project/785.v06b_7f47b_c631/matrix-project-785.v06b_7f47b_c631.hpi org/jenkins-ci/plugins/metrics/4.2.13-420.vea_2f17932dd6/metrics-4.2.13-420.vea_2f17932dd6.hpi org/jenkins-ci/plugins/nodejs/1.5.1/nodejs-1.5.1.hpi org/jenkins-ci/plugins/parameterized-scheduler/1.1/parameterized-scheduler-1.1.hpi org/jenkins-ci/plugins/parameterized-trigger/2.45/parameterized-trigger-2.45.hpi org/jenkins-ci/plugins/pipeline-build-step/2.18/pipeline-build-step-2.18.hpi org/jenkins-ci/plugins/pipeline-graph-analysis/195.v5812d95a_a_2f9/pipeline-graph-analysis-195.v5812d95a_a_2f9.hpi org/jenkins-ci/plugins/pipeline-input-step/466.v6d0a_5df34f81/pipeline-input-step-466.v6d0a_5df34f81.hpi org/jenkins-ci/plugins/pipeline-maven/1257.v89e586d3c58c/pipeline-maven-1257.v89e586d3c58c.hpi org/jenkins-ci/plugins/pipeline-milestone-step/101.vd572fef9d926/pipeline-milestone-step-101.vd572fef9d926.hpi org/jenkins-ci/plugins/pipeline-stage-step/296.v5f6908f017a_5/pipeline-stage-step-296.v5f6908f017a_5.hpi org/jenkins-ci/plugins/pipeline-stage-view/pipeline-rest-api/2.28/pipeline-rest-api-2.28.hpi org/jenkins-ci/plugins/pipeline-stage-view/pipeline-stage-view/2.28/pipeline-stage-view-2.28.hpi org/jenkins-ci/plugins/pipeline-utility-steps/2.15.0/pipeline-utility-steps-2.15.0.hpi org/jenkins-ci/plugins/plain-credentials/139.ved2b_9cf7587b/plain-credentials-139.ved2b_9cf7587b.hpi org/jenkins-ci/plugins/prometheus/2.1.0/prometheus-2.1.0.hpi org/jenkins-ci/plugins/pubsub-light/1.16/pubsub-light-1.16.hpi org/jenkins-ci/plugins/resource-disposer/0.20/resource-disposer-0.20.hpi org/jenkins-ci/plugins/scm-api/631.v9143df5b_e4a_a/scm-api-631.v9143df5b_e4a_a.hpi org/jenkins-ci/plugins/script-security/1228.vd93135a_2fb_25/script-security-1228.vd93135a_2fb_25.hpi org/jenkins-ci/plugins/simple-theme-plugin/136.v23a_15f86c53d/simple-theme-plugin-136.v23a_15f86c53d.hpi org/jenkins-ci/plugins/sonar/2.15/sonar-2.15.hpi org/jenkins-ci/plugins/sse-gateway/1.24/sse-gateway-1.24.hpi org/jenkins-ci/plugins/ssh-agent/295.v9ca_a_1c7cc3a_a_/ssh-agent-295.v9ca_a_1c7cc3a_a_.hpi org/jenkins-ci/plugins/ssh-credentials/305.v8f4381501156/ssh-credentials-305.v8f4381501156.hpi org/jenkins-ci/plugins/ssh-steps/2.0.39.v831c5e6468b_c/ssh-steps-2.0.39.v831c5e6468b_c.hpi org/jenkins-ci/plugins/structs/324.va_f5d6774f3a_d/structs-324.va_f5d6774f3a_d.hpi org/jenkins-ci/plugins/timestamper/1.21/timestamper-1.21.hpi org/jenkins-ci/plugins/token-macro/321.vd7cc1f2a_52c8/token-macro-321.vd7cc1f2a_52c8.hpi org/jenkins-ci/plugins/trilead-api/2.84.v72119de229b_7/trilead-api-2.84.v72119de229b_7.hpi org/jenkins-ci/plugins/variant/59.vf075fe829ccb/variant-59.vf075fe829ccb.hpi org/jenkins-ci/plugins/webhook-step/173.vfa_b_93560b_977/webhook-step-173.vfa_b_93560b_977.hpi org/jenkins-ci/plugins/workflow/workflow-aggregator/590.v6a_d052e5a_a_b_5/workflow-aggregator-590.v6a_d052e5a_a_b_5.hpi org/jenkins-ci/plugins/workflow/workflow-api/1200.v8005c684b_a_c6/workflow-api-1200.v8005c684b_a_c6.hpi org/jenkins-ci/plugins/workflow/workflow-basic-steps/994.vd57e3ca_46d24/workflow-basic-steps-994.vd57e3ca_46d24.hpi org/jenkins-ci/plugins/workflow/workflow-cps/3601.v9b_36a_d99e1cc/workflow-cps-3601.v9b_36a_d99e1cc.hpi org/jenkins-ci/plugins/workflow/workflow-durable-task-step/1217.v38306d8fa_b_5c/workflow-durable-task-step-1217.v38306d8fa_b_5c.hpi org/jenkins-ci/plugins/workflow/workflow-job/1254.v3f64639b_11dd/workflow-job-1254.v3f64639b_11dd.hpi org/jenkins-ci/plugins/workflow/workflow-multibranch/716.vc692a_e52371b_/workflow-multibranch-716.vc692a_e52371b_.hpi org/jenkins-ci/plugins/workflow/workflow-scm-step/400.v6b_89a_1317c9a_/workflow-scm-step-400.v6b_89a_1317c9a_.hpi org/jenkins-ci/plugins/workflow/workflow-step-api/639.v6eca_cd8c04a_a_/workflow-step-api-639.v6eca_cd8c04a_a_.hpi org/jenkins-ci/plugins/workflow/workflow-support/839.v35e2736cfd5c/workflow-support-839.v35e2736cfd5c.hpi org/jenkins-ci/plugins/ws-cleanup/0.44/ws-cleanup-0.44.hpi org/jenkins-ci/ui/ace-editor/1.1/ace-editor-1.1.hpi org/jenkins-ci/ui/momentjs/1.1.1/momentjs-1.1.1.hpi org/jenkinsci/plugins/kubernetes-credentials/0.10.0/kubernetes-credentials-0.10.0.hpi org/jenkinsci/plugins/pipeline-model-api/2.2118.v31fd5b_9944b_5/pipeline-model-api-2.2118.v31fd5b_9944b_5.hpi org/jenkinsci/plugins/pipeline-model-definition/2.2118.v31fd5b_9944b_5/pipeline-model-definition-2.2118.v31fd5b_9944b_5.hpi org/jenkinsci/plugins/pipeline-model-extensions/2.2118.v31fd5b_9944b_5/pipeline-model-extensions-2.2118.v31fd5b_9944b_5.hpi org/jenkinsci/plugins/pipeline-stage-tags-metadata/2.2118.v31fd5b_9944b_5/pipeline-stage-tags-metadata-2.2118.v31fd5b_9944b_5.hpi org/jvnet/hudson/plugins/favorite/2.3.1/favorite-2.3.1.hpi

          Barel Elbaz added a comment - - edited

          It definitely should be fixed, this is not a "minor" bug at all...

          Please prioritize

          Barel Elbaz added a comment - - edited It definitely should be fixed, this is not a "minor" bug at all... Please prioritize

          Well, I also just leaned the hard way that the fallthrough to the default case is broken... (same as in comment from shoelzle)

          Jenkins 2.375.2

          Cannot believe this is considered a minor case.

           

          Klaus Hegemann added a comment - Well, I also just leaned the hard way that the fallthrough to the default case is broken... (same as in comment from shoelzle ) Jenkins 2.375.2 Cannot believe this is considered a minor case.  

          Klaus Hegemann added a comment - Same issue here: https://issues.jenkins.io/browse/JENKINS-54652

            Unassigned Unassigned
            loganmzz Logan Mzz
            Votes:
            4 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: