pmdtester 1.5.3 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d64309fafec9b58208385b35297f4096da84511576ea23382e271b8bcf0bfcb0
4
- data.tar.gz: d90d0ab024c076b3e6e13228d1fef303d63a34c1ce97ddb9169d798b94e63dde
3
+ metadata.gz: '05486a80b029d8a896b789ebb894077c36d6a0f99a651c0b1885a808f6219b8a'
4
+ data.tar.gz: b9a98daf20b7c036a26bea412563a9df771252b338cb7f805c4d42351627b458
5
5
  SHA512:
6
- metadata.gz: 3201eaf56629cb6e859ded9c3522dc3907f50de3694ab1bdd11256f204e0c0fdd2e8bf5857ed0ee2291c02c257be091e6f36110c7c646d55281b0311ae7e9024
7
- data.tar.gz: 7784defdc77b0c5d3f278232ed8f06e3326f3a17c2632e140b376dc1551640e0e0a35ed0d28770140cc6ed5d99ec96c8464dd92afc54f1a8b64421b15df47b72
6
+ metadata.gz: efce54ae5e36f7853427a7ccc203346335f7811d3dddbe3ae5d0f558bff3eb7b1748952fbdd31046c251ea6cb55fac5b1a261fd674c4989b5a6d11e251c1872f
7
+ data.tar.gz: fc72dbd2b79ca40655eea0587f0cb6df1293b6634a9252e428af2dddbe0209f5e74dc2497dadca99687e6e332e495979d42288b100cd55f6b293096645e2f5f5
data/History.md CHANGED
@@ -1,3 +1,16 @@
1
+ # 1.5.5 / 2023-11-16
2
+
3
+ ## Fixed Issues
4
+ * [#121](https://github.com/pmd/pmd-regression-tester/issues/121): Violation messages should be escaped for html
5
+
6
+ # 1.5.4 / 2023-05-27
7
+
8
+ ## Enhancements
9
+
10
+ * [#118](https://github.com/pmd/pmd-regression-tester/pull/118): Update js libraries
11
+ * [#119](https://github.com/pmd/pmd-regression-tester/pull/119): Update manual integration test for PMD 7
12
+ * [#120](https://github.com/pmd/pmd-regression-tester/pull/120): Support new PMD 7 binary dist filename
13
+
1
14
  # 1.5.3 / 2022-11-25
2
15
 
3
16
  ## Fixed Issues
data/Manifest.txt CHANGED
@@ -47,15 +47,15 @@ lib/pmdtester/runner.rb
47
47
  lib/pmdtester/semver.rb
48
48
  pmdtester.gemspec
49
49
  resources/_includes/diff_pill_row.html
50
- resources/css/bootstrap.min.css
50
+ resources/css/bootstrap-5.3.0-alpha3.min.css
51
51
  resources/css/datatables.min.css
52
52
  resources/css/pmd-tester.css
53
- resources/js/bootstrap.min.js
53
+ resources/js/README.md
54
+ resources/js/bootstrap-5.3.0-alpha3.min.js
54
55
  resources/js/code-snippets.js
55
56
  resources/js/datatables.min.js
56
- resources/js/jquery-3.2.1.slim.min.js
57
- resources/js/jquery.min.js
58
- resources/js/popper.min.js
57
+ resources/js/jquery-3.6.4.slim.min.js
58
+ resources/js/popper-2.11.7.min.js
59
59
  resources/js/project-report.js
60
60
  resources/project_diff_report.html
61
61
  resources/project_index.html
data/README.rdoc CHANGED
@@ -127,6 +127,7 @@ The tool creates the following folders:
127
127
  gem install pmdtester --pre
128
128
 
129
129
  == DEVELOPERS:
130
+
130
131
  git clone https://github.com/pmd/pmd-regression-tester.git
131
132
  cd pmd-regression-tester
132
133
  gem install bundler
@@ -136,10 +137,10 @@ The tool creates the following folders:
136
137
  bundle exec pmdtester ... # run this to directly execute pmdtester from source
137
138
 
138
139
  Run a single test class, e.g.:
139
- bundle exec ruby -I test test/test_diff_report_builder.rb
140
+ bundle exec ruby -I test test/test_project_diff_report.rb
140
141
 
141
142
  Run a single test, e.g.:
142
- bundle exec ruby -I test test/test_diff_report_builder.rb -n test_diff_report_builder
143
+ bundle exec ruby -I test test/test_project_diff_report.rb -n test_diff_report_builder
143
144
 
144
145
  === Releasing
145
146
 
@@ -53,24 +53,19 @@ module PmdTester
53
53
  def build_pmd(into_dir:)
54
54
  # in CI there might have been a build performed already. In that case
55
55
  # we reuse the build result, otherwise we build PMD freshly
56
- pmd_dist_target = "pmd-dist/target/pmd-bin-#{@pmd_version}.zip"
57
- binary_exists = File.exist?(pmd_dist_target)
58
- logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
56
+ pmd_dist_target, binary_exists = find_pmd_dist_target
59
57
  if binary_exists
60
58
  # that's a warning, because we don't know, whether this build really
61
59
  # belongs to the current branch or whether it's from a previous branch.
62
60
  # In CI, that's not a problem, because the workspace is always fresh.
63
61
  logger.warn "#{@pmd_branch_name}: Reusing already existing #{pmd_dist_target}"
64
62
  else
65
- logger.info "#{@pmd_branch_name}: Building PMD #{@pmd_version}..."
66
- package_cmd = './mvnw clean package' \
67
- ' -Dmaven.test.skip=true' \
68
- ' -Dmaven.javadoc.skip=true' \
69
- ' -Dmaven.source.skip=true' \
70
- ' -Dcheckstyle.skip=true' \
71
- ' -Dpmd.skip=true' \
72
- ' -T1C -B'
73
- Cmd.execute_successfully(package_cmd)
63
+ build_pmd_with_maven
64
+ pmd_dist_target, binary_exists = find_pmd_dist_target
65
+ unless binary_exists
66
+ logger.error "#{@pmd_branch_name}: Dist zip not found at #{pmd_dist_target}!"
67
+ raise "No Dist zip found at #{pmd_dist_target}"
68
+ end
74
69
  end
75
70
 
76
71
  logger.info "#{@pmd_branch_name}: Extracting the zip"
@@ -96,7 +91,7 @@ module PmdTester
96
91
 
97
92
  def generate_pmd_report(project)
98
93
  error_recovery_options = @error_recovery ? 'PMD_JAVA_OPTS="-Dpmd.error_recovery -ea" ' : ''
99
- fail_on_violation = should_use_long_cli_options? ? '--fail-on-violation false' : '-failOnViolation false'
94
+ fail_on_violation = create_failonviolation_option
100
95
  auxclasspath_option = create_auxclasspath_option(project)
101
96
  pmd_cmd = "#{error_recovery_options}" \
102
97
  "#{determine_run_path} -d #{project.local_source_path} -f xml " \
@@ -213,6 +208,16 @@ module PmdTester
213
208
  auxclasspath_option
214
209
  end
215
210
 
211
+ def create_failonviolation_option
212
+ if pmd7?
213
+ '--no-fail-on-violation'
214
+ elsif should_use_long_cli_options?
215
+ '--fail-on-violation false'
216
+ else
217
+ '-failOnViolation false'
218
+ end
219
+ end
220
+
216
221
  def pmd7?
217
222
  Semver.compare(@pmd_version, '7.0.0-SNAPSHOT') >= 0
218
223
  end
@@ -227,5 +232,30 @@ module PmdTester
227
232
  end
228
233
  run_path
229
234
  end
235
+
236
+ def find_pmd_dist_target
237
+ pmd_dist_target = "pmd-dist/target/pmd-bin-#{@pmd_version}.zip"
238
+ binary_exists = File.exist?(pmd_dist_target)
239
+ logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
240
+ unless binary_exists
241
+ pmd_dist_target = "pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip"
242
+ binary_exists = File.exist?(pmd_dist_target)
243
+ logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
244
+ end
245
+ [pmd_dist_target, binary_exists]
246
+ end
247
+
248
+ def build_pmd_with_maven
249
+ logger.info "#{@pmd_branch_name}: Building PMD #{@pmd_version}..."
250
+ package_cmd = './mvnw clean package' \
251
+ ' -Dmaven.test.skip=true' \
252
+ ' -Dmaven.javadoc.skip=true' \
253
+ ' -Dmaven.source.skip=true' \
254
+ ' -Dcheckstyle.skip=true' \
255
+ ' -Dpmd.skip=true' \
256
+ ' -T1C -B'
257
+ logger.debug "#{@pmd_branch_name}: maven command: #{package_cmd}"
258
+ Cmd.execute_successfully(package_cmd)
259
+ end
230
260
  end
231
261
  end
@@ -117,15 +117,22 @@ module PmdTester
117
117
  'l' => violation.line,
118
118
  'f' => file_ref,
119
119
  'r' => violation.rule_name,
120
- 'm' => is_diff && violation.changed? ? diff_fragments(violation) : violation.message
120
+ 'm' => create_violation_message(violation, is_diff && violation.changed?)
121
121
  }
122
122
  h['ol'] = violation.old_line if is_diff && violation.changed? && violation.line != violation.old_line
123
123
  h
124
124
  end
125
125
 
126
- def diff_fragments(violation)
127
- diff = Differ.diff_by_word(violation.message, violation.old_message)
126
+ def create_violation_message(violation, is_diff)
127
+ return escape_html(violation.message) unless is_diff
128
+
129
+ diff = Differ.diff_by_word(escape_html(violation.message),
130
+ escape_html(violation.old_message))
128
131
  diff.format_as(:html)
129
132
  end
133
+
134
+ def escape_html(string)
135
+ CGI.escapeHTML(string)
136
+ end
130
137
  end
131
138
  end
data/lib/pmdtester/cmd.rb CHANGED
@@ -30,6 +30,7 @@ module PmdTester
30
30
  stdout, stderr, status = internal_execute(cmd)
31
31
 
32
32
  unless status.success?
33
+ logger.error "Command failed: #{cmd}"
33
34
  logger.error stdout
34
35
  logger.error stderr
35
36
  raise CmdException.new(cmd, stdout, stderr, status)
data/lib/pmdtester.rb CHANGED
@@ -33,7 +33,7 @@ require_relative 'pmdtester/parsers/projects_parser'
33
33
  # and unexpected behaviors will not be introduced to PMD project
34
34
  # after fixing an issue and new rules can work as expected.
35
35
  module PmdTester
36
- VERSION = '1.5.3'
36
+ VERSION = '1.5.5'
37
37
  BASE = 'base'
38
38
  PATCH = 'patch'
39
39
  PR_NUM_ENV_VAR = 'PMD_CI_PULL_REQUEST_NUMBER' # see PmdBranchDetail
data/pmdtester.gemspec CHANGED
@@ -1,27 +1,27 @@
1
1
  # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake hoe:spec`.
2
2
 
3
3
  # -*- encoding: utf-8 -*-
4
- # stub: pmdtester 1.5.3 ruby lib
4
+ # stub: pmdtester 1.5.5 ruby lib
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "pmdtester".freeze
8
- s.version = "1.5.3"
8
+ s.version = "1.5.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
11
11
  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=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Andreas Dangel".freeze, "Binguo Bao".freeze, "Cl\u00E9ment Fournier".freeze]
14
- s.date = "2022-11-25"
14
+ s.date = "2023-11-16"
15
15
  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
16
16
  s.email = ["andreas.dangel@pmd-code.org".freeze, "djydewang@gmail.com".freeze, "clement.fournier76@gmail.com".freeze]
17
17
  s.executables = ["pmdtester".freeze]
18
- s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze]
19
- 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, ".ruby-version".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.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/bootstrap.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.2.1.slim.min.js".freeze, "resources/js/jquery.min.js".freeze, "resources/js/popper.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]
18
+ s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "resources/js/README.md".freeze]
19
+ 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, ".ruby-version".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]
20
20
  s.homepage = "https://pmd.github.io".freeze
21
21
  s.licenses = ["BSD-2-Clause".freeze]
22
22
  s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
23
23
  s.required_ruby_version = Gem::Requirement.new(">= 2.7".freeze)
24
- s.rubygems_version = "3.1.4".freeze
24
+ s.rubygems_version = "3.1.6".freeze
25
25
  s.summary = "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
26
26
 
27
27
  if s.respond_to? :specification_version then
@@ -1,6 +1,6 @@
1
1
 
2
- <span class="pill badge-pill badge-secondary added">+{{h.new}}</span>
3
- <span class="pill badge-pill badge-secondary removed">-{{h.removed}}</span>
2
+ <span class="badge rounded-pill badge-secondary added">+{{h.new}}</span>
3
+ <span class="badge rounded-pill badge-secondary removed">-{{h.removed}}</span>
4
4
  {% if h.changed %}
5
- <span class="pill badge-pill badge-secondary changed">~{{h.changed}}</span>
5
+ <span class="badge rounded-pill badge-secondary changed">~{{h.changed}}</span>
6
6
  {% endif %}