smparkes-watchr 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,124 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestScript < Test::Unit::TestCase
4
+ include Watchr
5
+
6
+ def setup
7
+ tmpfile = Tempfile.new('foo')
8
+ @script = Script.new( Pathname.new( tmpfile.path ) )
9
+ end
10
+
11
+ ## external api
12
+
13
+ test "watch" do
14
+ @script.watch('pattern')
15
+ @script.watch('pattern', :event_type)
16
+ @script.watch('pattern') { nil }
17
+ end
18
+
19
+ test "default action" do
20
+ @script.default_action { nil }
21
+ end
22
+
23
+ ## functionality
24
+
25
+ test "rule object" do
26
+ rule = @script.watch('pattern', :modified) { nil }
27
+ rule.pattern.should be('pattern')
28
+ rule.event_type.should be(:modified)
29
+ rule.action.call.should be(nil)
30
+ end
31
+
32
+ test "default event type" do
33
+ rule = @script.watch('pattern') { nil }
34
+ rule.event_type.should be(:modified)
35
+ end
36
+
37
+ test "finds action for path" do
38
+ @script.watch('abc') { :x }
39
+ @script.watch('def') { :y }
40
+ @script.call_action_for('abc').should be(:x)
41
+ end
42
+
43
+ test "finds action for path with event type" do
44
+ @script.watch('abc', :accessed) { :x }
45
+ @script.watch('abc', :modified) { :y }
46
+ @script.call_action_for('abc', :accessed).should be(:x)
47
+ end
48
+
49
+ test "finds action for path with any event type" do
50
+ @script.watch('abc', nil) { :x }
51
+ @script.watch('abc', :modified) { :y }
52
+ @script.call_action_for('abc', :accessed).should be(:x)
53
+ end
54
+
55
+ test "no action for path" do
56
+ @script.watch('abc', :accessed) { :x }
57
+ @script.call_action_for('abc', :modified).should be(nil)
58
+ end
59
+
60
+ test "collects patterns" do
61
+ @script.watch('abc')
62
+ @script.watch('def')
63
+ @script.patterns.should include('abc')
64
+ @script.patterns.should include('def')
65
+ end
66
+
67
+ test "parses script file" do
68
+ file = Pathname( Tempfile.open('bar').path )
69
+ file.open('w') {|f| f.write <<-STR }
70
+ watch( 'abc' ) { :x }
71
+ STR
72
+ script = Script.new(file)
73
+ script.parse!
74
+ script.call_action_for('abc').should be(:x)
75
+ end
76
+
77
+ test "resets state" do
78
+ @script.default_action { 'x' }
79
+ @script.watch('foo') { 'bar' }
80
+ @script.send(:reset)
81
+ @script.instance_variable_get(:@default_action).call.should be(nil)
82
+ @script.instance_variable_get(:@rules).should be([])
83
+ end
84
+
85
+ test "resets state on parse" do
86
+ @script.stubs(:instance_eval)
87
+ @script.expects(:reset)
88
+ @script.parse!
89
+ end
90
+
91
+ test "actions receive a MatchData object" do
92
+ @script.watch('de(.)') {|m| [m[0], m[1]] }
93
+ @script.call_action_for('def').should be(%w( def f ))
94
+ end
95
+
96
+ test "rule's default action" do
97
+ @script.watch('abc')
98
+ @script.call_action_for('abc').should be(nil)
99
+ @script.default_action { :x }
100
+
101
+ @script.watch('def')
102
+ @script.call_action_for('def').should be(:x)
103
+ end
104
+
105
+ test "file path" do
106
+ Script.any_instance.stubs(:parse!)
107
+ path = Pathname('some/file').expand_path
108
+ script = Script.new(path)
109
+ script.path.should be(path)
110
+ end
111
+
112
+ test "later rules take precedence" do
113
+ @script.watch('a/(.*)\.x') { :x }
114
+ @script.watch('a/b/(.*)\.x') { :y }
115
+
116
+ @script.call_action_for('a/b/c.x').should be(:y)
117
+ end
118
+
119
+ test "rule patterns match against paths relative to pwd" do
120
+ @script.watch('^abc') { :x }
121
+ path = Pathname(Dir.pwd) + 'abc'
122
+ @script.call_action_for(path).should be(:x)
123
+ end
124
+ end
@@ -0,0 +1,60 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestWatchr < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Watchr.options = nil
7
+ end
8
+
9
+ ## options
10
+
11
+ test "debug option" do
12
+ Watchr.options.debug.should be(false)
13
+ Watchr.options.debug = true
14
+ Watchr.options.debug.should be(true)
15
+ end
16
+
17
+ ## functionality
18
+
19
+ test "debug" do
20
+ capture_io { Watchr.debug('abc') }.stdout.should be('')
21
+ Watchr.options.debug = true
22
+ capture_io { Watchr.debug('abc') }.stdout.should be("[watchr debug] abc\n")
23
+ end
24
+
25
+ test "picking handler" do
26
+
27
+ Watchr.handler = nil
28
+ ENV['HANDLER'] = 'linux'
29
+ Watchr.handler.should be(HAVE_REV ? Watchr::EventHandler::Rev : Watchr::EventHandler::Portable)
30
+
31
+ Watchr.handler = nil
32
+ ENV['HANDLER'] = 'bsd'
33
+ Watchr.handler.should be(HAVE_REV ? Watchr::EventHandler::Rev : Watchr::EventHandler::Portable)
34
+
35
+ Watchr.handler = nil
36
+ ENV['HANDLER'] = 'darwin'
37
+ Watchr.handler.should be(HAVE_REV ? Watchr::EventHandler::Rev : Watchr::EventHandler::Portable)
38
+
39
+ Watchr.handler = nil
40
+ ENV['HANDLER'] = 'unix'
41
+ Watchr.handler.should be(HAVE_REV ? Watchr::EventHandler::Rev : Watchr::EventHandler::Portable)
42
+
43
+ Watchr.handler = nil
44
+ ENV['HANDLER'] = 'mswin'
45
+ Watchr.handler.should be(Watchr::EventHandler::Portable)
46
+
47
+ Watchr.handler = nil
48
+ ENV['HANDLER'] = 'cygwin'
49
+ Watchr.handler.should be(Watchr::EventHandler::Portable)
50
+
51
+ Watchr.handler = nil
52
+ ENV['HANDLER'] = 'portable'
53
+ Watchr.handler.should be(Watchr::EventHandler::Portable)
54
+
55
+ Watchr.handler = nil
56
+ ENV['HANDLER'] = 'other'
57
+ Watchr.handler.should be(Watchr::EventHandler::Portable)
58
+ end
59
+ end
60
+
@@ -0,0 +1,64 @@
1
+
2
+ Gem::Specification.new do |s|
3
+ s.name = 'smparkes-watchr'
4
+ s.version = '0.5.7'
5
+ s.summary = "Modern continious testing (flexible alternative to autotest)"
6
+ s.description = "Modern continious testing (flexible alternative to autotest)."
7
+ s.author = "mynyml"
8
+ s.email = 'mynyml@gmail.com'
9
+ s.homepage = 'http://mynyml.com/ruby/flexible-continuous-testing'
10
+ s.has_rdoc = true
11
+ s.rdoc_options = %w( --main README.rdoc )
12
+ s.extra_rdoc_files = %w( README.rdoc )
13
+ s.require_path = "lib"
14
+ s.bindir = "bin"
15
+ s.executables = "watchr"
16
+ s.files = %w[
17
+ .gitignore
18
+ History.txt
19
+ LICENSE
20
+ Manifest
21
+ README.rdoc
22
+ Rakefile
23
+ TODO.txt
24
+ bin/watchr
25
+ docs.watchr
26
+ gem.watchr
27
+ lib/watchr.rb
28
+ lib/watchr/controller.rb
29
+ lib/watchr/event_handlers/base.rb
30
+ lib/watchr/event_handlers/portable.rb
31
+ lib/watchr/event_handlers/unix.rb
32
+ lib/watchr/event_handlers/em.rb
33
+ lib/watchr/event_handlers/rev.rb
34
+ lib/watchr/script.rb
35
+ manifest.watchr
36
+ specs.watchr
37
+ test/README
38
+ test/event_handlers/test_base.rb
39
+ test/event_handlers/test_portable.rb
40
+ test/event_handlers/test_em.rb
41
+ test/event_handlers/test_rev.rb
42
+ test/test_controller.rb
43
+ test/test_helper.rb
44
+ test/test_script.rb
45
+ test/test_watchr.rb
46
+ watchr.gemspec
47
+ ]
48
+ s.test_files = %w[
49
+ test/test_helper.rb
50
+ test/test_watchr.rb
51
+ test/test_script.rb
52
+ test/test_controller.rb
53
+ test/event_handlers/test_base.rb
54
+ test/event_handlers/test_em.rb
55
+ test/event_handlers/test_rev.rb
56
+ test/event_handlers/test_portable.rb
57
+ ]
58
+
59
+ s.add_development_dependency 'mocha'
60
+ s.add_development_dependency 'jeremymcanally-matchy'
61
+ s.add_development_dependency 'jeremymcanally-pending'
62
+ s.add_development_dependency 'mynyml-every'
63
+ s.add_development_dependency 'mynyml-redgreen'
64
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smparkes-watchr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.7
5
+ platform: ruby
6
+ authors:
7
+ - mynyml
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-02 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mocha
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: jeremymcanally-matchy
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: jeremymcanally-pending
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: mynyml-every
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: mynyml-redgreen
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ description: Modern continious testing (flexible alternative to autotest).
66
+ email: mynyml@gmail.com
67
+ executables:
68
+ - watchr
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - README.rdoc
73
+ files:
74
+ - .gitignore
75
+ - History.txt
76
+ - LICENSE
77
+ - Manifest
78
+ - README.rdoc
79
+ - Rakefile
80
+ - TODO.txt
81
+ - bin/watchr
82
+ - docs.watchr
83
+ - gem.watchr
84
+ - lib/watchr.rb
85
+ - lib/watchr/controller.rb
86
+ - lib/watchr/event_handlers/base.rb
87
+ - lib/watchr/event_handlers/portable.rb
88
+ - lib/watchr/event_handlers/unix.rb
89
+ - lib/watchr/event_handlers/em.rb
90
+ - lib/watchr/event_handlers/rev.rb
91
+ - lib/watchr/script.rb
92
+ - manifest.watchr
93
+ - specs.watchr
94
+ - test/README
95
+ - test/event_handlers/test_base.rb
96
+ - test/event_handlers/test_portable.rb
97
+ - test/event_handlers/test_em.rb
98
+ - test/event_handlers/test_rev.rb
99
+ - test/test_controller.rb
100
+ - test/test_helper.rb
101
+ - test/test_script.rb
102
+ - test/test_watchr.rb
103
+ - watchr.gemspec
104
+ has_rdoc: true
105
+ homepage: http://mynyml.com/ruby/flexible-continuous-testing
106
+ licenses: []
107
+
108
+ post_install_message:
109
+ rdoc_options:
110
+ - --main
111
+ - README.rdoc
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: "0"
119
+ version:
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ version:
126
+ requirements: []
127
+
128
+ rubyforge_project:
129
+ rubygems_version: 1.3.5
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: Modern continious testing (flexible alternative to autotest)
133
+ test_files:
134
+ - test/test_helper.rb
135
+ - test/test_watchr.rb
136
+ - test/test_script.rb
137
+ - test/test_controller.rb
138
+ - test/event_handlers/test_base.rb
139
+ - test/event_handlers/test_em.rb
140
+ - test/event_handlers/test_rev.rb
141
+ - test/event_handlers/test_portable.rb