autotest 4.2.3 → 4.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -5,9 +5,11 @@ This is a fork of the ZenTest package to extract autotest from it.
5
5
  Improvements over ZenTest
6
6
  =========================
7
7
  - possibility to not run all tests after a failed test passes
8
+ - possibility to use alternative config file
8
9
  - simplified test setup
9
10
  - simplified packaging
10
11
  - less globals flying around
12
+ - integration tests
11
13
 
12
14
  Install
13
15
  =======
@@ -24,12 +26,14 @@ Usage
24
26
  - run autotest
25
27
 
26
28
  ### Options
27
- -f, --fast-start Do not run all tests at start
28
- -c, --no-full-after-failed Do not run all tests after failed test passes
29
+ -f, --fast-start Do not run full tests at start
30
+ -c, --no-full-after-failed Do not run full tests after failed test passed
29
31
  -v, --verbose Be verbose. Prints files that autotest doesn't know how to map to tests
30
32
  -q, --quiet Be quiet.
33
+ -r, --rc Path to config file. (Defaults to ~/.autotest or current_dir/.autotest)
31
34
  -h, --help Show this.
32
35
 
36
+
33
37
  Tips
34
38
  ====
35
39
  - you need diff.exe on windows. Try http://gnuwin32.sourceforge.net/packages.html
@@ -47,8 +51,9 @@ TODO
47
51
  License
48
52
  =======
49
53
 
50
- ###This is a stripped down version of ZenTest
51
- Stripper: [Michael Grosser](http://pragmatig.wordpress.com)
54
+ ### This is a stripped down version of ZenTest, stripping done by
55
+ - [Shane Liebling](http://github.com/shanel)
56
+ - [Michael Grosser](http://pragmatig.wordpress.com)
52
57
 
53
58
  ### ZenTest Authors
54
59
  - http://www.zenspider.com/ZSS/Products/ZenTest/
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.2.3
1
+ 4.2.4
data/autotest.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{autotest}
8
- s.version = "4.2.3"
8
+ s.version = "4.2.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Davis"]
12
- s.date = %q{2010-01-19}
12
+ s.date = %q{2010-01-31}
13
13
  s.executables = ["unit_diff", "autotest"]
14
14
  s.extra_rdoc_files = [
15
15
  "README.markdown"
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
35
35
  "lib/unit_diff.rb",
36
36
  "test/helper.rb",
37
37
  "test/test_autotest.rb",
38
+ "test/test_autotest_integration.rb",
38
39
  "test/test_unit_diff.rb"
39
40
  ]
40
41
  s.homepage = %q{http://github.com/grosser/autotest}
@@ -44,6 +45,7 @@ Gem::Specification.new do |s|
44
45
  s.summary = %q{Autotest, without ZenTest}
45
46
  s.test_files = [
46
47
  "test/test_autotest.rb",
48
+ "test/test_autotest_integration.rb",
47
49
  "test/helper.rb",
48
50
  "test/test_unit_diff.rb"
49
51
  ]
data/bin/autotest CHANGED
@@ -14,6 +14,9 @@ BANNER
14
14
  opts.on("-c", "--no-full-after-failed","Do not run full tests after failed test passed") { options[:no_full_after_failed] = true }
15
15
  opts.on("-v", "--verbose","Be verbose. Prints files that autotest doesn't know how to map to tests") { options[:verbose] = true }
16
16
  opts.on("-q", "--quiet","Be quiet.") { options[:quiet] = true }
17
+ opts.on("-r", "--rc", String, "Path to config file. (Defaults to ~/.autotest or current_dir/.autotest)") do |opt|
18
+ options[:rc] = opt
19
+ end
17
20
  opts.on("-h", "--help","Show this.") { puts opts;exit }
18
21
  end.parse!
19
22
 
data/bin/unit_diff CHANGED
@@ -13,7 +13,11 @@
13
13
  # -u unified diff
14
14
  # -v display version
15
15
 
16
- require 'unit_diff'
16
+ begin
17
+ require 'unit_diff'
18
+ rescue LoadError
19
+ require File.dirname(__FILE__) + '/../lib/unit_diff'
20
+ end
17
21
 
18
22
  ############################################################
19
23
 
data/lib/autotest.rb CHANGED
@@ -157,6 +157,8 @@ class Autotest
157
157
  @exception_list = []
158
158
  @test_mappings = []
159
159
 
160
+ ENV['UNIT_DIFF'] ||= 'unit_diff'
161
+
160
162
  self.completed_re = /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/
161
163
  self.extra_class_map = {}
162
164
  self.extra_files = []
@@ -170,7 +172,7 @@ class Autotest
170
172
  self.sleep = 1
171
173
  self.testlib = "test/unit"
172
174
  self.find_directories = ['.']
173
- self.unit_diff = "unit_diff -u"
175
+ self.unit_diff = "#{ENV['UNIT_DIFF']} -u"
174
176
 
175
177
  #add Test::Unit mappings
176
178
  #file in /lib -> run test in /test
@@ -185,7 +187,17 @@ class Autotest
185
187
  end
186
188
 
187
189
  #execute custom extensions
188
- [File.expand_path('~/.autotest'), './.autotest'].each do |f|
190
+ load_custom_extensions(options[:rc])
191
+ end
192
+
193
+ def load_custom_extensions(config_file)
194
+ configs = ['./.autotest']
195
+ if config_file
196
+ configs << File.expand_path(config_file)
197
+ else
198
+ configs << File.expand_path('~/.autotest')
199
+ end
200
+ configs.each do |f|
189
201
  load f if File.exist? f
190
202
  end
191
203
  end
@@ -0,0 +1,83 @@
1
+ require 'test/helper'
2
+ require 'autotest'
3
+ require 'shoulda'
4
+
5
+ class TestAutotestIntegration < Test::Unit::TestCase
6
+ def temp_dir
7
+ "#{File.dirname(__FILE__)}/tmp"
8
+ end
9
+
10
+ def autotest_executable
11
+ '../../bin/autotest'
12
+ end
13
+
14
+ def unit_diff_executable
15
+ File.expand_path("./#{File.dirname(__FILE__)}/../bin/unit_diff")
16
+ end
17
+
18
+ def run_autotest(flag_string='')
19
+ `cd #{temp_dir} && #{autotest_executable} #{flag_string}`
20
+ end
21
+
22
+ def write(file, text)
23
+ file = "#{temp_dir}/#{file}"
24
+ dir = File.dirname(file)
25
+ `mkdir -p #{dir}` unless File.directory?(dir)
26
+ File.open(file, 'w'){|f| f.write text }
27
+ end
28
+
29
+ def write_passing_tests times
30
+ write('test/test_x.rb', %{ class TestX < Test::Unit::TestCase; #{times}.times{|i| define_method("test_\#{i}"){ assert true }}; end })
31
+ end
32
+
33
+ context 'integration' do
34
+ context 'green run' do
35
+ setup do
36
+ ENV['UNIT_DIFF'] = unit_diff_executable
37
+ `rm -rf #{temp_dir}`
38
+ `mkdir #{temp_dir}`
39
+ write('.autotest', "Autotest.add_hook(:all_good){print 'all_good';exit}")
40
+ end
41
+
42
+ teardown do
43
+ `rm -rf #{temp_dir}`
44
+ end
45
+
46
+ should 'do nothing when run inside an empty directory' do
47
+ assert_equal run_autotest, 'all_good'
48
+ end
49
+
50
+ should 'runs all tests' do
51
+ write('test/test_x.rb', '')
52
+ assert_match %r{test/test_x.rb}, run_autotest
53
+ end
54
+
55
+ should 'include output from tests' do
56
+ write('test/test_x.rb', "print 'YES'")
57
+ assert_match %r{YES}, run_autotest
58
+ end
59
+
60
+ should 'show one dot per passing test' do
61
+ write_passing_tests 10
62
+ assert_match %r{[^\.]#{'\.'*10}[^\.]}, run_autotest
63
+ end
64
+
65
+ should 'show test summary' do
66
+ write_passing_tests 10
67
+ assert_match /Finished in \d\.\d+ seconds\.\s*10 tests, 10 assertions, 0 failures, 0 errors/m, run_autotest
68
+ end
69
+
70
+ should 'call good hooks in correct order' do
71
+ write('.autotest', "Autotest::ALL_HOOKS.each{|hook| Autotest.add_hook(hook){print hook;hook == :all_good ? exit : nil }}")
72
+ write_passing_tests 1
73
+ assert_match /\n#{%w[ran_command green all_good died]*''}$/m, run_autotest
74
+ end
75
+
76
+ should 'run with alternate config file location' do
77
+ write('.autotest_alternate', "Autotest.add_hook(:all_good){print 'all_good';exit}")
78
+ assert_equal run_autotest('-r .autotest_alternate'), 'all_good'
79
+ end
80
+
81
+ end
82
+ end
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autotest
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.3
4
+ version: 4.2.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: 2010-01-19 00:00:00 +01:00
12
+ date: 2010-01-31 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -43,6 +43,7 @@ files:
43
43
  - lib/unit_diff.rb
44
44
  - test/helper.rb
45
45
  - test/test_autotest.rb
46
+ - test/test_autotest_integration.rb
46
47
  - test/test_unit_diff.rb
47
48
  has_rdoc: true
48
49
  homepage: http://github.com/grosser/autotest
@@ -74,5 +75,6 @@ specification_version: 3
74
75
  summary: Autotest, without ZenTest
75
76
  test_files:
76
77
  - test/test_autotest.rb
78
+ - test/test_autotest_integration.rb
77
79
  - test/helper.rb
78
80
  - test/test_unit_diff.rb