tdd 0.1.2 → 1.0.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.
Files changed (6) hide show
  1. data/README.md +53 -17
  2. data/bin/tdd +48 -47
  3. data/lib/tdd.rb +5 -2
  4. data/lib/tdd/version.rb +1 -1
  5. metadata +2 -3
  6. data/lib/rego.rb +0 -55
data/README.md CHANGED
@@ -1,29 +1,65 @@
1
- # Tdd
1
+ tdd
2
+ ===
2
3
 
3
- TODO: Write a gem description
4
+ Watch files and run test/unit or rspec tests when those files change.
4
5
 
5
- ## Installation
6
+ Is it awesome?
7
+ --------------
8
+ Yes.
6
9
 
7
- Add this line to your application's Gemfile:
8
10
 
9
- gem 'tdd'
11
+ Examples
12
+ --------
10
13
 
11
- And then execute:
14
+ Using with test/unit:
12
15
 
13
- $ bundle
16
+ $ tdd test/unit/some_unit_test.rb
14
17
 
15
- Or install it yourself as:
18
+ Using with rspec:
16
19
 
17
- $ gem install tdd
20
+ $ tdd spec/some_spec.rb
18
21
 
19
- ## Usage
22
+ You can pass arguments you would normally pass to `ruby -Itest` or `rspec`
23
+
24
+ $ tdd test/unit/some_unit_test.rb -n /some_test_name/
25
+ $ tdd spec/some_spec.rb:42 --fail-fast
20
26
 
21
- TODO: Write usage instructions here
27
+ By default, tdd will watch files in app, lib, config, test, and spec
28
+ directories, if they exist, and run your test command if any file being
29
+ watched changes.
22
30
 
