From caee658cf43d16ce742957e90677884de49ceefe Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Thu, 5 Sep 2024 15:14:22 +0200 Subject: [PATCH 1/2] Update rubocop configuration And fix issues --- .rubocop.yml | 3 +- lib/pmdtester/builders/pmd_report_builder.rb | 26 +++---- lib/pmdtester/builders/rule_set_builder.rb | 4 +- lib/pmdtester/collection_by_file.rb | 2 +- lib/pmdtester/parsers/options.rb | 5 +- lib/pmdtester/parsers/projects_parser.rb | 6 +- lib/pmdtester/pmd_branch_detail.rb | 4 +- lib/pmdtester/runner.rb | 2 +- pmdtester.gemspec | 4 +- test/integration_test_runner.rb | 60 +++++++-------- test/manual_integration_tests.rb | 2 +- test/test_cmd.rb | 2 +- test/test_helper.rb | 6 +- test/test_pmd_branch_detail.rb | 4 +- test/test_pmd_report_builder.rb | 77 ++++++++++++-------- test/test_pmd_report_document.rb | 2 +- test/test_project_builder.rb | 6 +- test/test_projects_parser.rb | 14 ++-- test/test_rule_set_builder.rb | 2 +- test/test_runner.rb | 2 +- 20 files changed, 125 insertions(+), 108 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index f07cd34c..58dc8c36 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,6 +2,7 @@ inherit_from: .rubocop_todo.yml AllCops: TargetRubyVersion: 2.7 + NewCops: enable Include: - 'lib/**/*' - 'test/**/*' @@ -13,7 +14,7 @@ AllCops: - 'test/resources/**/*' - 'vendor/**/*' -Metrics/LineLength: +Layout/LineLength: Max: 120 Metrics/MethodLength: diff --git a/lib/pmdtester/builders/pmd_report_builder.rb b/lib/pmdtester/builders/pmd_report_builder.rb index 1070a1d0..04fa644d 100644 --- a/lib/pmdtester/builders/pmd_report_builder.rb +++ b/lib/pmdtester/builders/pmd_report_builder.rb @@ -37,7 +37,7 @@ def get_pmd_binary_file logger.debug "#{@pmd_branch_name}: distro_path=#{distro_path}" if File.directory?(distro_path) logger.info "#{@pmd_branch_name}: Skipping packaging - saved version exists " \ - " in #{distro_path}" + "in #{distro_path}" else build_pmd(into_dir: distro_path) end @@ -174,7 +174,7 @@ def checkout_build_branch # working dir is dirty.... # we don't allow this because we need the SHA to address the zip file - logger.error "#{@pmd_branch_name}: Won\'t build without a clean working tree, " \ + logger.error "#{@pmd_branch_name}: Won't build without a clean working tree, " \ 'commit your changes' end @@ -186,8 +186,8 @@ def work_dir # e.g. /pmd-bin--- def saved_distro_path(build_sha) "#{work_dir}/pmd-bin-#{@pmd_version}" \ - "-#{PmdBranchDetail.branch_filename(@pmd_branch_name)}" \ - "-#{build_sha}" + "-#{PmdBranchDetail.branch_filename(@pmd_branch_name)}" \ + "-#{build_sha}" end def wd_has_dirty_git_changes @@ -247,15 +247,15 @@ def find_pmd_dist_target def build_pmd_with_maven logger.info "#{@pmd_branch_name}: Building PMD #{@pmd_version}..." - package_cmd = './mvnw clean package' \ - " -s #{ResourceLocator.resource('maven-settings.xml')} " \ - ' -Pfor-dokka-maven-plugin' \ - ' -Dmaven.test.skip=true' \ - ' -Dmaven.javadoc.skip=true' \ - ' -Dmaven.source.skip=true' \ - ' -Dcheckstyle.skip=true' \ - ' -Dpmd.skip=true' \ - ' -T1C -B' + package_cmd = './mvnw clean package ' \ + "-s #{ResourceLocator.resource('maven-settings.xml')} " \ + '-Pfor-dokka-maven-plugin ' \ + '-Dmaven.test.skip=true ' \ + '-Dmaven.javadoc.skip=true ' \ + '-Dmaven.source.skip=true ' \ + '-Dcheckstyle.skip=true ' \ + '-Dpmd.skip=true ' \ + '-T1C -B' logger.debug "#{@pmd_branch_name}: maven command: #{package_cmd}" Cmd.execute_successfully(package_cmd) end diff --git a/lib/pmdtester/builders/rule_set_builder.rb b/lib/pmdtester/builders/rule_set_builder.rb index 58e7be1e..d9b8a574 100644 --- a/lib/pmdtester/builders/rule_set_builder.rb +++ b/lib/pmdtester/builders/rule_set_builder.rb @@ -52,7 +52,7 @@ def output_filter_set(rule_refs) end logger.info "Using filter based on patch config #{@options.patch_config}: " \ - "#{@options.filter_set}" + "#{@options.filter_set}" else # if `rule_refs` is empty, then no filter can be used when comparing to the baseline logger.info 'No filter when comparing patch to baseline' @@ -90,7 +90,7 @@ def get_rule_refs(filenames) def build_config_file(rule_refs) if rule_refs.empty? logger.debug 'All rules are used. Not generating a dynamic ruleset.' - logger.debug "Using the configured/default ruleset base_config=#{@options.base_config} "\ + logger.debug "Using the configured/default ruleset base_config=#{@options.base_config} " \ "patch_config=#{@options.patch_config}" return end diff --git a/lib/pmdtester/collection_by_file.rb b/lib/pmdtester/collection_by_file.rb index 8ab7fc37..9e6f0969 100644 --- a/lib/pmdtester/collection_by_file.rb +++ b/lib/pmdtester/collection_by_file.rb @@ -7,7 +7,7 @@ module PmdTester class CollectionByFile def initialize # a hash of filename -> [list of items] - @hash = Hash.new([]) + @hash = {} @total = 0 end diff --git a/lib/pmdtester/parsers/options.rb b/lib/pmdtester/parsers/options.rb index b2f8d3ee..7e928ea5 100644 --- a/lib/pmdtester/parsers/options.rb +++ b/lib/pmdtester/parsers/options.rb @@ -95,8 +95,9 @@ def parse(argv) 'path to the file which contains the list of standard projects', default: DEFAULT_LIST_PATH o.string '-m', '--mode', mode_message, default: 'local' - o.integer '-t', '--threads', 'Sets the number of threads used by PMD.' \ - ' Set threads to 0 to disable multi-threading processing.', default: 1 + o.integer '-t', '--threads', + 'Sets the number of threads used by PMD. Set threads to 0 to disable ' \ + 'multi-threading processing.', default: 1 o.bool '-f', '--html-flag', 'whether to not generate the html diff report in single mode' o.bool '-a', '--auto-gen-config', diff --git a/lib/pmdtester/parsers/projects_parser.rb b/lib/pmdtester/parsers/projects_parser.rb index 46ea2786..99d2e739 100644 --- a/lib/pmdtester/parsers/projects_parser.rb +++ b/lib/pmdtester/parsers/projects_parser.rb @@ -13,11 +13,7 @@ def parse(list_file) errors = schema.validate(document) raise ProjectsParserException.new(errors), "Schema validate failed: In #{list_file}" unless errors.empty? - projects = [] - document.xpath('//project').each do |project| - projects.push(Project.new(project)) - end - projects + document.xpath('//project').map { |project| Project.new(project) } end def schema_file_path diff --git a/lib/pmdtester/pmd_branch_detail.rb b/lib/pmdtester/pmd_branch_detail.rb index 08b2f4ee..b97ea994 100644 --- a/lib/pmdtester/pmd_branch_detail.rb +++ b/lib/pmdtester/pmd_branch_detail.rb @@ -32,9 +32,9 @@ def initialize(branch_name) @execution_time = 0 # the result of command 'java -version' is going to stderr @jdk_version = Cmd.stderr_of('java -version') - @language = ENV['LANG'] # the locale + @language = ENV.fetch('LANG') # the locale - prnum = ENV[PR_NUM_ENV_VAR] + prnum = ENV.fetch(PR_NUM_ENV_VAR, 'false') @pull_request = prnum == 'false' ? nil : prnum end diff --git a/lib/pmdtester/runner.rb b/lib/pmdtester/runner.rb index a664eaf8..51e3b6dc 100644 --- a/lib/pmdtester/runner.rb +++ b/lib/pmdtester/runner.rb @@ -27,7 +27,7 @@ def run def clean clean_target = 'target/reports' - FileUtils.remove_dir(clean_target) if Dir.exist?(clean_target) + FileUtils.rm_rf(clean_target) end def run_local_mode diff --git a/pmdtester.gemspec b/pmdtester.gemspec index 543f2c43..ee58e3d7 100644 --- a/pmdtester.gemspec +++ b/pmdtester.gemspec @@ -11,12 +11,12 @@ Gem::Specification.new do |s| s.metadata = { "bug_tracker_uri" => "https://github.com/pmd/pmd-regression-tester/issues", "homepage_uri" => "https://pmd.github.io", "source_code_uri" => "https://github.com/pmd/pmd-regression-tester" } if s.respond_to? :metadata= s.require_paths = ["lib".freeze] s.authors = ["Andreas Dangel".freeze, "Binguo Bao".freeze, "Cl\u00E9ment Fournier".freeze] - s.date = "2024-05-01" + s.date = "2024-09-05" s.description = "A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue , and new rules can work as expected.".freeze s.email = ["andreas.dangel@pmd-code.org".freeze, "djydewang@gmail.com".freeze, "clement.fournier76@gmail.com".freeze] s.executables = ["pmdtester".freeze] s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "resources/js/README.md".freeze] - s.files = [".ci/build.sh".freeze, ".ci/inc/fetch_ci_scripts.bash".freeze, ".ci/manual-integration-tests.sh".freeze, ".github/workflows/build.yml".freeze, ".github/workflows/manual-integration-tests.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "config/projectlist_1_2_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/liquid_renderer.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/project_hasher.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/collection_by_file.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_tester_utils.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "lib/pmdtester/semver.rb".freeze, "pmdtester.gemspec".freeze, "resources/_includes/diff_pill_row.html".freeze, "resources/css/bootstrap-5.3.0-alpha3.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/README.md".freeze, "resources/js/bootstrap-5.3.0-alpha3.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.6.4.slim.min.js".freeze, "resources/js/popper-2.11.7.min.js".freeze, "resources/js/project-report.js".freeze, "resources/project_diff_report.html".freeze, "resources/project_index.html".freeze, "resources/project_pmd_report.html".freeze] + s.files = [".ci/build.sh".freeze, ".ci/inc/fetch_ci_scripts.bash".freeze, ".ci/manual-integration-tests.sh".freeze, ".github/workflows/build.yml".freeze, ".github/workflows/manual-integration-tests.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "config/projectlist_1_2_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/liquid_renderer.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/project_hasher.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/collection_by_file.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_tester_utils.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "lib/pmdtester/semver.rb".freeze, "pmdtester.gemspec".freeze, "resources/_includes/diff_pill_row.html".freeze, "resources/css/bootstrap-5.3.0-alpha3.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/README.md".freeze, "resources/js/bootstrap-5.3.0-alpha3.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.6.4.slim.min.js".freeze, "resources/js/popper-2.11.7.min.js".freeze, "resources/js/project-report.js".freeze, "resources/maven-settings.xml".freeze, "resources/project_diff_report.html".freeze, "resources/project_index.html".freeze, "resources/project_pmd_report.html".freeze] s.homepage = "https://pmd.github.io".freeze s.licenses = ["BSD-2-Clause".freeze] s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] diff --git a/test/integration_test_runner.rb b/test/integration_test_runner.rb index f21e62e4..29996661 100644 --- a/test/integration_test_runner.rb +++ b/test/integration_test_runner.rb @@ -9,9 +9,9 @@ def setup end def test_local_mode - argv = '-r target/repositories/pmd -b pmd_releases/6.41.0 -bc config/design.xml' \ - ' -p master -pc config/design.xml -l test/resources/integration_test_runner/project-test.xml' \ - ' --threads ' + Etc.nprocessors.to_s + argv = '-r target/repositories/pmd -b pmd_releases/6.41.0 -bc config/design.xml ' \ + '-p master -pc config/design.xml -l test/resources/integration_test_runner/project-test.xml ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") @@ -32,10 +32,10 @@ def test_local_mode end def test_single_mode - argv = '-r target/repositories/pmd -m single' \ - ' -p pmd_releases/6.41.0 -pc config/design.xml' \ - ' -l test/resources/integration_test_runner/project-list-single.xml' \ - ' --threads ' + Etc.nprocessors.to_s + argv = '-r target/repositories/pmd -m single ' \ + '-p pmd_releases/6.41.0 -pc config/design.xml ' \ + '-l test/resources/integration_test_runner/project-list-single.xml ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") @@ -51,11 +51,11 @@ def test_single_mode end def test_single_mode_with_html_flag_option - argv = '-r target/repositories/pmd -m single' \ - ' -p pmd_releases/6.41.0 -pc config/design.xml' \ - ' -l test/resources/integration_test_runner/project-list-single.xml' \ - ' -f' \ - ' --threads ' + Etc.nprocessors.to_s + argv = '-r target/repositories/pmd -m single ' \ + '-p pmd_releases/6.41.0 -pc config/design.xml ' \ + '-l test/resources/integration_test_runner/project-list-single.xml ' \ + '-f ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") @@ -74,8 +74,8 @@ def test_online_mode base_branch = 'pmd_releases/7.0.0-rc1' patch_branch = 'pmd_releases/7.0.0-rc2' argv = "-r target/repositories/pmd -m online -b #{base_branch} -p #{patch_branch} " \ - '--baseline-download-url https://pmd-code.org/pmd-regression-tester/' \ - ' --threads ' + Etc.nprocessors.to_s + '--baseline-download-url https://pmd-code.org/pmd-regression-tester/ ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") @@ -94,15 +94,15 @@ def test_online_mode def test_online_mode_different_project_list_and_config # This test depends on the file pmd_releases_6.40.0-baseline.zip being available at: # https://pmd-code.org/pmd-regression-tester/pmd_releases_6.40.0-baseline.zip - argv = '--local-git-repo target/repositories/pmd '\ - '--mode online '\ - '--base-branch pmd_releases/6.40.0 '\ - '--patch-branch pmd_releases/6.41.0 '\ - '--patch-config test/resources/integration_test_runner/patch-config.xml '\ - '--list-of-project test/resources/integration_test_runner/project-list.xml '\ + argv = '--local-git-repo target/repositories/pmd ' \ + '--mode online ' \ + '--base-branch pmd_releases/6.40.0 ' \ + '--patch-branch pmd_releases/6.41.0 ' \ + '--patch-config test/resources/integration_test_runner/patch-config.xml ' \ + '--list-of-project test/resources/integration_test_runner/project-list.xml ' \ '--auto-gen-config ' \ - '--baseline-download-url https://pmd-code.org/pmd-regression-tester/' \ - ' --threads ' + Etc.nprocessors.to_s + '--baseline-download-url https://pmd-code.org/pmd-regression-tester/ ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") @@ -121,16 +121,16 @@ def test_online_mode_different_project_list_and_config def test_online_mode_project_list_and_config_with_apex # This test depends on the file pmd_releases_6.40.0-baseline.zip being available at: # https://pmd-code.org/pmd-regression-tester/pmd_releases_6.40.0-baseline.zip - argv = '--local-git-repo target/repositories/pmd '\ - '--mode online '\ - '--base-branch pmd_releases/6.40.0 '\ - '--patch-branch pmd_releases/6.41.0 '\ - '--patch-config test/resources/integration_test_runner/patch-config-with-apex.xml '\ - '--list-of-project test/resources/integration_test_runner/project-list-with-apex.xml '\ + argv = '--local-git-repo target/repositories/pmd ' \ + '--mode online ' \ + '--base-branch pmd_releases/6.40.0 ' \ + '--patch-branch pmd_releases/6.41.0 ' \ + '--patch-config test/resources/integration_test_runner/patch-config-with-apex.xml ' \ + '--list-of-project test/resources/integration_test_runner/project-list-with-apex.xml ' \ '--auto-gen-config ' \ '--filter-with-patch-config ' \ - '--baseline-download-url https://pmd-code.org/pmd-regression-tester/' \ - ' --threads ' + Etc.nprocessors.to_s + '--baseline-download-url https://pmd-code.org/pmd-regression-tester/ ' \ + '--threads ' + Etc.nprocessors.to_s system("bundle exec bin/pmdtester #{argv}") diff --git a/test/manual_integration_tests.rb b/test/manual_integration_tests.rb index 6ca4a346..1de668cc 100644 --- a/test/manual_integration_tests.rb +++ b/test/manual_integration_tests.rb @@ -230,7 +230,7 @@ def create_summary_message "introduces #{@summary[:violations][:new]} new violations, " \ "#{@summary[:errors][:new]} new errors and " \ "#{@summary[:configerrors][:new]} new configuration errors,\n" \ - "removes #{@summary[:violations][:removed]} violations, "\ + "removes #{@summary[:violations][:removed]} violations, " \ "#{@summary[:errors][:removed]} errors and " \ "#{@summary[:configerrors][:removed]} configuration errors." end diff --git a/test/test_cmd.rb b/test/test_cmd.rb index 848f0aff..af0b6040 100644 --- a/test/test_cmd.rb +++ b/test/test_cmd.rb @@ -8,7 +8,7 @@ class TestCmd < Test::Unit::TestCase def setup @tempdir = 'test-TestCmd-temp' - Dir.mkdir @tempdir unless Dir.exist?(@tempdir) + FileUtils.mkdir_p @tempdir end def teardown diff --git a/test/test_helper.rb b/test/test_helper.rb index ed0dc78f..f7fc9bf6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -12,13 +12,13 @@ def normalize_text(text) end def assert_file_equals(expected_path, actual_path) - expected_file = normalize_text(File.open(expected_path).read) - actual_file = normalize_text(File.open(actual_path).read) + expected_file = normalize_text(File.read(expected_path)) + actual_file = normalize_text(File.read(actual_path)) assert_equal(expected_file, actual_file, actual_path) end def assert_file_content_equals(expected_content, actual_path) - actual_content = normalize_text(File.open(actual_path).read) + actual_content = normalize_text(File.read(actual_path)) assert_equal(expected_content, actual_content, actual_path) end diff --git a/test/test_pmd_branch_detail.rb b/test/test_pmd_branch_detail.rb index 4784b7aa..63b9246f 100644 --- a/test/test_pmd_branch_detail.rb +++ b/test/test_pmd_branch_detail.rb @@ -5,7 +5,7 @@ # Unit test class for PmdTester::PmdBranchDetail class TestPmdBranchDetail < Test::Unit::TestCase def setup - @old_pr = ENV[PmdTester::PR_NUM_ENV_VAR] + @old_pr = ENV.fetch(PmdTester::PR_NUM_ENV_VAR, nil) end def cleanup @@ -31,7 +31,7 @@ def test_save_and_load assert_equal('test time', details.execution_time) assert_equal(PmdTester::Cmd.stderr_of('java -version'), details.jdk_version) assert_not_empty(details.jdk_version) - assert_equal(ENV['LANG'], details.language) + assert_equal(ENV.fetch('LANG'), details.language) assert_not_empty(details.language) assert_equal('1234', details.pull_request) end diff --git a/test/test_pmd_report_builder.rb b/test/test_pmd_report_builder.rb index c69d1c61..00c069c6 100644 --- a/test/test_pmd_report_builder.rb +++ b/test/test_pmd_report_builder.rb @@ -9,6 +9,8 @@ def setup @pmd_version = '6.10.0-SNAPSHOT' # create a empty pmd repo directory FileUtils.mkdir_p 'target/repositories/pmd' + # remove any cached distro_patch + FileUtils.rm_rf "target/pmd-bin-#{@pmd_version}-master-sha1abc" end def teardown @@ -16,7 +18,7 @@ def teardown # pre-built PMD binary ["#{pmd_repo}/pmd-dist/target/pmd-bin-#{@pmd_version}.zip", "#{pmd_repo}/pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip"].each do |pmd_binary| - File.unlink pmd_binary if File.exist? pmd_binary + FileUtils.rm_f pmd_binary end # only deleting empty directories in order to leave pmd_repo intact @@ -54,10 +56,14 @@ def test_build_skip_ci FileUtils.touch "target/repositories/pmd/pmd-dist/target/pmd-bin-#{@pmd_version}.zip" record_expectations(sha1_head: 'sha1abc', sha1_base: 'sha1abc', zip_file_exists: false) - PmdTester::Cmd.stubs(:execute_successfully).with("unzip -qo pmd-dist/target/pmd-bin-#{@pmd_version}.zip" \ - ' -d pmd-dist/target/exploded').once - PmdTester::Cmd.stubs(:execute_successfully).with("mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version}" \ - " #{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc").once + PmdTester::Cmd.stubs(:execute_successfully).with( + "unzip -qo pmd-dist/target/pmd-bin-#{@pmd_version}.zip " \ + '-d pmd-dist/target/exploded' + ).once + PmdTester::Cmd.stubs(:execute_successfully).with( + "mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version} " \ + "#{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc" + ).once record_expectations_after_build PmdTester::PmdReportBuilder @@ -69,17 +75,21 @@ def test_build_skip_ci def test_build_skip_ci_pmd7 projects = [] argv = %w[-r target/repositories/pmd -b master -p pmd_releases/6.55.0 - -c config/design.xml -l test/resources/pmd_report_builder/project-test.xml] + -c config/design.xml -l test/resources/pmd_report_builder/project-test.xml -d] options = PmdTester::Options.new(argv) FileUtils.mkdir_p 'target/repositories/pmd/pmd-dist/target' FileUtils.touch "target/repositories/pmd/pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip" record_expectations(sha1_head: 'sha1abc', sha1_base: 'sha1abc', zip_file_exists: false) - PmdTester::Cmd.stubs(:execute_successfully).with("unzip -qo pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip" \ - ' -d pmd-dist/target/exploded').once - PmdTester::Cmd.stubs(:execute_successfully).with("mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version}" \ - " #{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc").once + PmdTester::Cmd.stubs(:execute_successfully).with( + "unzip -qo pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip " \ + '-d pmd-dist/target/exploded' + ).once + PmdTester::Cmd.stubs(:execute_successfully).with( + "mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version} " \ + "#{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc" + ).once record_expectations_after_build PmdTester::PmdReportBuilder @@ -96,10 +106,14 @@ def test_build_normal # PMD binary does not exist yet this time... record_expectations(sha1_head: 'sha1abc', sha1_base: 'sha1abc', zip_file_exists: false) stub_pmd_build_maven(binary_name: "pmd-bin-#{@pmd_version}.zip") - PmdTester::Cmd.stubs(:execute_successfully).with("unzip -qo pmd-dist/target/pmd-bin-#{@pmd_version}.zip" \ - ' -d pmd-dist/target/exploded').once - PmdTester::Cmd.stubs(:execute_successfully).with("mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version}" \ - " #{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc").once + PmdTester::Cmd.stubs(:execute_successfully).with( + "unzip -qo pmd-dist/target/pmd-bin-#{@pmd_version}.zip " \ + '-d pmd-dist/target/exploded' + ).once + PmdTester::Cmd.stubs(:execute_successfully).with( + "mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version} " \ + "#{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc" + ).once record_expectations_after_build PmdTester::PmdReportBuilder @@ -116,10 +130,14 @@ def test_build_normal_pmd7 # PMD binary does not exist yet this time... record_expectations(sha1_head: 'sha1abc', sha1_base: 'sha1abc', zip_file_exists: false) stub_pmd_build_maven(binary_name: "pmd-dist-#{@pmd_version}-bin.zip") - PmdTester::Cmd.stubs(:execute_successfully).with("unzip -qo pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip" \ - ' -d pmd-dist/target/exploded').once - PmdTester::Cmd.stubs(:execute_successfully).with("mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version}" \ - " #{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc").once + PmdTester::Cmd.stubs(:execute_successfully).with( + "unzip -qo pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip " \ + '-d pmd-dist/target/exploded' + ).once + PmdTester::Cmd.stubs(:execute_successfully).with( + "mv pmd-dist/target/exploded/pmd-bin-#{@pmd_version} " \ + "#{Dir.getwd}/target/pmd-bin-#{@pmd_version}-master-sha1abc" + ).once record_expectations_after_build PmdTester::PmdReportBuilder @@ -285,10 +303,11 @@ def record_expectations(sha1_head:, sha1_base:, zip_file_exists:) # inside checkout_build_branch PmdTester::Cmd.stubs(:execute_successfully).with('git checkout master') .returns('checked out branch master').once - PmdTester::Cmd.stubs(:execute_successfully).with('./mvnw -q -Dexec.executable="echo" ' \ - "-Dexec.args='${project.version}' " \ - '--non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec') - .returns(@pmd_version).at_least(1).at_most(2) + PmdTester::Cmd.stubs(:execute_successfully).with( + './mvnw -q -Dexec.executable="echo" ' \ + "-Dexec.args='${project.version}' " \ + '--non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec' + ).returns(@pmd_version).at_least(1).at_most(2) PmdTester::Cmd.stubs(:execute_successfully).with('git status --porcelain').returns('').once # back into get_pmd_binary_file @@ -297,8 +316,8 @@ def record_expectations(sha1_head:, sha1_base:, zip_file_exists:) distro_path = "target/pmd-bin-#{@pmd_version}-master-#{sha1_base}" if zip_file_exists FileUtils.mkdir_p(distro_path) - elsif File.exist?(distro_path) - Dir.rmdir(distro_path) + else + FileUtils.rm_f distro_path end end @@ -325,11 +344,11 @@ def cleanup_pmd_dist_dir(base_dir:) def stub_pmd_build_maven(binary_name:) PmdTester::Cmd.stubs(:execute_successfully).with do |cmd| if cmd == './mvnw clean package ' \ - "-s #{PmdTester::ResourceLocator.resource('maven-settings.xml')} " \ - ' -Pfor-dokka-maven-plugin' \ - ' -Dmaven.test.skip=true' \ - ' -Dmaven.javadoc.skip=true -Dmaven.source.skip=true' \ - ' -Dcheckstyle.skip=true -Dpmd.skip=true -T1C -B' + "-s #{PmdTester::ResourceLocator.resource('maven-settings.xml')} " \ + '-Pfor-dokka-maven-plugin ' \ + '-Dmaven.test.skip=true ' \ + '-Dmaven.javadoc.skip=true -Dmaven.source.skip=true ' \ + '-Dcheckstyle.skip=true -Dpmd.skip=true -T1C -B' FileUtils.mkdir_p 'pmd-dist/target' FileUtils.touch "pmd-dist/target/#{binary_name}" true diff --git a/test/test_pmd_report_document.rb b/test/test_pmd_report_document.rb index 111eab17..d76b4c41 100644 --- a/test/test_pmd_report_document.rb +++ b/test/test_pmd_report_document.rb @@ -36,7 +36,7 @@ def test_filter_set_single_rule parser.parse(File.open('test/resources/pmd_report_document/test_document.xml')) assert_equal(4, doc.violations.total_size, 'wrong number of violations') assert_equal(3, doc.violations.num_files, 'wrong number of files') - first_file = 'target/repositories/spring-framework/spring-aop/src/main/java/'\ + first_file = 'target/repositories/spring-framework/spring-aop/src/main/java/' \ 'org/springframework/aop/ClassFilter.java' assert_equal(44, doc.violations[first_file][0].line) end diff --git a/test/test_project_builder.rb b/test/test_project_builder.rb index a8d3d5b0..cf26eb8c 100644 --- a/test/test_project_builder.rb +++ b/test/test_project_builder.rb @@ -36,7 +36,7 @@ def test_build .returns('target/repositories/spring-framework') .returns('target/repositories/spring-framework') expect_build('checkstyle', 'mvn test-compile -B', - "#!/usr/bin/env bash\necho -n \"\$(pwd)/target/classes:\"\n ") + "#!/usr/bin/env bash\necho -n \"$(pwd)/target/classes:\"\n ") expect_build('spring-framework') project_builder = PmdTester::ProjectBuilder.new(@projects) project_builder.build_projects @@ -49,8 +49,8 @@ def test_build def expect_git_clone(name, url, revision) File.stubs(:exist?).with("target/repositories/#{name}").returns(false).once - PmdTester::Cmd.stubs(:execute_successfully).with('git clone --single-branch --depth 1' \ - " #{url} target/repositories/#{name}").once + PmdTester::Cmd.stubs(:execute_successfully).with('git clone --single-branch --depth 1 ' \ + "#{url} target/repositories/#{name}").once Dir.stubs(:chdir).with("target/repositories/#{name}").yields.once PmdTester::Cmd.stubs(:execute_successfully).with('git checkout -b fetched/temp').once PmdTester::Cmd.stubs(:execute_successfully).with("git fetch --depth 1 origin #{revision}").once diff --git a/test/test_projects_parser.rb b/test/test_projects_parser.rb index edf533f2..357e7e6d 100644 --- a/test/test_projects_parser.rb +++ b/test/test_projects_parser.rb @@ -10,10 +10,10 @@ def setup end def test_project_parser_checkstyle - expected_exclude_pattern = Array['.*/target/test-classes/com/puppycrawl/tools/checkstyle/.*', - '.*/target/generated-sources/.*', - '.*/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/javaparser/' \ - 'InputJavaParserNoFreezeOnDeeplyNestedLambdas.java'] + expected_exclude_pattern = ['.*/target/test-classes/com/puppycrawl/tools/checkstyle/.*', + '.*/target/generated-sources/.*', + '.*/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/javaparser/' \ + 'InputJavaParserNoFreezeOnDeeplyNestedLambdas.java'] assert_equal(expected_exclude_pattern, @projects[0].exclude_patterns) assert_equal('https://github.com/checkstyle/checkstyle/tree/checkstyle-9.1', @projects[0].webview_url) @@ -53,11 +53,11 @@ def test_invalid_list rescue PmdTester::ProjectsParserException => e assert_equal("Schema validate failed: In #{list_file}", e.message) assert_equal("10:0: ERROR: Element 'tag': This element is not expected. " \ - 'Expected is ( connection ).', e.errors[0].to_s) + 'Expected is ( connection ).', e.errors[0].to_s) assert_equal("15:0: ERROR: Element 'connection': This element is not expected. " \ - 'Expected is ( type ).', e.errors[1].to_s) + 'Expected is ( type ).', e.errors[1].to_s) assert_equal("20:0: ERROR: Element 'type': [facet 'enumeration'] " \ - "The value 'invalid type' is not an element of the set {'git'}.", + "The value 'invalid type' is not an element of the set {'git'}.", e.errors[2].to_s) end end diff --git a/test/test_rule_set_builder.rb b/test/test_rule_set_builder.rb index 0d96c1f5..ab1a99b6 100644 --- a/test/test_rule_set_builder.rb +++ b/test/test_rule_set_builder.rb @@ -9,7 +9,7 @@ class TestRuleSetBuilder < Test::Unit::TestCase def cleanup filename = RuleSetBuilder::PATH_TO_DYNAMIC_CONFIG - File.delete(filename) if File.exist?(filename) + FileUtils.rm_rf filename end def mock_build(diff_filenames, filter_set = nil, patch_config = nil) diff --git a/test/test_runner.rb b/test/test_runner.rb index 5b4a60a9..2a7fea0c 100644 --- a/test/test_runner.rb +++ b/test/test_runner.rb @@ -149,7 +149,7 @@ def test_online_mode_keep_reports_second_run_filtering # create a empty directory for PMD build to avoid building PMD during test fake_pmd_bin = 'target/pmd-bin-6.7.0-pmd_releases_6.7.0-b98bd0bb961d9f82437acccfe64923d992970310' - FileUtils.mkdir_p fake_pmd_bin unless Dir.exist?(fake_pmd_bin) + FileUtils.mkdir_p fake_pmd_bin begin argv = %w[-r target/repositories/pmd -m online -b master -p pmd_releases/6.7.0 From 01f145b980904991ce15b76ba6a1808ae81bf8a3 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Thu, 5 Sep 2024 15:18:17 +0200 Subject: [PATCH 2/2] Update changelog (#125) --- History.md | 1 + 1 file changed, 1 insertion(+) diff --git a/History.md b/History.md index 97477d3e..fbb87561 100644 --- a/History.md +++ b/History.md @@ -4,6 +4,7 @@ ## Enhancements * [#123](https://github.com/pmd/pmd-regression-tester/pull/123): Support ruby 3.3.0 +* [#125](https://github.com/pmd/pmd-regression-tester/pull/125): Update rubocop configuration ## Fixed Issues * [#126](https://github.com/pmd/pmd-regression-tester/pull/126): Fix integration tests