Skip to content

Commit 4adf02a

Browse files
committed
Update rake tasks and CI configs for committing generated files
- Add `verify_generated` task to Rakefile - Always run rubocop on generated files
1 parent 60cfae7 commit 4adf02a

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

.github/workflows/lint.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ jobs:
2727
bundler-cache: true
2828
- name: Run rubocop
2929
run: bundle exec rubocop
30-
- name: Sanity check for the format_generated_files task
31-
run: bundle exec rake generate format_generated_files
30+
- name: Verify generated parser files are up to date
31+
run: bundle exec rake verify_generated
3232

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ jobs:
5050
with:
5151
ruby-version: ${{ matrix.ruby }}
5252
bundler-cache: true # 'bundle install' and cache
53+
- name: Verify generated parser files
54+
run: bundle exec rake verify_generated
5355
- name: Run test
5456
run: bundle exec rake
5557
env:

Rakefile

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ $:.unshift File.expand_path('lib', __dir__) # default template dir
55
require_relative 'lib/rdoc/task'
66
require 'bundler/gem_tasks'
77
require 'rake/testtask'
8+
require 'rubocop/rake_task'
89

910
task :test => [:normal_test, :rubygems_test]
1011

@@ -37,13 +38,11 @@ end
3738

3839
Rake::TestTask.new(:normal_test) do |t|
3940
t.verbose = true
40-
t.deps = :generate
4141
t.test_files = FileList["test/**/*_test.rb"].exclude("test/rdoc/rdoc_rubygems_hook_test.rb")
4242
end
4343

4444
Rake::TestTask.new(:rubygems_test) do |t|
4545
t.verbose = true
46-
t.deps = :generate
4746
t.pattern = "test/rdoc/rdoc_rubygems_hook_test.rb"
4847
end
4948

@@ -87,9 +86,33 @@ parsed_files = PARSER_FILES.map do |parser_file|
8786
parsed_file
8887
end
8988

89+
RuboCop::RakeTask.new(:format_generated_files) do |t|
90+
t.options = parsed_files + ["--config=.generated_files_rubocop.yml"]
91+
end
92+
9093
task "#{path}.gem" => package_parser_files
9194
desc "Generate all files used racc and kpeg"
92-
task :generate => parsed_files
95+
task generate: [*parsed_files, "format_generated_files:autocorrect"]
96+
97+
desc "Verify that generated parser files are up to date"
98+
task verify_generated: :generate do
99+
# Check if there are any uncommitted changes to the generated files
100+
parsed_files.each do |file|
101+
unless File.exist?(file)
102+
abort "Generated file #{file} does not exist!"
103+
end
104+
end
105+
106+
diff_output = `git diff --exit-code #{parsed_files.join(' ')} 2>&1`
107+
unless $?.success?
108+
puts "Generated parser files are out of date!"
109+
puts "Please run 'rake generate' and commit the changes."
110+
puts "\nDifferences found:"
111+
puts diff_output
112+
exit 1
113+
end
114+
puts "Generated parser files are up to date."
115+
end
93116

94117
task :clean do
95118
parsed_files.each do |path|
@@ -109,13 +132,3 @@ namespace :build do
109132
mv("#{path}.gem", target)
110133
end
111134
end
112-
113-
begin
114-
require 'rubocop/rake_task'
115-
rescue LoadError
116-
else
117-
RuboCop::RakeTask.new(:format_generated_files) do |t|
118-
t.options = parsed_files + ["--config=.generated_files_rubocop.yml"]
119-
end
120-
task :build => [:generate, "format_generated_files:autocorrect"]
121-
end

0 commit comments

Comments
 (0)