23
- ## Contributing
31
+ You can specify which files to watch (note the double dashes `--`
32
+ separating the files to watch from the test file and options):
33
+
34
+ $ tdd lib/some_unit.rb config/setup.rb -- test/unit/some_unit.rb -n/some_test_name/
35
+
36
+ You can tell it to find a similarly named file to your test to watch
37
+ with glob mode:
38
+
39
+ $ tdd glob -- test/unit/some_unit_test.rb
40
+
41
+ This will look for `some_unit.rb` in your project and watch it for changes,
42
+ along with the test file.
43
+
44
+ In a Rails project you can ask tdd to watch view and controller files
45
+ related to a functional or controller test:
46
+
47
+ $ tdd controller -- test/functional/users_controller_test.rb
48
+
49
+ will watch all view files in app/views/users, the users_controller and the
50
+ test file for changes.
51
+
52
+ Isn't this what Guard does?
53
+ ---------------------------
54
+ Yeah, but its more flexible. I found myself wanting to use rspec's
55
+ feature of running a single test, or group of tests, over and over while
56
+ I tdd'd a class. With Guard, I would have to change the Guardfile to
57
+ use different command line options for rspec. Maybe there's a way to
58
+ solve this now, but in general Guard is just too much overhead for me.
59
+
60
+ This library heavily borrows from rego by Ara Howard. Its a really
61
+ useful tool and I used it to watch project files and run tests when they
62
+ changed. But bouncing between projects that use test/unit and
63
+ rspec several times a day there was still overhead in typing out the
64
+ list of files to watch and the full test command for rego to work.
24
65
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Added some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
data/bin/tdd CHANGED
@@ -1,47 +1,61 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
+ require 'tdd'
4
+
5
+ # The majority of this file has been adapted from Ara Howard's rego gem.
6
+ # You can find the source here: http://github.com/ahoward/rego.
7
+
3
8
  Main {
4
9
 
5
10
  name <<-__
6
11
 
7
- tdd
12
+ tdd
8
13
 
9
14
  __
10
15
 
11
16
  description <<-__
12
17
 
13
- watch files and run test/unit or rspec tests when they change
18
+ tdd watches files and runs test/unit or rspec tests when they change.
14
19
  __
15
20
 
16
21
  examples <<-__
22
+ Using with test/unit:
23
+
24
+ $ tdd test/unit/some_unit_test.rb
25
+
26
+ Using with rspec:
27
+
28
+ $ tdd spec/some_spec.rb
29
+
30
+ You can pass arguments you would normally pass to `ruby -Itest` or `rspec`
31
+
32
+ $ tdd test/unit/some_unit_test.rb -n /some_test_name/
33
+ $ tdd spec/some_spec.rb:42 --fail-fast
34
+
35
+ By default, tdd will watch files in app, lib, config, test, and spec
36
+ directories, if they exist, and run your test command if any file being
37
+ watched changes.
38
+
39
+ You can specify which files to watch (note the double dashes `--`
40
+ separating the files to watch from the test file and options):
41
+
42
+ $ tdd lib/some_unit.rb config/setup.rb -- test/unit/some_unit.rb -n/some_test_name/
17
43
 
18
- # Using with test/unit:
19
- $ tdd test/unit/some_unit_test.rb
20
-
21
- # Using with rspec:
22
- $ tdd spec/some_spec.rb
23
-
24
- # You can pass arguments you would normally pass to `ruby -Itest` or `rspec`
25
- $ tdd test/unit/some_unit_test.rb -n /some_test_name/
26
- $ tdd spec/some_spec.rb:42 --fail-fast
27
-
28
- # tdd will by default watch files in app, lib, config, test, and spec
29
- # directories, if they exist, and run your test command if any file its
30
- # watching changes.
31
-
32
- # You can specify which files to watch:
33
- $ tdd lib/some_unit.rb config/setup.rb -- test/unit/some_unit.rb -n/some_test_name/
34
-
35
- # You can tell it to find a similarly named file to your test to watch:
36
- $ tdd glob -- test/unit/some_unit_test.rb
37
- # will look for some_unit.rb in your project and watch it for changes, along
38
- # with the test file.
39
-
40
- # In a Rails project you can ask tdd to watch view and controller files
41
- # related to a functional or controller test:
42
- $ tdd controller -- test/functional/users_controller_test.rb
43
- # will watch all view files in app/views/users, the users_controller and the
44
- # test file for changes.
44
+ You can tell it to find a similarly named file to your test to watch
45
+ with glob mode:
46
+
47
+ $ tdd glob -- test/unit/some_unit_test.rb
48
+
49
+ This will look for `some_unit.rb` in your project and watch it for changes,
50
+ along with the test file.
51
+
52
+ In a Rails project you can ask tdd to watch view and controller files
53
+ related to a functional or controller test:
54
+
55
+ $ tdd controller -- test/functional/users_controller_test.rb
56
+
57
+ will watch all view files in app/views/users, the users_controller and the
58
+ test file for changes.
45
59
  __
46
60
 
47
61
  def run
@@ -140,20 +154,20 @@ Main {
140
154
  line = '#' * 42
141
155
  $running = false
142
156
 
143
- rego = proc do |*args|
157
+ tdd = proc do |*args|
144
158
  entry = args.shift
145
159
  cmd = entry ? @command.gsub(/@/, entry) : @command
146
160
  puts line
147
- say("# rego.#{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ cmd }", :color => :magenta)
161
+ say("# starting test run #{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ cmd }", :color => :magenta)
148
162
  puts
149
163
  system(cmd)
150
164
  puts
151
- say("# rego.#{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ $?.exitstatus }", :color => :yellow)
165
+ say("# finished test run #{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ $?.exitstatus }", :color => :yellow)
152
166
  puts
153
167
  n.succ!
154
168
  end
155
169
 
156
- rego[ false ]
170
+ tdd[ false ]
157
171
 
158
172
  fsevent.watch(directories) do |*args|
159
173
  unless $running
@@ -177,7 +191,7 @@ Main {
177
191
 
178
192
  unless before.mtime == after.mtime
179
193
  stats[entry] = after
180
- rego[ entry ]
194
+ tdd[ entry ]
181
195
  end
182
196
  end
183
197
  end
@@ -245,18 +259,5 @@ BEGIN {
245
259
  send(method, parts.join)
246
260
  end
247
261
  end
248
-
249
- require 'pathname'
250
- this = Pathname.new(__FILE__).realpath.to_s
251
- bindir = File.dirname(this)
252
- rootdir = File.dirname(bindir)
253
- libdir = File.join(rootdir, 'lib')
254
- rego = File.join(libdir, 'rego.rb')
255
-
256
- require(rego)
257
-
258
- STDOUT.sync = true
259
- STDERR.sync = true
260
- STDIN.sync = true
261
262
  }
262
263
 
data/lib/tdd.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require "tdd/version"
2
-
2
+ require 'main'
3
+ require 'rb-fsevent'
4
+ require 'time'
5
+ require 'pathname'
6
+ require 'yaml'
3
7
  module Tdd
4
- # Your code goes here...
5
8
  end
@@ -1,3 +1,3 @@
1
1
  module Tdd
2
- VERSION = "0.1.2"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-07 00:00:00.000000000 Z
12
+ date: 2013-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: main
@@ -57,7 +57,6 @@ files:
57
57
  - README.md
58
58
  - Rakefile
59
59
  - bin/tdd
60
- - lib/rego.rb
61
60
  - lib/tdd.rb
62
61
  - lib/tdd/version.rb
63
62
  - tdd.gemspec
@@ -1,55 +0,0 @@
1
- require 'time'
2
- require 'pathname'
3
- require 'yaml'
4
-
5
- module Rego
6
- Version = '1.0.42' unless defined?(Version)
7
-
8
- def version
9
- Rego::Version
10
- end
11
-
12
- def dependencies
13
- {
14
- 'main' => [ 'main' , ' >= 4.8.1' ] ,
15
- 'rb-fsevent' => [ 'rb-fsevent' , ' >= 0.4.3.1' ]
16
- }
17
- end
18
-
19
- def libdir(*args, &block)
20
- @libdir ||= File.expand_path(__FILE__).sub(/\.rb$/,'')
21
- args.empty? ? @libdir : File.join(@libdir, *args)
22
- ensure
23
- if block
24
- begin
25
- $LOAD_PATH.unshift(@libdir)
26
- block.call()
27
- ensure
28
- $LOAD_PATH.shift()
29
- end
30
- end
31
- end
32
-
33
- def load(*libs)
34
- libs = libs.join(' ').scan(/[^\s+]+/)
35
- Rego.libdir{ libs.each{|lib| Kernel.load(lib) } }
36
- end
37
-
38
- extend(Rego)
39
- end
40
-
41
- # gems
42
- #
43
- begin
44
- require 'rubygems'
45
- rescue LoadError
46
- nil
47
- end
48
-
49
- if defined?(gem)
50
- Rego.dependencies.each do |lib, dependency|
51
- gem(*dependency)
52
- require(lib)
53
- end
54
- end
55
-