mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add MSpec tool to automatically wrap spec files with a guard
This commit is contained in:
parent
d0bd43c332
commit
bb3d705819
1 changed files with 28 additions and 0 deletions
28
spec/mspec/tool/wrap_with_guard.rb
Executable file
28
spec/mspec/tool/wrap_with_guard.rb
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
# Wrap the passed the files with a guard (e.g., `ruby_version_is ""..."3.0"`).
|
||||||
|
# Notably if some methods are removed, this is a convenient way to skip such file from a given version.
|
||||||
|
# Example usage:
|
||||||
|
# $ spec/mspec/tool/wrap_with_guard.rb 'ruby_version_is ""..."3.0"' spec/ruby/library/set/sortedset/**/*_spec.rb
|
||||||
|
|
||||||
|
guard, *files = ARGV
|
||||||
|
abort "Usage: #{$0} GUARD FILES..." if files.empty?
|
||||||
|
|
||||||
|
files.each do |file|
|
||||||
|
contents = File.binread(file)
|
||||||
|
lines = contents.lines.to_a
|
||||||
|
|
||||||
|
lines = lines.map { |line| line.chomp.empty? ? line : " #{line}" }
|
||||||
|
|
||||||
|
version_line = "#{guard} do\n"
|
||||||
|
if lines[0] =~ /^\s*require.+spec_helper/
|
||||||
|
lines[0] = lines[0].sub(/^ /, '')
|
||||||
|
lines.insert 1, "\n", version_line
|
||||||
|
else
|
||||||
|
warn "Could not find 'require spec_helper' line in #{file}"
|
||||||
|
lines.insert 0, version_line
|
||||||
|
end
|
||||||
|
|
||||||
|
lines << "end\n"
|
||||||
|
|
||||||
|
File.binwrite file, lines.join
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue