grosser-autotest 4.0.3 → 4.0.4

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/README.markdown CHANGED
@@ -11,21 +11,25 @@ Requirements
11
11
 
12
12
  Install
13
13
  =======
14
- It is recommended to uninstall ZenTest first, otherwise I do not know what happens...
14
+ Uninstall ZenTest first, or autotest will not be found:
15
15
  sudo gem uninstall ZenTest
16
- You can install it from github, but then many solutions that build on autotest will fail unless you use `require 'grosser-autotest'`:
16
+ Install:
17
17
  sudo gem install grosser-autotest -s http://gems.github.com
18
- It may be better to install it from source:
19
- git clone git://github.com/grosser/autotest.git
20
- cd autotest
18
+ To install an [AutoTest free ZenTest](http://github.com/grosser/zentest) version:
19
+ sudo gem install grosser-zentest -s http://gems.github.com
20
+ To install from source:
21
+ git clone git://github.com/grosser/autotest.git && cd autotest
21
22
  rake install
22
23
 
23
24
  Setup
24
25
  =====
25
26
  ###Options
26
- -f do not run all tests when starting
27
- -c do not rerun all tests after all failed tests pass
28
- TODO there are more...
27
+ -f, --fast-start Do not run full tests at start
28
+ -c, --no-full-after-failed Do not run full tests after failed test passed
29
+ -v, --verbose Be verbose. Prints files that autotest doesn't know how to map to tests
30
+ -q, --quiet Be quiet.
31
+ -h, --help Show this.
32
+
29
33
 
30
34
 
31
35
  TODO
@@ -35,6 +39,7 @@ TODO
35
39
  - cleanup bin/autotest Dir hacks / passing of globals
36
40
  - cleanup bin/unit_diff
37
41
  - add gnome notification library
42
+ - add some automatic notifications e.g. autotest -n -> use any notify library found
38
43
 
39
44
 
40
45
  License
data/Rakefile ADDED
@@ -0,0 +1,60 @@
1
+ require 'rubygems'
2
+ $LOAD_PATH << 'lib'
3
+
4
+ #rake test
5
+ require 'rake/testtask'
6
+ Rake::TestTask.new(:test) {|test| test.libs << "test"}
7
+ task :default => :test
8
+
9
+ desc "run autotest on itself"
10
+ task :autotest do
11
+ ruby "-Ilib -w ./bin/autotest"
12
+ end
13
+
14
+ #TODO exclude /usr/ folder
15
+ #TODO improve coverage ? only 20% atm...
16
+ desc "show rcov report"
17
+ task :rcov_info do
18
+ ruby "-Ilib -S rcov --text-report --save coverage.info test/test_*.rb"
19
+ end
20
+
21
+ desc "update example_dot_autotest.rb with all possible constants"
22
+ task :update do
23
+ system "p4 edit example_dot_autotest.rb"
24
+ File.open "example_dot_autotest.rb", "w" do |f|
25
+ f.puts "# -*- ruby -*-"
26
+ f.puts
27
+ Dir.chdir "lib" do
28
+ Dir["autotest/*.rb"].sort.each do |s|
29
+ next if s =~ /rails|discover/
30
+ f.puts "# require '#{s[0..-4]}'"
31
+ end
32
+ end
33
+
34
+ f.puts
35
+
36
+ Dir["lib/autotest/*.rb"].sort.each do |file|
37
+ file = File.read(file)
38
+ m = file[/module.*/].split(/ /).last rescue nil
39
+ next unless m
40
+
41
+ file.grep(/def[^(]+=/).each do |setter|
42
+ setter = setter.sub(/^ *def self\./, '').sub(/\s*=\s*/, ' = ')
43
+ f.puts "# #{m}.#{setter}"
44
+ end
45
+ end
46
+ end
47
+ system "p4 diff -du example_dot_autotest.rb"
48
+ end
49
+
50
+ begin
51
+ require 'jeweler'
52
+ Jeweler::Tasks.new do |gem|
53
+ gem.name = "autotest"
54
+ gem.summary = "Autotest, without ZenTest"
55
+ gem.homepage = "http://github.com/grosser/autotest"
56
+ gem.authors = ["Ryan Davis"]
57
+ end
58
+ rescue LoadError
59
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
60
+ end
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 4
3
3
  :minor: 0
4
- :patch: 3
4
+ :patch: 4
data/bin/autotest CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'rubygems'
2
3
  require 'optparse'
3
4
 
@@ -29,14 +30,9 @@ class Dir
29
30
  end
30
31
  end
31
32
 
32
- #TODO pass options instead of globals
33
- $v = options[:verbose]
34
- $f = options[:no_full_after_start]
35
- $c = options[:no_full_after_failed]
36
- $q = options[:quiet]
37
-
38
33
  #run the correct Autotest variant fitting to the local structure
39
34
  require 'autotest'
35
+ Autotest.options.merge!(options)
40
36
  target = Autotest
41
37
  style = Autotest.autodiscover
42
38
  unless style.empty? then
data/bin/unit_diff CHANGED
@@ -19,7 +19,7 @@ require 'unit_diff'
19
19
 
20
20
  #TODO fix this...
21
21
  if defined? $v then
22
- puts "#{File.basename $0} v. #{ZenTest::VERSION}"
22
+ puts "#{File.basename $0} v. 4.0.3"
23
23
  exit 0
24
24
  end
25
25
 
data/lib/autotest.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'find'
2
2
  require 'rbconfig'
3
3
 
4
- $v ||= false
5
4
  $TESTING = false unless defined? $TESTING
6
5
 
7
6
  ##
@@ -63,11 +62,13 @@ class Autotest
63
62
 
64
63
  ALL_HOOKS = [ :all_good, :died, :green, :initialize, :interrupt, :quit,
65
64
  :ran_command, :red, :reset, :run_command, :updated, :waiting ]
66
-
67
- RERUN_ALL_AFTER_FAILED_PASS = !$c
68
65
 
66
+ @@options = {}
67
+ def self.options;@@options;end
68
+ def options;@@options;end
69
69
 
70
- HOOKS = Hash.new { |h,k| h[k] = [] }
70
+
71
+ HOOKS = Hash.new { |h,k| h[k] = [] } #unfound keys are []
71
72
  unless defined? WINDOZE then
72
73
  WINDOZE = /win32/ =~ RUBY_PLATFORM
73
74
  SEP = WINDOZE ? '&' : ';'
@@ -107,31 +108,24 @@ class Autotest
107
108
  # "rails" if File.exist? 'config/environment.rb'
108
109
  # end
109
110
  #
110
-
111
111
  def self.autodiscover
112
- style = []
113
-
114
- paths = $:.dup
112
+ #find all potential load paths
113
+ paths = $LOAD_PATH.dup
115
114
  paths.push 'lib'
116
115
  paths.push(*Dir["vendor/plugins/*/lib"])
117
-
118
- begin
119
- require 'rubygems'
120
- paths.push(*Gem.latest_load_paths)
121
- rescue LoadError => e
122
- # do nothing
123
- end
124
-
125
- paths.each do |d|
126
- next unless File.directory? d
127
- f = File.join(d, 'autotest', 'discover.rb')
128
- if File.exist? f then
129
- $: << d unless $:.include? d
130
- load f
116
+ paths += rubygem_load_paths
117
+
118
+ #make paths available if they contain a discover.rb
119
+ paths.select{|p| File.directory?(p)}.each do |dir|
120
+ discover_rb = File.join(dir, 'autotest', 'discover.rb')
121
+ if File.exist? discover_rb then
122
+ $LOAD_PATH << dir unless $LOAD_PATH.include? dir
123
+ load discover_rb
131
124
  end
132
125
  end
133
126
 
134
- @@discoveries.map { |proc| proc.call }.flatten.compact.sort.uniq
127
+ #call all discover procs an determine style
128
+ @@discoveries.map{ |proc| proc.call }.flatten.compact.sort.uniq
135
129
  end
136
130
 
137
131
  ##
@@ -185,15 +179,19 @@ class Autotest
185
179
  self.find_directories = ['.']
186
180
  self.unit_diff = "unit_diff -u"
187
181
 
182
+ #add Test::Unit mappings
183
+ #file in /lib -> run test in /test
188
184
  self.add_mapping(/^lib\/.*\.rb$/) do |filename, _|
189
185
  possible = File.basename(filename).gsub '_', '_?'
190
186
  files_matching %r%^test/.*#{possible}$%
191
187
  end
192
188
 
189
+ #file in /test -> run it
193
190
  self.add_mapping(/^test.*\/test_.*rb$/) do |filename, _|
194
191
  filename
195
192
  end
196
193
 
194
+ #execute custom extensions
197
195
  [File.expand_path('~/.autotest'), './.autotest'].each do |f|
198
196
  load f if File.exist? f
199
197
  end
@@ -208,12 +206,12 @@ class Autotest
208
206
  reset
209
207
  add_sigint_handler
210
208
 
211
- self.last_mtime = Time.now if $f
209
+ self.last_mtime = Time.now if options[:no_full_after_start]
212
210
 
213
- loop do # ^c handler
214
- begin
211
+ loop do
212
+ begin # ^c handler
215
213
  get_to_green
216
- if self.tainted and RERUN_ALL_AFTER_FAILED_PASS then
214
+ if self.tainted and not options[:no_full_after_failed] then
217
215
  rerun_all_tests
218
216
  else
219
217
  hook :all_good
@@ -252,7 +250,7 @@ class Autotest
252
250
  cmd = self.make_test_cmd self.files_to_test
253
251
  return if cmd.empty?
254
252
 
255
- puts cmd unless $q
253
+ puts cmd unless options[:quiet]
256
254
 
257
255
  old_sync = $stdout.sync
258
256
  $stdout.sync = true
@@ -379,16 +377,16 @@ class Autotest
379
377
 
380
378
  ##
381
379
  # Find the files which have been modified, update the recorded
382
- # timestamps, and use this to update the files to test. Returns true
383
- # if any file is newer than the previously recorded most recent
384
- # file.
385
-
380
+ # timestamps, and use this to update the files to test. Returns
381
+ # the latest mtime of the files modified or nil when nothing was
382
+ # modified.
386
383
  def find_files_to_test(files=find_files)
387
384
  updated = files.select { |filename, mtime| self.last_mtime < mtime }
388
385
 
389
- p updated if $v unless updated.empty? || self.last_mtime.to_i == 0
390
-
391
- hook :updated, updated unless updated.empty? || self.last_mtime.to_i == 0
386
+ unless updated.empty? or self.last_mtime.to_i == 0 #nothing to update or initial run
387
+ p updated if options[:verbose]
388
+ hook :updated, updated
389
+ end
392
390
 
393
391
  updated.map { |f,m| test_files_for(f) }.flatten.uniq.each do |filename|
394
392
  self.files_to_test[filename] # creates key with default value
@@ -520,7 +518,7 @@ class Autotest
520
518
  result = result.nil? ? [] : Array(result.last.call(filename, $~))
521
519
 
522
520
  output.puts "No tests matched #{filename}" if
523
- ($v or $TESTING) and result.empty?
521
+ (options[:verbose] or $TESTING) and result.empty?
524
522
 
525
523
  result.sort.uniq.select { |f| known_files[f] }
526
524
  end
@@ -658,4 +656,16 @@ class Autotest
658
656
  def self.add_hook(name, &block)
659
657
  HOOKS[name] << block
660
658
  end
659
+
660
+ private
661
+
662
+ #list of all available rubygem load paths
663
+ def self.rubygem_load_paths
664
+ begin
665
+ require 'rubygems'
666
+ Gem.latest_load_paths
667
+ rescue LoadError
668
+ []
669
+ end
670
+ end
661
671
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grosser-autotest
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.3
4
+ version: 4.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-30 00:00:00 -07:00
12
+ date: 2009-05-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -20,49 +20,48 @@ executables:
20
20
  - unit_diff
21
21
  extensions: []
22
22
 
23
- extra_rdoc_files: []
24
-
23
+ extra_rdoc_files:
24
+ - README.markdown
25
25
  files:
26
- - VERSION.yml
27
26
  - History.txt
28
27
  - README.markdown
28
+ - Rakefile
29
+ - VERSION.yml
29
30
  - bin/autotest
30
31
  - bin/unit_diff
31
32
  - lib/autotest.rb
32
- - lib/autotest
33
- - lib/autotest/restart.rb
34
- - lib/autotest/snarl.rb
35
- - lib/autotest/jabber_notify.rb
36
- - lib/autotest/fixtures.rb
37
- - lib/autotest/menu.rb
38
- - lib/autotest/kdenotify.rb
39
- - lib/autotest/emacs.rb
33
+ - lib/autotest/autoupdate.rb
40
34
  - lib/autotest/camping.rb
41
- - lib/autotest/pretty.rb
35
+ - lib/autotest/cctray.rb
36
+ - lib/autotest/discover.rb
37
+ - lib/autotest/emacs.rb
42
38
  - lib/autotest/email_notify.rb
39
+ - lib/autotest/fixtures.rb
40
+ - lib/autotest/growl.rb
43
41
  - lib/autotest/heckle.rb
44
- - lib/autotest/discover.rb
45
- - lib/autotest/cctray.rb
46
- - lib/autotest/shame.rb
47
- - lib/autotest/rcov.rb
48
- - lib/autotest/once.rb
42
+ - lib/autotest/html_report.rb
43
+ - lib/autotest/jabber_notify.rb
44
+ - lib/autotest/kdenotify.rb
45
+ - lib/autotest/menu.rb
49
46
  - lib/autotest/migrate.rb
50
- - lib/autotest/autoupdate.rb
51
- - lib/autotest/rails.rb
52
- - lib/autotest/timestamp.rb
53
- - lib/autotest/growl.rb
54
47
  - lib/autotest/notify.rb
48
+ - lib/autotest/once.rb
49
+ - lib/autotest/pretty.rb
50
+ - lib/autotest/rails.rb
51
+ - lib/autotest/rcov.rb
55
52
  - lib/autotest/redgreen.rb
56
- - lib/autotest/html_report.rb
53
+ - lib/autotest/restart.rb
54
+ - lib/autotest/shame.rb
55
+ - lib/autotest/snarl.rb
56
+ - lib/autotest/timestamp.rb
57
57
  - lib/unit_diff.rb
58
- - test/test_unit_diff.rb
59
58
  - test/helper.rb
60
59
  - test/test_autotest.rb
60
+ - test/test_unit_diff.rb
61
61
  has_rdoc: true
62
62
  homepage: http://github.com/grosser/autotest
63
63
  post_install_message:
64
64
  rdoc_options:
65
- - --inline-source
66
65
  - --charset=UTF-8
67
66
  require_paths:
68
67
  - lib
@@ -85,5 +84,7 @@ rubygems_version: 1.2.0
85
84
  signing_key:
86
85
  specification_version: 2
87
86
  summary: Autotest, without ZenTest
88
- test_files: []
89
-
87
+ test_files:
88
+ - test/test_unit_diff.rb
89
+ - test/helper.rb
90
+ - test/test_autotest.rb