kicker 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +6 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +34 -0
- data/README.rdoc +5 -5
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/kicker.gemspec +72 -75
- data/lib/kicker.rb +2 -5
- data/lib/kicker/recipes.rb +52 -16
- data/lib/kicker/recipes/rails.rb +13 -25
- data/lib/kicker/recipes/ruby.rb +23 -5
- data/test/growl_test.rb +0 -2
- data/test/recipes/rails_test.rb +61 -48
- data/test/recipes/ruby_test.rb +74 -66
- data/test/recipes_test.rb +34 -6
- data/test/test_helper.rb +23 -0
- metadata +100 -32
- data/.gitignore +0 -10
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.2.1)
|
5
|
+
i18n (~> 0.6)
|
6
|
+
multi_json (~> 1.0)
|
7
|
+
git (1.2.5)
|
8
|
+
i18n (0.6.0)
|
9
|
+
jeweler (1.8.3)
|
10
|
+
bundler (~> 1.0)
|
11
|
+
git (>= 1.2.5)
|
12
|
+
rake
|
13
|
+
rdoc
|
14
|
+
json (1.6.5)
|
15
|
+
metaclass (0.0.1)
|
16
|
+
mocha (0.10.3)
|
17
|
+
metaclass (~> 0.0.1)
|
18
|
+
multi_json (1.0.4)
|
19
|
+
rake (0.9.2.2)
|
20
|
+
rb-fsevent (0.9.0)
|
21
|
+
rdoc (3.12)
|
22
|
+
json (~> 1.4)
|
23
|
+
test-spec (0.10.0)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
activesupport
|
30
|
+
jeweler
|
31
|
+
mocha
|
32
|
+
rake
|
33
|
+
rb-fsevent
|
34
|
+
test-spec
|
data/README.rdoc
CHANGED
@@ -16,12 +16,12 @@ feel offended; live with it.</i>
|
|
16
16
|
== The short version
|
17
17
|
|
18
18
|
Usage: ./bin/kicker [options] [paths to watch]
|
19
|
-
|
20
|
-
Available recipes:
|
21
|
-
|
19
|
+
|
20
|
+
Available recipes: ignore, jstest, rails, ruby.
|
21
|
+
|
22
22
|
-s, --silent Keep output to a minimum.
|
23
|
-
|
24
|
-
|
23
|
+
-q, --quiet Quiet output. Don't print timestamps when logging.
|
24
|
+
-c, --clear Clear console before each run.
|
25
25
|
-l, --latency [FLOAT] The time to collect file change events before acting on them. Defaults to 1 second.
|
26
26
|
-r, --recipe [NAME] A named recipe to load.
|
27
27
|
-e, --execute [COMMAND] The command to execute.
|
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ begin
|
|
17
17
|
gem.add_dependency 'rb-fsevent'
|
18
18
|
end
|
19
19
|
rescue LoadError
|
20
|
-
puts "Jeweler not available. Install it with: sudo gem install
|
20
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler -s http://gems.github.com"
|
21
21
|
end
|
22
22
|
|
23
23
|
Rake::TestTask.new do |t|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.0
|
data/kicker.gemspec
CHANGED
@@ -1,108 +1,105 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{kicker}
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Eloy Duran"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2012-02-03}
|
13
13
|
s.default_executable = %q{kicker}
|
14
14
|
s.email = %q{eloy.de.enige@gmail.com}
|
15
15
|
s.executables = ["kicker"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE",
|
18
|
-
|
18
|
+
"README.rdoc"
|
19
19
|
]
|
20
20
|
s.files = [
|
21
|
-
".
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
21
|
+
".kick",
|
22
|
+
".travis.yml",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
25
|
+
"LICENSE",
|
26
|
+
"README.rdoc",
|
27
|
+
"Rakefile",
|
28
|
+
"TODO.rdoc",
|
29
|
+
"VERSION",
|
30
|
+
"bin/kicker",
|
31
|
+
"html/images/kikker.jpg",
|
32
|
+
"kicker.gemspec",
|
33
|
+
"lib/kicker.rb",
|
34
|
+
"lib/kicker/callback_chain.rb",
|
35
|
+
"lib/kicker/core_ext.rb",
|
36
|
+
"lib/kicker/fsevents.rb",
|
37
|
+
"lib/kicker/growl.rb",
|
38
|
+
"lib/kicker/log_status_helper.rb",
|
39
|
+
"lib/kicker/options.rb",
|
40
|
+
"lib/kicker/recipes.rb",
|
41
|
+
"lib/kicker/recipes/could_not_handle_file.rb",
|
42
|
+
"lib/kicker/recipes/dot_kick.rb",
|
43
|
+
"lib/kicker/recipes/execute_cli_command.rb",
|
44
|
+
"lib/kicker/recipes/ignore.rb",
|
45
|
+
"lib/kicker/recipes/jstest.rb",
|
46
|
+
"lib/kicker/recipes/rails.rb",
|
47
|
+
"lib/kicker/recipes/ruby.rb",
|
48
|
+
"lib/kicker/utils.rb",
|
49
|
+
"test/callback_chain_test.rb",
|
50
|
+
"test/core_ext_test.rb",
|
51
|
+
"test/filesystem_change_test.rb",
|
52
|
+
"test/fixtures/a_file_thats_reloaded.rb",
|
53
|
+
"test/fsevents_test.rb",
|
54
|
+
"test/growl_test.rb",
|
55
|
+
"test/initialization_test.rb",
|
56
|
+
"test/log_status_helper_test.rb",
|
57
|
+
"test/options_test.rb",
|
58
|
+
"test/recipes/could_not_handle_file_test.rb",
|
59
|
+
"test/recipes/dot_kick_test.rb",
|
60
|
+
"test/recipes/execute_cli_command_test.rb",
|
61
|
+
"test/recipes/ignore_test.rb",
|
62
|
+
"test/recipes/jstest_test.rb",
|
63
|
+
"test/recipes/rails_test.rb",
|
64
|
+
"test/recipes/ruby_test.rb",
|
65
|
+
"test/recipes_test.rb",
|
66
|
+
"test/test_helper.rb",
|
67
|
+
"test/utils_test.rb",
|
68
|
+
"vendor/growlnotifier/growl.rb",
|
69
|
+
"vendor/growlnotifier/growl_helpers.rb"
|
68
70
|
]
|
69
71
|
s.homepage = %q{http://github.com/alloy/kicker}
|
70
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
71
72
|
s.require_paths = ["lib", "vendor"]
|
72
|
-
s.rubygems_version = %q{1.
|
73
|
+
s.rubygems_version = %q{1.6.2}
|
73
74
|
s.summary = %q{A lean, agnostic, flexible file-change watcher, using OS X FSEvents.}
|
74
|
-
s.test_files = [
|
75
|
-
"test/callback_chain_test.rb",
|
76
|
-
"test/core_ext_test.rb",
|
77
|
-
"test/filesystem_change_test.rb",
|
78
|
-
"test/fixtures/a_file_thats_reloaded.rb",
|
79
|
-
"test/fsevents_test.rb",
|
80
|
-
"test/growl_test.rb",
|
81
|
-
"test/initialization_test.rb",
|
82
|
-
"test/log_status_helper_test.rb",
|
83
|
-
"test/options_test.rb",
|
84
|
-
"test/recipes/could_not_handle_file_test.rb",
|
85
|
-
"test/recipes/dot_kick_test.rb",
|
86
|
-
"test/recipes/execute_cli_command_test.rb",
|
87
|
-
"test/recipes/ignore_test.rb",
|
88
|
-
"test/recipes/jstest_test.rb",
|
89
|
-
"test/recipes/rails_test.rb",
|
90
|
-
"test/recipes/ruby_test.rb",
|
91
|
-
"test/recipes_test.rb",
|
92
|
-
"test/test_helper.rb",
|
93
|
-
"test/utils_test.rb"
|
94
|
-
]
|
95
75
|
|
96
76
|
if s.respond_to? :specification_version then
|
97
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
98
77
|
s.specification_version = 3
|
99
78
|
|
100
79
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
80
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
81
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
82
|
+
s.add_development_dependency(%q<test-spec>, [">= 0"])
|
83
|
+
s.add_development_dependency(%q<activesupport>, [">= 0"])
|
84
|
+
s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
|
85
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
101
86
|
s.add_runtime_dependency(%q<rb-fsevent>, [">= 0"])
|
102
87
|
else
|
88
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
89
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
90
|
+
s.add_dependency(%q<test-spec>, [">= 0"])
|
91
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
92
|
+
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
93
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
103
94
|
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
104
95
|
end
|
105
96
|
else
|
97
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
98
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
99
|
+
s.add_dependency(%q<test-spec>, [">= 0"])
|
100
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
101
|
+
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
102
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
106
103
|
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
107
104
|
end
|
108
105
|
end
|
data/lib/kicker.rb
CHANGED
@@ -7,6 +7,7 @@ require 'kicker/growl'
|
|
7
7
|
require 'kicker/log_status_helper'
|
8
8
|
require 'kicker/options'
|
9
9
|
require 'kicker/utils'
|
10
|
+
require 'kicker/recipes'
|
10
11
|
|
11
12
|
class Kicker #:nodoc:
|
12
13
|
def self.run(argv = ARGV)
|
@@ -115,8 +116,4 @@ class Kicker #:nodoc:
|
|
115
116
|
end
|
116
117
|
end
|
117
118
|
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# Load this as last, because it actually loads all recipes, so everything has
|
121
|
-
# to be defined before that.
|
122
|
-
require 'kicker/recipes'
|
119
|
+
end
|
data/lib/kicker/recipes.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
RECIPES_DIR = File.expand_path('../recipes', __FILE__)
|
2
2
|
USER_RECIPES_DIR = File.expand_path('~/.kick')
|
3
3
|
|
4
|
-
$:.unshift(RECIPES_DIR)
|
5
|
-
$:.unshift(USER_RECIPES_DIR) if File.exist?(USER_RECIPES_DIR)
|
6
|
-
|
7
4
|
module Kernel
|
8
5
|
# If only given a <tt>name</tt>, the specified recipe will be loaded. For
|
9
6
|
# instance, the following, in a <tt>.kick</tt> file, will load the Rails
|
@@ -29,30 +26,69 @@ end
|
|
29
26
|
class Kicker
|
30
27
|
module Recipes #:nodoc:
|
31
28
|
class << self
|
29
|
+
def reset!
|
30
|
+
@recipes = nil
|
31
|
+
end
|
32
|
+
|
32
33
|
def recipes
|
33
34
|
@recipes ||= {}
|
34
35
|
end
|
35
36
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
raise LoadError, "Recipe `#{name}' does not exist."
|
45
|
-
end
|
37
|
+
def recipe_filename(name)
|
38
|
+
[
|
39
|
+
USER_RECIPES_DIR,
|
40
|
+
RECIPES_DIR
|
41
|
+
].each do |directory|
|
42
|
+
filename = File.join(directory, "#{name}.rb")
|
43
|
+
return filename if File.exist?(filename)
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
47
|
+
def recipe_names
|
48
|
+
recipe_files.map { |filename| File.basename(filename, '.rb').to_sym }
|
49
|
+
end
|
50
|
+
|
49
51
|
def recipe_files
|
50
52
|
Dir.glob(File.join(RECIPES_DIR, '*.rb')) + Dir.glob(File.join(USER_RECIPES_DIR, '*.rb'))
|
51
53
|
end
|
54
|
+
|
55
|
+
def define_recipe(name, &block)
|
56
|
+
recipes[name] = block
|
57
|
+
end
|
58
|
+
|
59
|
+
def load_recipe(name)
|
60
|
+
if recipe_names.include?(name)
|
61
|
+
load recipe_filename(name)
|
62
|
+
else
|
63
|
+
raise LoadError, "Can't load recipe `#{name}', it doesn't exist on disk. Loadable recipes are: #{recipe_names[0..-2].join(', ')}, and #{recipe_names[-1]}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def activate_recipe(name)
|
68
|
+
unless recipes.has_key?(name)
|
69
|
+
load_recipe(name)
|
70
|
+
end
|
71
|
+
if recipe = recipes[name]
|
72
|
+
recipe.call
|
73
|
+
else
|
74
|
+
raise ArgumentError, "Can't activate the recipe `#{name}' because it hasn't been defined yet."
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# See Kernel#recipe for more information about the usage.
|
79
|
+
def recipe(name, &block)
|
80
|
+
name = name.to_sym
|
81
|
+
if block_given?
|
82
|
+
define_recipe(name, &block)
|
83
|
+
else
|
84
|
+
activate_recipe(name)
|
85
|
+
end
|
86
|
+
end
|
52
87
|
end
|
53
88
|
|
54
|
-
#
|
55
|
-
|
56
|
-
|
89
|
+
# Always load all the base recipes
|
90
|
+
load_recipe :execute_cli_command
|
91
|
+
load_recipe :could_not_handle_file
|
92
|
+
load_recipe :dot_kick
|
57
93
|
end
|
58
94
|
end
|
data/lib/kicker/recipes/rails.rb
CHANGED
@@ -1,22 +1,10 @@
|
|
1
|
-
|
2
|
-
# if these aren't defined. Need to fix that in AS...
|
3
|
-
require 'active_support/core_ext/module'
|
4
|
-
module ActiveSupport #:nodoc:
|
5
|
-
module CoreExtensions #:nodoc:
|
6
|
-
module String #:nodoc:
|
7
|
-
module Inflections #:nodoc:
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
require 'ruby'
|
1
|
+
recipe :ruby
|
14
2
|
|
15
|
-
class Rails < Ruby
|
3
|
+
class Kicker::Recipes::Rails < Kicker::Recipes::Ruby
|
16
4
|
class << self
|
17
5
|
# Call these options on the Ruby class which takes the cli options.
|
18
6
|
%w{ test_type runner_bin test_cases_root test_options }.each do |delegate|
|
19
|
-
define_method(delegate) { Ruby.send(delegate) }
|
7
|
+
define_method(delegate) { Kicker::Recipes::Ruby.send(delegate) }
|
20
8
|
end
|
21
9
|
|
22
10
|
# Maps +type+, for instance `models', to a test directory.
|
@@ -60,15 +48,15 @@ class Rails < Ruby
|
|
60
48
|
def tests_for_model(model)
|
61
49
|
if test_type == 'test'
|
62
50
|
%W{
|
63
|
-
unit/#{
|
64
|
-
unit/helpers/#{
|
65
|
-
functional/#{
|
51
|
+
unit/#{ActiveSupport::Inflector.singularize(model)}
|
52
|
+
unit/helpers/#{ActiveSupport::Inflector.pluralize(model)}_helper
|
53
|
+
functional/#{ActiveSupport::Inflector.pluralize(model)}_controller
|
66
54
|
}
|
67
55
|
else
|
68
56
|
%W{
|
69
|
-
models/#{
|
70
|
-
helpers/#{
|
71
|
-
controllers/#{
|
57
|
+
models/#{ActiveSupport::Inflector.singularize(model)}
|
58
|
+
helpers/#{ActiveSupport::Inflector.pluralize(model)}_helper
|
59
|
+
controllers/#{ActiveSupport::Inflector.pluralize(model)}_controller
|
72
60
|
}
|
73
61
|
end.map { |f| test_file f }
|
74
62
|
end
|
@@ -78,7 +66,7 @@ class Rails < Ruby
|
|
78
66
|
case file
|
79
67
|
# Run all functional tests when routes.rb is saved
|
80
68
|
when 'config/routes.rb'
|
81
|
-
Rails.all_controller_tests
|
69
|
+
Kicker::Recipes::Rails.all_controller_tests
|
82
70
|
|
83
71
|
# Match lib/*
|
84
72
|
when /^(lib\/.+)\.rb$/
|
@@ -92,7 +80,7 @@ class Rails < Ruby
|
|
92
80
|
when %r{^app/(\w+)([\w/]*)/([\w\.]+)\.\w+$}
|
93
81
|
type, namespace, file = $1, $2, $3
|
94
82
|
|
95
|
-
if dir = Rails.type_to_test_dir(type)
|
83
|
+
if dir = Kicker::Recipes::Rails.type_to_test_dir(type)
|
96
84
|
if type == "views"
|
97
85
|
namespace = namespace.split('/')[1..-1]
|
98
86
|
file = "#{namespace.pop}_controller"
|
@@ -110,9 +98,9 @@ end
|
|
110
98
|
|
111
99
|
recipe :rails do
|
112
100
|
require 'rubygems' rescue LoadError
|
113
|
-
require 'active_support/
|
101
|
+
require 'active_support/inflector'
|
114
102
|
|
115
|
-
process Rails
|
103
|
+
process Kicker::Recipes::Rails
|
116
104
|
|
117
105
|
# When changing the schema, prepare the test database.
|
118
106
|
process do |files|
|
data/lib/kicker/recipes/ruby.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class Ruby
|
1
|
+
class Kicker::Recipes::Ruby
|
2
2
|
class << self
|
3
3
|
# Assigns the type of tests to run. Eg: `test' or `spec'.
|
4
4
|
attr_writer :test_type
|
@@ -42,6 +42,24 @@ class Ruby
|
|
42
42
|
@test_options ||= []
|
43
43
|
end
|
44
44
|
|
45
|
+
def reset!
|
46
|
+
@test_type = nil
|
47
|
+
@runner_bin = nil
|
48
|
+
@test_cases_root = nil
|
49
|
+
@test_options = nil
|
50
|
+
end
|
51
|
+
|
52
|
+
def runner_command(*parts)
|
53
|
+
parts.map do |part|
|
54
|
+
case part
|
55
|
+
when Array
|
56
|
+
part.empty? ? nil : part.join(' ')
|
57
|
+
else
|
58
|
+
part.to_s
|
59
|
+
end
|
60
|
+
end.compact.join(' ')
|
61
|
+
end
|
62
|
+
|
45
63
|
# Runs the given tests, if there are any, with the method defined by
|
46
64
|
# test_type. If test_type is `test' the run_with_test_runner method is
|
47
65
|
# used. The same applies when test_type is `spec'.
|
@@ -50,7 +68,7 @@ class Ruby
|
|
50
68
|
end
|
51
69
|
|
52
70
|
def test_runner_command(tests)
|
53
|
-
|
71
|
+
runner_command(runner_bin, test_options, '-r', tests.join(' -r '), "-e ''")
|
54
72
|
end
|
55
73
|
|
56
74
|
# Runs the given tests with `ruby' as unit-test tests.
|
@@ -67,7 +85,7 @@ class Ruby
|
|
67
85
|
end
|
68
86
|
|
69
87
|
def spec_runner_command(tests)
|
70
|
-
|
88
|
+
runner_command(runner_bin, test_options, tests)
|
71
89
|
end
|
72
90
|
|
73
91
|
# Runs the given tests with `spec' as RSpec tests.
|
@@ -147,9 +165,9 @@ class Ruby
|
|
147
165
|
end
|
148
166
|
|
149
167
|
options.on('-b', '--ruby [PATH]', "Use an alternate Ruby binary for spawned test runners. (Default is `ruby')") do |command|
|
150
|
-
Ruby.runner_bin = command
|
168
|
+
Kicker::Recipes::Ruby.runner_bin = command
|
151
169
|
end
|
152
170
|
|
153
171
|
recipe :ruby do
|
154
|
-
process Ruby
|
172
|
+
process Kicker::Recipes::Ruby
|
155
173
|
end
|
data/test/growl_test.rb
CHANGED
data/test/recipes/rails_test.rb
CHANGED
@@ -1,51 +1,65 @@
|
|
1
1
|
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
before = Kicker.process_chain.dup
|
4
2
|
recipe :rails
|
5
|
-
RAILS_FILES, RAILS_SCHEMA = (Kicker.process_chain - before).first(2)
|
6
3
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
class Kicker::Recipes::Rails
|
5
|
+
class << self
|
6
|
+
attr_accessor :tests_ran
|
7
|
+
def run_tests(tests)
|
8
|
+
self.tests_ran ||= []
|
9
|
+
self.tests_ran << tests
|
10
|
+
end
|
11
11
|
end
|
12
|
-
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "The Rails handler" do
|
13
15
|
it "should return all controller tests when test_type is `test'" do
|
14
|
-
|
15
|
-
|
16
|
+
tests = %w{ test.rb }
|
17
|
+
|
18
|
+
File.use_original_exist = false
|
19
|
+
File.existing_files = tests
|
20
|
+
|
21
|
+
Dir.expects(:glob).with("test/functional/**/*_test.rb").returns(tests)
|
22
|
+
Kicker::Recipes::Rails.all_controller_tests.should == tests
|
16
23
|
end
|
17
24
|
|
18
25
|
it "should return all controller tests when test_type is `spec'" do
|
19
|
-
|
20
|
-
Ruby.test_cases_root = nil
|
26
|
+
specs = %w{ spec.rb }
|
21
27
|
|
22
|
-
|
23
|
-
|
28
|
+
File.use_original_exist = false
|
29
|
+
File.existing_files = specs
|
30
|
+
|
31
|
+
Kicker::Recipes::Ruby.test_type = 'spec'
|
32
|
+
Kicker::Recipes::Ruby.test_cases_root = nil
|
33
|
+
|
34
|
+
Dir.expects(:glob).with("spec/controllers/**/*_spec.rb").returns(specs)
|
35
|
+
Kicker::Recipes::Rails.all_controller_tests.should == specs
|
24
36
|
end
|
25
37
|
end
|
26
38
|
|
27
|
-
describe "The
|
39
|
+
describe "The Rails schema handler" do
|
40
|
+
before do
|
41
|
+
# We assume the Rails schema handler is in the chain after the Rails handler
|
42
|
+
# because it's defined in the same recipe
|
43
|
+
@handler = Kicker.process_chain[Kicker.process_chain.index(Kicker::Recipes::Rails) + 1]
|
44
|
+
end
|
45
|
+
|
28
46
|
it "should prepare the test database if db/schema.rb is modified" do
|
29
47
|
Kicker::Utils.expects(:execute).with('rake db:test:prepare')
|
30
|
-
|
48
|
+
@handler.call(%w{ db/schema.rb })
|
31
49
|
end
|
32
50
|
|
33
51
|
it "should not prepare the test database if another file than db/schema.rb is modified" do
|
34
52
|
Kicker::Utils.expects(:execute).never
|
35
|
-
|
53
|
+
@handler.call(%w{ Rakefile })
|
36
54
|
end
|
37
55
|
end
|
38
56
|
|
39
57
|
module SharedRailsHandlerHelper
|
40
|
-
def should_match(files, tests)
|
58
|
+
def should_match(files, tests, existing_files=nil)
|
59
|
+
File.use_original_exist = false
|
60
|
+
File.existing_files = existing_files || tests
|
41
61
|
@files += files
|
42
|
-
|
43
|
-
tests.each do |test|
|
44
|
-
File.stubs(:exist?).with(test).returns(true)
|
45
|
-
end
|
46
|
-
|
47
|
-
Rails.expects(:run_tests).with(tests)
|
48
|
-
RAILS_FILES.call(@files)
|
62
|
+
Kicker::Recipes::Rails.call(@files)
|
49
63
|
@files.should == %w{ Rakefile }
|
50
64
|
end
|
51
65
|
end
|
@@ -54,11 +68,14 @@ describe "An instance of the Rails handler, with test type `test'" do
|
|
54
68
|
include SharedRailsHandlerHelper
|
55
69
|
|
56
70
|
before do
|
57
|
-
Ruby.
|
58
|
-
File.stubs(:exist?).with('spec').returns(false)
|
71
|
+
Kicker::Recipes::Ruby.reset!
|
59
72
|
@files = %w{ Rakefile }
|
60
73
|
end
|
61
74
|
|
75
|
+
after do
|
76
|
+
File.use_original_exist = true
|
77
|
+
end
|
78
|
+
|
62
79
|
it "should map model files to test/unit" do
|
63
80
|
should_match %w{ app/models/member.rb app/models/article.rb },
|
64
81
|
%w{ test/unit/member_test.rb test/unit/article_test.rb }
|
@@ -86,7 +103,7 @@ describe "An instance of the Rails handler, with test type `test'" do
|
|
86
103
|
|
87
104
|
it "should run all functional tests when config/routes.rb is saved" do
|
88
105
|
tests = %w{ test/functional/members_controller_test.rb test/functional/admin/articles_controller_test.rb }
|
89
|
-
Rails.expects(:all_controller_tests).returns(tests)
|
106
|
+
Kicker::Recipes::Rails.expects(:all_controller_tests).returns(tests)
|
90
107
|
should_match %w{ config/routes.rb }, tests
|
91
108
|
end
|
92
109
|
|
@@ -97,14 +114,14 @@ describe "An instance of the Rails handler, with test type `test'" do
|
|
97
114
|
|
98
115
|
it "should map fixtures to their unit, helper and functional tests if they exist" do
|
99
116
|
tests = %w{ test/unit/member_test.rb test/unit/helpers/members_helper_test.rb test/functional/members_controller_test.rb }
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
117
|
+
should_match %w{ test/fixtures/members.yml }, tests, []
|
118
|
+
Kicker::Recipes::Rails.tests_ran.last.should == []
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should map fixtures to their unit, helper and functional tests if they exist" do
|
122
|
+
tests = %w{ test/unit/member_test.rb test/unit/helpers/members_helper_test.rb test/functional/members_controller_test.rb }
|
123
|
+
should_match %w{ test/fixtures/members.yml }, tests
|
124
|
+
Kicker::Recipes::Rails.tests_ran.last.should == tests
|
108
125
|
end
|
109
126
|
end
|
110
127
|
|
@@ -112,11 +129,15 @@ describe "An instance of the Rails handler, with test type `spec'" do
|
|
112
129
|
include SharedRailsHandlerHelper
|
113
130
|
|
114
131
|
before do
|
115
|
-
Ruby.
|
116
|
-
|
132
|
+
Kicker::Recipes::Ruby.reset!
|
133
|
+
Kicker::Recipes::Ruby.test_type = 'spec'
|
117
134
|
@files = %w{ Rakefile }
|
118
135
|
end
|
119
136
|
|
137
|
+
after do
|
138
|
+
File.use_original_exist = true
|
139
|
+
end
|
140
|
+
|
120
141
|
it "should map model files to spec/models" do
|
121
142
|
should_match %w{ app/models/member.rb app/models/article.rb },
|
122
143
|
%w{ spec/models/member_spec.rb spec/models/article_spec.rb }
|
@@ -144,7 +165,7 @@ describe "An instance of the Rails handler, with test type `spec'" do
|
|
144
165
|
|
145
166
|
it "should run all controller tests when config/routes.rb is saved" do
|
146
167
|
specs = %w{ spec/controllers/members_controller_test.rb spec/controllers/admin/articles_controller_test.rb }
|
147
|
-
Rails.expects(:all_controller_tests).returns(specs)
|
168
|
+
Kicker::Recipes::Rails.expects(:all_controller_tests).returns(specs)
|
148
169
|
should_match %w{ config/routes.rb }, specs
|
149
170
|
end
|
150
171
|
|
@@ -159,15 +180,7 @@ describe "An instance of the Rails handler, with test type `spec'" do
|
|
159
180
|
end
|
160
181
|
|
161
182
|
it "should map fixtures to their model, helper and controller specs if they exist" do
|
162
|
-
Ruby.test_type = 'spec'
|
163
183
|
specs = %w{ spec/models/member_spec.rb spec/helpers/members_helper_spec.rb spec/controllers/members_controller_spec.rb }
|
164
|
-
|
165
|
-
|
166
|
-
expected_specs = []
|
167
|
-
specs.each do |spec|
|
168
|
-
expected_specs << spec
|
169
|
-
File.stubs(:exist?).with(spec).returns(true)
|
170
|
-
should_match %w{ spec/fixtures/members.yml }, expected_specs
|
171
|
-
end
|
184
|
+
should_match %w{ spec/fixtures/members.yml }, specs
|
172
185
|
end
|
173
186
|
end
|
data/test/recipes/ruby_test.rb
CHANGED
@@ -1,102 +1,105 @@
|
|
1
1
|
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
before = Kicker.process_chain.dup
|
4
2
|
recipe :ruby
|
5
|
-
RUBY_FILES = (Kicker.process_chain - before).first
|
6
3
|
|
7
|
-
class Ruby
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
class Kicker::Recipes::Ruby
|
5
|
+
class << self
|
6
|
+
attr_accessor :executed
|
7
|
+
attr_accessor :blocks
|
8
|
+
def execute(command, &block)
|
9
|
+
self.executed ||= []
|
10
|
+
self.blocks ||= []
|
11
|
+
|
12
|
+
self.executed << command
|
13
|
+
self.blocks << block
|
14
|
+
end
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
18
|
describe "The Ruby handler" do
|
18
19
|
before do
|
19
|
-
|
20
|
-
|
21
|
-
Ruby.test_options = []
|
20
|
+
@handler = Kicker::Recipes::Ruby
|
21
|
+
@handler.reset!
|
22
22
|
end
|
23
23
|
|
24
24
|
after do
|
25
|
-
|
26
|
-
Ruby.runner_bin = nil
|
27
|
-
Ruby.test_options = []
|
25
|
+
File.use_original_exist = true
|
28
26
|
end
|
29
27
|
|
30
|
-
it "should instantiate a
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
it "should instantiate a handler instance when called" do
|
29
|
+
tests = %w{ test/1_test.rb Rakefile test/namespace/2_test.rb }
|
30
|
+
instance = @handler.new(tests)
|
31
|
+
@handler.expects(:new).with(tests).returns(instance)
|
32
|
+
@handler.call(tests)
|
35
33
|
end
|
36
34
|
|
37
35
|
it "should discover whether to use `ruby' or `spec' as the test_type" do
|
38
|
-
File.
|
39
|
-
|
36
|
+
File.use_original_exist = false
|
37
|
+
|
38
|
+
File.existing_files = []
|
39
|
+
@handler.test_type.should == 'test'
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
@handler.reset!
|
42
|
+
|
43
|
+
File.existing_files = ['spec']
|
44
|
+
@handler.test_type.should == 'spec'
|
44
45
|
end
|
45
46
|
|
46
47
|
it "should run the given tests with a test-unit runner" do
|
47
|
-
|
48
|
-
|
48
|
+
@handler.run_tests(%w{ test/1_test.rb test/namespace/2_test.rb })
|
49
|
+
@handler.executed.last.should == "ruby -r test/1_test.rb -r test/namespace/2_test.rb -e ''"
|
49
50
|
end
|
50
51
|
|
51
52
|
it "should run the given tests with a spec runner" do
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
@handler.test_type = 'spec'
|
54
|
+
@handler.run_tests(%w{ test/1_test.rb test/namespace/2_test.rb })
|
55
|
+
@handler.executed.last.should == "spec test/1_test.rb test/namespace/2_test.rb"
|
55
56
|
end
|
56
57
|
|
57
58
|
it "should not try to run the tests if none were given" do
|
58
|
-
|
59
|
-
|
59
|
+
@handler.executed = []
|
60
|
+
@handler.run_tests([])
|
61
|
+
@handler.executed.should.be.empty
|
60
62
|
end
|
61
63
|
|
62
64
|
it "should be possible to override the bin path" do
|
63
|
-
|
64
|
-
|
65
|
-
|
65
|
+
@handler.runner_bin = '/some/other/runner'
|
66
|
+
@handler.run_tests(%w{ test/1_test.rb test/namespace/2_test.rb })
|
67
|
+
@handler.executed.last.should == "/some/other/runner -r test/1_test.rb -r test/namespace/2_test.rb -e ''"
|
66
68
|
end
|
67
69
|
|
68
70
|
it "should set the alternative ruby bin path" do
|
69
71
|
Kicker::Options.parse(%w{ -b /opt/ruby-1.9.2/bin/ruby })
|
70
|
-
|
72
|
+
@handler.runner_bin.should == '/opt/ruby-1.9.2/bin/ruby'
|
73
|
+
|
74
|
+
@handler.reset!
|
71
75
|
|
72
|
-
Ruby.runner_bin = nil
|
73
76
|
Kicker::Options.parse(%w{ --ruby /opt/ruby-1.9.2/bin/ruby })
|
74
|
-
|
77
|
+
@handler.runner_bin.should == '/opt/ruby-1.9.2/bin/ruby'
|
75
78
|
end
|
76
79
|
|
77
80
|
it "should be possible to add runner options when test_type is `test'" do
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
81
|
+
@handler.test_type = 'test'
|
82
|
+
@handler.test_options << '-I ./other'
|
83
|
+
@handler.run_tests(%w{ test/1_test.rb })
|
84
|
+
@handler.executed.last.should == "ruby -I ./other -r test/1_test.rb -e ''"
|
82
85
|
end
|
83
86
|
|
84
87
|
it "should be possible to add runner options when test_type is `spec'" do
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
88
|
+
@handler.test_type = 'spec'
|
89
|
+
@handler.test_options << '-I ./other'
|
90
|
+
@handler.run_tests(%w{ spec/1_spec.rb })
|
91
|
+
@handler.executed.last.should == "spec -I ./other spec/1_spec.rb"
|
89
92
|
end
|
90
93
|
|
91
94
|
it "should only show the last line of the output when growling when running test_type is `test'" do
|
92
|
-
|
93
|
-
result =
|
95
|
+
@handler.run_with_test_runner(%w{ test/1_test.rb test/namespace/2_test.rb })
|
96
|
+
result = @handler.blocks.last.call(mock('status', :output => "foo\nall pass", :after? => true, :growl? => true))
|
94
97
|
result.should == 'all pass'
|
95
98
|
end
|
96
99
|
|
97
100
|
it "should only show the last line of the output when growling when running test_type is `spec'" do
|
98
|
-
|
99
|
-
result =
|
101
|
+
@handler.run_with_spec_runner(%w{ spec/1_spec.rb spec/namespace/2_spec.rb })
|
102
|
+
result = @handler.blocks.last.call(mock('status', :output => "foo\nall pass", :after? => true, :growl? => true))
|
100
103
|
result.should == 'all pass'
|
101
104
|
end
|
102
105
|
end
|
@@ -104,36 +107,41 @@ end
|
|
104
107
|
%w{ test spec }.each do |type|
|
105
108
|
describe "An instance of the Ruby handler, with test type `#{type}'" do
|
106
109
|
before do
|
107
|
-
Ruby
|
108
|
-
|
109
|
-
|
110
|
-
|
110
|
+
@handler = Kicker::Recipes::Ruby
|
111
|
+
@handler.test_type = type
|
112
|
+
@handler.test_cases_root = type
|
113
|
+
|
114
|
+
File.use_original_exist = false
|
115
|
+
File.existing_files = %W(#{type}/1_#{type}.rb #{type}/namespace/2_#{type}.rb)
|
116
|
+
end
|
117
|
+
|
118
|
+
after do
|
119
|
+
File.use_original_exist = true
|
111
120
|
end
|
112
121
|
|
113
122
|
it "should match any test case files" do
|
114
|
-
files = %
|
115
|
-
handler =
|
123
|
+
files = %w(Rakefile) + File.existing_files
|
124
|
+
handler = @handler.new(files)
|
116
125
|
handler.handle!
|
117
126
|
|
118
|
-
handler.tests.should ==
|
127
|
+
handler.tests.should == File.existing_files
|
119
128
|
files.should == %W{ Rakefile }
|
120
129
|
end
|
121
130
|
|
122
131
|
it "should match files in ./lib" do
|
123
|
-
files = %
|
124
|
-
handler =
|
132
|
+
files = %w(Rakefile) + File.existing_files
|
133
|
+
handler = @handler.new(files)
|
125
134
|
handler.handle!
|
126
135
|
|
127
|
-
handler.tests.should ==
|
136
|
+
handler.tests.should == File.existing_files
|
128
137
|
files.should == %w{ Rakefile }
|
129
138
|
end
|
130
139
|
|
131
140
|
it "should match lib tests in the test root as well" do
|
132
|
-
File.
|
133
|
-
File.stubs(:exist?).with("#{type}/2_#{type}.rb").returns(true)
|
141
|
+
File.existing_files = %W(#{type}/1_#{type}.rb #{type}/2_#{type}.rb)
|
134
142
|
|
135
143
|
files = %W{ Rakefile lib/1.rb lib/namespace/2.rb }
|
136
|
-
handler =
|
144
|
+
handler = @handler.new(files)
|
137
145
|
handler.handle!
|
138
146
|
|
139
147
|
handler.tests.should == %W{ #{type}/1_#{type}.rb #{type}/2_#{type}.rb }
|
@@ -141,10 +149,10 @@ end
|
|
141
149
|
end
|
142
150
|
|
143
151
|
it "should check if a different test case root" do
|
144
|
-
|
152
|
+
@handler.test_cases_root = 'test/cases'
|
145
153
|
|
146
154
|
files = %W{ Rakefile test/cases/1_#{type}.rb test/cases/namespace/2_#{type}.rb }
|
147
|
-
handler =
|
155
|
+
handler = @handler.new(files)
|
148
156
|
handler.handle!
|
149
157
|
|
150
158
|
handler.tests.should == %W{ test/cases/1_#{type}.rb test/cases/namespace/2_#{type}.rb }
|
data/test/recipes_test.rb
CHANGED
@@ -4,7 +4,30 @@ module ReloadDotKick; end
|
|
4
4
|
|
5
5
|
describe "Kicker::Recipes" do
|
6
6
|
before do
|
7
|
-
|
7
|
+
Kicker::Recipes.reset!
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns a list of recipes" do
|
11
|
+
recipe_files = Kicker::Recipes.recipe_files
|
12
|
+
if File.exist?(File.expand_path('~/.kick'))
|
13
|
+
Set.new(recipe_files).should == Set.new(Dir.glob('../../lib/kicker/recipes/**/*.rb'))
|
14
|
+
else
|
15
|
+
Dir.glob('../../lib/kicker/recipes/**/*.rb').each do |filename|
|
16
|
+
recipe_files.should.include?(filename)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns a list of recipe names" do
|
22
|
+
expected = Set.new(%w(could_not_handle_file dot_kick execute_cli_command ignore jstest rails ruby).map { |n| n.to_sym })
|
23
|
+
actual = Kicker::Recipes.recipe_names
|
24
|
+
if File.exist?(File.expand_path('~/.kick'))
|
25
|
+
actual.should == expected
|
26
|
+
else
|
27
|
+
expected.each do |name|
|
28
|
+
actual.should.include?(name)
|
29
|
+
end
|
30
|
+
end
|
8
31
|
end
|
9
32
|
|
10
33
|
if File.exist?(File.expand_path('~/.kick'))
|
@@ -12,13 +35,18 @@ describe "Kicker::Recipes" do
|
|
12
35
|
$:.should.include File.expand_path('~/.kick')
|
13
36
|
end
|
14
37
|
else
|
15
|
-
puts "[!] ~/.kick does not exist,
|
38
|
+
puts "[!] ~/.kick does not exist, not testing the Kicker directory support."
|
16
39
|
end
|
17
40
|
|
18
41
|
it "should load a recipe" do
|
19
|
-
|
20
|
-
|
21
|
-
|
42
|
+
name = Kicker::Recipes.recipe_names.last
|
43
|
+
recipe name
|
44
|
+
end
|
45
|
+
|
46
|
+
it "does not break when a recipe is loaded twice" do
|
47
|
+
name = Kicker::Recipes.recipe_names.last
|
48
|
+
recipe name
|
49
|
+
recipe name
|
22
50
|
end
|
23
51
|
|
24
52
|
it "should define a recipe load callback" do
|
@@ -33,7 +61,7 @@ describe "Kicker::Recipes" do
|
|
33
61
|
begin
|
34
62
|
recipe :foobar
|
35
63
|
rescue LoadError => e
|
36
|
-
e.message.should
|
64
|
+
e.message.should.start_with "Can't load recipe `foobar', it doesn't exist on disk."
|
37
65
|
end
|
38
66
|
end
|
39
67
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,29 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'test/spec'
|
3
3
|
require 'mocha'
|
4
|
+
require 'set'
|
4
5
|
|
5
6
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
6
7
|
require 'kicker'
|
8
|
+
|
9
|
+
class File
|
10
|
+
class << self
|
11
|
+
attr_accessor :existing_files
|
12
|
+
attr_accessor :use_original_exist
|
13
|
+
|
14
|
+
alias exist_without_stubbing? exist?
|
15
|
+
def exist?(file)
|
16
|
+
if use_original_exist
|
17
|
+
exist_without_stubbing?(file)
|
18
|
+
else
|
19
|
+
if existing_files
|
20
|
+
existing_files.include?(file)
|
21
|
+
else
|
22
|
+
raise "Please stub the files you want to exist by setting File.existing_files"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
File.use_original_exist = true
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kicker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 2.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 2.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Eloy Duran
|
@@ -15,13 +15,82 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-02-03 00:00:00 +01:00
|
19
19
|
default_executable: kicker
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :runtime
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
name: rake
|
33
|
+
version_requirements: *id001
|
34
|
+
prerelease: false
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
type: :development
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
name: mocha
|
47
|
+
version_requirements: *id002
|
48
|
+
prerelease: false
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
type: :development
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
name: test-spec
|
61
|
+
version_requirements: *id003
|
62
|
+
prerelease: false
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
type: :development
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
name: activesupport
|
75
|
+
version_requirements: *id004
|
76
|
+
prerelease: false
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
type: :development
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
22
88
|
name: rb-fsevent
|
89
|
+
version_requirements: *id005
|
23
90
|
prerelease: false
|
24
|
-
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
type: :development
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
25
94
|
none: false
|
26
95
|
requirements:
|
27
96
|
- - ">="
|
@@ -30,8 +99,23 @@ dependencies:
|
|
30
99
|
segments:
|
31
100
|
- 0
|
32
101
|
version: "0"
|
102
|
+
name: jeweler
|
103
|
+
version_requirements: *id006
|
104
|
+
prerelease: false
|
105
|
+
- !ruby/object:Gem::Dependency
|
33
106
|
type: :runtime
|
34
|
-
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 3
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
name: rb-fsevent
|
117
|
+
version_requirements: *id007
|
118
|
+
prerelease: false
|
35
119
|
description:
|
36
120
|
email: eloy.de.enige@gmail.com
|
37
121
|
executables:
|
@@ -42,8 +126,10 @@ extra_rdoc_files:
|
|
42
126
|
- LICENSE
|
43
127
|
- README.rdoc
|
44
128
|
files:
|
45
|
-
- .gitignore
|
46
129
|
- .kick
|
130
|
+
- .travis.yml
|
131
|
+
- Gemfile
|
132
|
+
- Gemfile.lock
|
47
133
|
- LICENSE
|
48
134
|
- README.rdoc
|
49
135
|
- Rakefile
|
@@ -94,8 +180,8 @@ homepage: http://github.com/alloy/kicker
|
|
94
180
|
licenses: []
|
95
181
|
|
96
182
|
post_install_message:
|
97
|
-
rdoc_options:
|
98
|
-
|
183
|
+
rdoc_options: []
|
184
|
+
|
99
185
|
require_paths:
|
100
186
|
- lib
|
101
187
|
- vendor
|
@@ -120,27 +206,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
206
|
requirements: []
|
121
207
|
|
122
208
|
rubyforge_project:
|
123
|
-
rubygems_version: 1.
|
209
|
+
rubygems_version: 1.6.2
|
124
210
|
signing_key:
|
125
211
|
specification_version: 3
|
126
212
|
summary: A lean, agnostic, flexible file-change watcher, using OS X FSEvents.
|
127
|
-
test_files:
|
128
|
-
|
129
|
-
- test/core_ext_test.rb
|
130
|
-
- test/filesystem_change_test.rb
|
131
|
-
- test/fixtures/a_file_thats_reloaded.rb
|
132
|
-
- test/fsevents_test.rb
|
133
|
-
- test/growl_test.rb
|
134
|
-
- test/initialization_test.rb
|
135
|
-
- test/log_status_helper_test.rb
|
136
|
-
- test/options_test.rb
|
137
|
-
- test/recipes/could_not_handle_file_test.rb
|
138
|
-
- test/recipes/dot_kick_test.rb
|
139
|
-
- test/recipes/execute_cli_command_test.rb
|
140
|
-
- test/recipes/ignore_test.rb
|
141
|
-
- test/recipes/jstest_test.rb
|
142
|
-
- test/recipes/rails_test.rb
|
143
|
-
- test/recipes/ruby_test.rb
|
144
|
-
- test/recipes_test.rb
|
145
|
-
- test/test_helper.rb
|
146
|
-
- test/utils_test.rb
|
213
|
+
test_files: []
|
214
|
+
|