Currently, provides only a test helper for testing custom Guard plugins.
In your gemspec:
s.add_dependency('guard-compat', '~> 1.0')In all your plugin files (e.g. lib/guard/myplugin.rb):
# Don't require "guard/plugin" here or in any other plugin's files
require 'guard/compat/plugin'
module Guard
class MyPlugin < Plugin
# (...)
end
end- Do not include any files from Guard directly (if you need something from Guard which Guard::Compat doesn't provide, file an issue)
- Include 'guard/compat/plugin' in all your files which use
Guard::Plugin - Make sure you include the
< Pluginpart in every file which adds classes or methods to your plugin class (important if your plugin consists of multiple files/sub class) - Remove requires from your spec_helper and explicitly add them to each test/file
And in your plugin tests (e.g. spec/lib/guard/myplugin_spec.rb):
require 'guard/compat/test/helper'
require 'guard/myplugin'
# And your tests instantiating your plugin go here...
RSpec.describe Guard::Myplugin doGuard::UI => Guard::Compat::UI (or Compat::UI for short)
Guard::Notifier.notify => Guard::Compat::UI.notify
Guard::Watcher.match_files => Guard::Compat.matching_files (Watcher is otherwise unavailable - see Guard::Less template for passing patterns as plugin options)
Guard::UI.color=> for creating ANSI colored text if currently enabled in GuardGuard::UI.color_enabled?=> for checking if ANSI color output is currently enabled in GuardGuard::UI.watched_directories=> compatible way of obtaining watched_directories (recommended instead of accessing Watcher patterns or pattern subgroup hacks)
(Open an issue if you feel something important is missing)
See lib/guard/compat/example.rb for an example plugin implementation.
See spec/guard/compat/example_spec.rb for an example on how to test plugins using Guard::Compat.
See spec/guard/compat/example_template_spec.rb for an example on how to test plugin templates.
- Fork it ( https://github.com/guard/guard-compat/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request