“I can understand that. I wouldn’t trust myself further than I could spit a rat.”
Catch, and publicly embarrass, untested commits into git.
Zaphod is a formatter for SimpleCov that compares the current git changes with the uncovered source reported by SimpleCov. If any source code appears both in the uncovered code and git changes, Zaphod will call an #on_failure hook. By default, this exits and fails the build.
require "zaphod"
Zaphod.setup
This will set up the Zaphod formatter and start SimpleCov.
It is equivalent to the following:
require "zaphod"
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::ZaphodFormatter
]
SimpleCov.start
Be certain that SimpleCov is started before any of your project’s source is loaded.
require "zaphod"
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter, # Optional, I suppose
SimpleCov::Formatter::ZaphodFormatter
]
SimpleCov.start
require "pony" # https://github.com/benprew/pony
Zaphod.setup do |configuration|
# Action to take if uncovered changes are found:
configuration.on_failure do |uncovered_changes|
Pony.mail(
to: 'your-team@example.com',
subject: "Someone is trying to commit untested code!",
body: uncovered_changes.to_s
)
exit -1 # Abort the build with a failing exit code
end
end
Alternatively, you can set up Zaphod separately from SimpleCov:
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::ZaphodFormatter
]
Zaphod.configure do |configuration|
configuration.on_failure do |uncovered_changes|
$stderr.puts "What would your mother think?"
exit -1
end
end
SimpleCov.start
- Git
- SimpleCov