Created
June 19, 2020 22:49
-
-
Save madalinignisca/565bfcc5a12b142d967d10714f2b752e to your computer and use it in GitHub Desktop.
Reference Guardfile at railstutorial.org/guardfile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'active_support/core_ext/string' | |
# Defines the matching rules for Guard. | |
guard :minitest, spring: "bin/rails test", all_on_start: false do | |
watch(%r{^test/(.*)/?(.*)_test\.rb$}) | |
watch('test/test_helper.rb') { 'test' } | |
watch('config/routes.rb') { interface_tests } | |
watch(%r{app/views/layouts/*}) { interface_tests } | |
watch(%r{^app/models/(.*?)\.rb$}) do |matches| | |
"test/models/#{matches[1]}_test.rb" | |
end | |
watch(%r{^test/fixtures/(.*?)\.yml$}) do |matches| | |
"test/models/#{matches[1].singularize}_test.rb" | |
end | |
watch(%r{^app/mailers/(.*?)\.rb$}) do |matches| | |
"test/mailers/#{matches[1]}_test.rb" | |
end | |
watch(%r{^app/views/(.*)_mailer/.*$}) do |matches| | |
"test/mailers/#{matches[1]}_mailer_test.rb" | |
end | |
watch(%r{^app/controllers/(.*?)_controller\.rb$}) do |matches| | |
resource_tests(matches[1]) | |
end | |
watch(%r{^app/views/([^/]*?)/.*\.html\.erb$}) do |matches| | |
["test/controllers/#{matches[1]}_controller_test.rb"] + | |
integration_tests(matches[1]) | |
end | |
watch(%r{^app/helpers/(.*?)_helper\.rb$}) do |matches| | |
integration_tests(matches[1]) | |
end | |
watch('app/views/layouts/application.html.erb') do | |
'test/integration/site_layout_test.rb' | |
end | |
watch('app/helpers/sessions_helper.rb') do | |
integration_tests << 'test/helpers/sessions_helper_test.rb' | |
end | |
watch('app/controllers/sessions_controller.rb') do | |
['test/controllers/sessions_controller_test.rb', | |
'test/integration/users_login_test.rb'] | |
end | |
watch('app/controllers/account_activations_controller.rb') do | |
'test/integration/users_signup_test.rb' | |
end | |
watch(%r{app/views/users/*}) do | |
resource_tests('users') + | |
['test/integration/microposts_interface_test.rb'] | |
end | |
end | |
# Returns the integration tests corresponding to the given resource. | |
def integration_tests(resource = :all) | |
if resource == :all | |
Dir["test/integration/*"] | |
else | |
Dir["test/integration/#{resource}_*.rb"] | |
end | |
end | |
# Returns all tests that hit the interface. | |
def interface_tests | |
integration_tests << "test/controllers" | |
end | |
# Returns the controller tests corresponding to the given resource. | |
def controller_test(resource) | |
"test/controllers/#{resource}_controller_test.rb" | |
end | |
# Returns all tests for the given resource. | |
def resource_tests(resource) | |
integration_tests(resource) << controller_test(resource) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment