new (Autotest::Merb)

    # File lib/generators/templates/application/merb_core/autotest/merb.rb, line 12
      def initialize
        super

        initialize_test_layout

        # Ignore any happenings in these directories
        add_exception %r%^\./(?:doc|log|public|tmp)%

        # Ignore any mappings that Autotest may have already set up
        clear_mappings

        # Any changes to a file in the root of the 'lib' directory will run any
        # model test with a corresponding name.
        add_mapping %r%^lib\/.*\.rb% do |filename, _|
          files_matching Regexp.new(["^#{model_test_for(filename)}$"])
        end

        # Any changes to a fixture will run corresponding view, controller and
        # model tests
        add_mapping %r%^#{fixtures_dir}/(.*)s.yml% do |_, m|
          [
            model_test_for(m[1]),
            controller_test_for(m[1]),
            view_test_for(m[1])
          ]
        end

        # Any change to a test or test will cause it to be run
        add_mapping %r%^test/(unit|models|integration|controllers|views|functional)/.*rb$% do |filename, _|
          filename
        end

        # Any change to a model will cause it's corresponding test to be run
        add_mapping %r%^app/models/(.*)\.rb$% do |_, m|
          model_test_for(m[1])
        end

        # Any change to the global helper will result in all view and controller
        # tests being run
        add_mapping %r%^app/helpers/global_helpers.rb% do
          files_matching %r%^test/(views|functional|controllers)/.*_test\.rb$%
        end

        # Any change to a helper will run it's corresponding view and controller
        # tests, unless the helper is the global helper. Changes to the global
        # helper run all view and controller tests.
        add_mapping %r%^app/helpers/(.*)_helper(s)?.rb% do |_, m|
          if m[1] == "global" then
            files_matching %r%^test/(views|functional|controllers)/.*_test\.rb$%
          else
            [
              view_test_for(m[1]),
              controller_test_for(m[1])
            ]
          end
        end

        # Changes to views result in their corresponding view and controller test
        # being run
        add_mapping %r%^app/views/(.*)/% do |_, m|
          [
            view_test_for(m[1]),
            controller_test_for(m[1])
          ]
        end

        # Changes to a controller result in its corresponding test being run. If
        # the controller is the exception or application controller, all
        # controller tests are run.
        add_mapping %r%^app/controllers/(.*)\.rb$% do |_, m|
          if ["application", "exception"].include?(m[1])
            files_matching %r%^test/(controllers|views|functional)/.*_test\.rb$%
          else
            controller_test_for(m[1])
          end
        end

        # If a change is made to the router, run all controller and view tests
        add_mapping %r%^config/router.rb$% do # FIX
          files_matching %r%^test/(controllers|views|functional)/.*_test\.rb$%
        end

        # If any of the major files governing the environment are altered, run
        # everything
        add_mapping %r%^test/test_helper.rb|config/(init|rack|environments/test.rb|database.yml)% do # FIX
          files_matching %r%^test/(unit|models|controllers|views|functional)/.*_test\.rb$%
        end
      end