testr 14.1.3 → 14.2.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/HISTORY.markdown +16 -0
- data/README.markdown +23 -23
- data/bin/testr +31 -29
- data/bin/testr-driver +13 -1
- data/bin/testr-herald +1 -1
- data/bin/testr-master +9 -1
- data/lib/testr/config.rb +18 -0
- data/lib/testr/server.rb +2 -0
- data/lib/testr/version.rb +1 -1
- data/man/man1/testr-driver.1 +15 -1
- data/man/man1/testr-herald.1 +1 -1
- data/man/man1/testr-master.1 +7 -1
- data/man/man1/testr.1 +6 -19
- metadata +10 -10
data/HISTORY.markdown
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
------------------------------------------------------------------------------
|
2
|
+
Version 14.2.0 (2012-01-16)
|
3
|
+
------------------------------------------------------------------------------
|
4
|
+
|
5
|
+
New features:
|
6
|
+
|
7
|
+
* Add ability to run `testr rails` without needing a `.testr.rb` file.
|
8
|
+
|
9
|
+
* testr(1) no longer shows command menu at startup. Press ENTER to see it.
|
10
|
+
|
11
|
+
* testr(1) now notifies you before absorbing overhead at startup.
|
12
|
+
|
13
|
+
Bug fixes:
|
14
|
+
|
15
|
+
* testr(1) now accepts death silently when Control-C is pressed.
|
16
|
+
|
1
17
|
------------------------------------------------------------------------------
|
2
18
|
Version 14.1.3 (2012-01-13)
|
3
19
|
------------------------------------------------------------------------------
|
data/README.markdown
CHANGED
@@ -28,29 +28,20 @@ Features
|
|
28
28
|
|
29
29
|
* Configurable through a Ruby script in your current working directory.
|
30
30
|
|
31
|
-
* Implemented in less than
|
31
|
+
* Implemented in less than 400 lines (SLOC) of pure Ruby code! :-)
|
32
32
|
|
33
33
|
------------------------------------------------------------------------------
|
34
34
|
Architecture
|
35
35
|
------------------------------------------------------------------------------
|
36
36
|
|
37
|
-
Following UNIX philosophy, TestR is made of simple text-based programs:
|
37
|
+
Following UNIX philosophy, TestR is made of simple text-based programs: thus
|
38
|
+
you can build your own custom TestR user interface by wrapping `testr-driver`!
|
38
39
|
|
39
40
|
* `testr` is an interactive command-line user interface (CLI) for driver
|
40
41
|
* `testr-herald` monitors current directory tree and reports changed files
|
41
42
|
* `testr-driver` tells master to run tests and keeps track of test results
|
42
43
|
* `testr-master` absorbs test execution overhead and forks to run your tests
|
43
44
|
|
44
|
-
You can build your own custom TestR user interface by wrapping `testr-driver`!
|
45
|
-
|
46
|
-
------------------------------------------------------------------------------
|
47
|
-
Usage and theory of operation
|
48
|
-
------------------------------------------------------------------------------
|
49
|
-
|
50
|
-
Run `testr` to launch the command-line user interface for `testr-driver`. It
|
51
|
-
will present a menu of commands and then wait for you to input a command while
|
52
|
-
the driver waits for `testr-herald` to tell it about changes in your tests.
|
53
|
-
|
54
45
|
When the driver hears about changes in your test files, it tells the master to
|
55
46
|
fork a worker process to run the tests affected by those changes. This is all
|
56
47
|
performed automatically. But what if you want to manually run a test file?
|
@@ -85,7 +76,7 @@ As a Git clone:
|
|
85
76
|
|
86
77
|
git clone git://github.com/sunaku/testr
|
87
78
|
cd testr
|
88
|
-
|
79
|
+
rake install
|
89
80
|
|
90
81
|
------------------------------------------------------------------------------
|
91
82
|
Invocation
|
@@ -99,6 +90,10 @@ If installed as a Git clone:
|
|
99
90
|
|
100
91
|
bundle exec ruby -Ilib bin/testr
|
101
92
|
|
93
|
+
You can test with built-in support for [Ruby on Rails]:
|
94
|
+
|
95
|
+
testr rails
|
96
|
+
|
102
97
|
You can monitor your test processes in another terminal:
|
103
98
|
|
104
99
|
watch 'ps xuw | sed -n "1p; /test[r]/p" | fgrep -v sed'
|
@@ -245,23 +240,23 @@ accelerates your test-driven development cycle and improves productivity!
|
|
245
240
|
Configuration helpers
|
246
241
|
------------------------------------------------------------------------------
|
247
242
|
|
248
|
-
The following libraries assist you with configuring TestR.
|
249
|
-
simply add the require() lines shown below to your configuration file
|
243
|
+
The following libraries assist you with configuring TestR. To use them,
|
244
|
+
simply add the `require()` lines shown below to your configuration file
|
245
|
+
*or* pass their basenames to the testr(1) command, also as shown below.
|
250
246
|
|
251
|
-
### require 'testr/config/rails'
|
247
|
+
### require 'testr/config/rails' # testr rails
|
252
248
|
|
253
|
-
Support for the [Ruby on Rails]
|
249
|
+
Support for the [Ruby on Rails] web framework.
|
254
250
|
|
255
|
-
### require 'testr/config/parallel_tests'
|
251
|
+
### require 'testr/config/parallel_tests' # testr parallel_tests
|
256
252
|
|
257
|
-
Support for the [parallel_tests]
|
258
|
-
library.
|
253
|
+
Support for the [parallel_tests] library.
|
259
254
|
|
260
255
|
------------------------------------------------------------------------------
|
261
256
|
Usage tips
|
262
257
|
------------------------------------------------------------------------------
|
263
258
|
|
264
|
-
### [factory_girl]
|
259
|
+
### [factory_girl] factories
|
265
260
|
|
266
261
|
Don't load your factories in master process (as part of your test execution
|
267
262
|
overhead) because that would necessitate the reloading of said overhead
|
@@ -295,8 +290,8 @@ Known issues
|
|
295
290
|
models, controllers, helpers, and other Ruby source files.
|
296
291
|
|
297
292
|
* If SQLite3 raises one of the following errors, try using an [in-memory
|
298
|
-
adapter for SQLite3]
|
299
|
-
|
293
|
+
adapter for SQLite3][memory_test_fix] or use different database software
|
294
|
+
(such as MySQL) for your test environment.
|
300
295
|
|
301
296
|
* SQLite3::BusyException: database is locked
|
302
297
|
|
@@ -307,3 +302,8 @@ License
|
|
307
302
|
------------------------------------------------------------------------------
|
308
303
|
|
309
304
|
Released under the ISC license. See the LICENSE file for details.
|
305
|
+
|
306
|
+
[factory_girl]: https://github.com/thoughtbot/factory_girl
|
307
|
+
[memory_test_fix]: https://github.com/mvz/memory_test_fix
|
308
|
+
[parallel_tests]: https://github.com/grosser/parallel_tests
|
309
|
+
[Ruby on Rails]: http://rubyonrails.org
|
data/bin/testr
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin
|
3
3
|
|
4
|
-
TESTR 1 "2012-01-
|
4
|
+
TESTR 1 "2012-01-16" "14.2.0"
|
5
5
|
=============================
|
6
6
|
|
7
7
|
NAME
|
@@ -12,23 +12,16 @@ testr - Continuous testing tool for Ruby
|
|
12
12
|
SYNOPSIS
|
13
13
|
--------
|
14
14
|
|
15
|
-
`testr` [*OPTION*]...
|
15
|
+
`testr` [*OPTION*]... [*CONFIG*]...
|
16
16
|
|
17
17
|
DESCRIPTION
|
18
18
|
-----------
|
19
19
|
|
20
20
|
This program is a simple command-line user interface for testr-driver(1). It
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
can enter, loads the test execution overhead into testr-master(1), and
|
26
|
-
finally notifies you when the master is ready to run test files.
|
27
|
-
|
28
|
-
It also launches testr-herald(1) alongside testr-master(1). When the herald
|
29
|
-
reports a modified file that belongs to the test execution overhead, this
|
30
|
-
program notifies you accordingly and then replaces the current master with a
|
31
|
-
new one that will absorb the modified test execution overhead into itself.
|
21
|
+
loads the given *CONFIG* files (which are either paths to actual files or
|
22
|
+
names of helper libraries in the testr/config/ namespace of Ruby's load path)
|
23
|
+
and then waits for you to supply interactive commands on its stdin. You may
|
24
|
+
press the ENTER key (supplying no command) to see a menu of accepted commands.
|
32
25
|
|
33
26
|
OPTIONS
|
34
27
|
-------
|
@@ -49,8 +42,15 @@ require 'binman'
|
|
49
42
|
BinMan.help
|
50
43
|
|
51
44
|
require 'json'
|
45
|
+
ENV['TESTR_CONFIGS'] = JSON.dump(ARGV)
|
46
|
+
|
47
|
+
#-----------------------------------------------------------------------------
|
48
|
+
# backend
|
49
|
+
#-----------------------------------------------------------------------------
|
50
|
+
|
52
51
|
require 'testr/client'
|
53
52
|
|
53
|
+
warn 'testr: Absorbing test execution overhead...'
|
54
54
|
@driver = TestR::Client::Transceiver.new('testr-driver') do |line|
|
55
55
|
evstr, *details = JSON.load(line)
|
56
56
|
event = evstr.to_sym
|
@@ -73,6 +73,10 @@ require 'testr/client'
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
#-----------------------------------------------------------------------------
|
77
|
+
# frontend
|
78
|
+
#-----------------------------------------------------------------------------
|
79
|
+
|
76
80
|
COMMANDS = {
|
77
81
|
'r' => :run_all_test_files,
|
78
82
|
's' => :stop_running_test_files,
|
@@ -82,25 +86,23 @@ COMMANDS = {
|
|
82
86
|
'q' => :quit,
|
83
87
|
}
|
84
88
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
if command = COMMANDS[key]
|
95
|
-
if command == :quit
|
96
|
-
@driver.quit
|
97
|
-
break
|
89
|
+
begin
|
90
|
+
while key = STDIN.gets.chomp
|
91
|
+
if command = COMMANDS[key]
|
92
|
+
if command == :quit
|
93
|
+
@driver.quit
|
94
|
+
break
|
95
|
+
else
|
96
|
+
@driver.send [command]
|
97
|
+
end
|
98
98
|
else
|
99
|
-
|
99
|
+
COMMANDS.each do |key, cmd|
|
100
|
+
warn "testr: Type #{key} then ENTER to #{cmd.to_s.tr('_', ' ')}."
|
101
|
+
end
|
100
102
|
end
|
101
|
-
else
|
102
|
-
COMMANDS.show
|
103
103
|
end
|
104
|
+
rescue Interrupt
|
105
|
+
# forced quit
|
104
106
|
end
|
105
107
|
|
106
108
|
Process.waitall
|
data/bin/testr-driver
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin
|
3
3
|
|
4
|
-
TESTR-DRIVER 1 "2012-01-
|
4
|
+
TESTR-DRIVER 1 "2012-01-16" "14.2.0"
|
5
5
|
====================================
|
6
6
|
|
7
7
|
NAME
|
@@ -21,6 +21,10 @@ This program reads the following single-line commands (JSON arrays) from its
|
|
21
21
|
standard input stream and performs the respective actions as described below.
|
22
22
|
It also funnels the standard output stream of testr-master(1) into its own.
|
23
23
|
|
24
|
+
When testr-herald(1) reports that a file belonging to the test execution
|
25
|
+
overhead has been modified, this program replaces testr-master(1) with a new
|
26
|
+
instance, which then absorbs the modified test execution overhead into itself.
|
27
|
+
|
24
28
|
`["run_all_test_files"]`
|
25
29
|
Runs all test files found within and beneath the current working directory.
|
26
30
|
|
@@ -49,6 +53,14 @@ FILES
|
|
49
53
|
*.testr.rb*
|
50
54
|
Optional Ruby script for configuring testr(1).
|
51
55
|
|
56
|
+
ENVIRONMENT
|
57
|
+
-----------
|
58
|
+
|
59
|
+
`TESTR_CONFIGS`
|
60
|
+
A single-line JSON array containing paths to actual files or names of
|
61
|
+
helper libraries in the testr/config/ namespace of Ruby's load path.
|
62
|
+
These configuration files are loaded just before *.testr.rb* is loaded.
|
63
|
+
|
52
64
|
SEE ALSO
|
53
65
|
--------
|
54
66
|
|
data/bin/testr-herald
CHANGED
data/bin/testr-master
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
=begin
|
3
3
|
|
4
|
-
TESTR-MASTER 1 "2012-01-
|
4
|
+
TESTR-MASTER 1 "2012-01-16" "14.2.0"
|
5
5
|
====================================
|
6
6
|
|
7
7
|
NAME
|
@@ -60,6 +60,14 @@ FILES
|
|
60
60
|
*.testr.rb*
|
61
61
|
Optional Ruby script for configuring testr(1).
|
62
62
|
|
63
|
+
ENVIRONMENT
|
64
|
+
-----------
|
65
|
+
|
66
|
+
`TESTR_CONFIGS`
|
67
|
+
A single-line JSON array containing paths to actual files or names of
|
68
|
+
helper libraries in the testr/config/ namespace of Ruby's load path.
|
69
|
+
These configuration files are loaded just before *.testr.rb* is loaded.
|
70
|
+
|
63
71
|
SEE ALSO
|
64
72
|
--------
|
65
73
|
|
data/lib/testr/config.rb
CHANGED
@@ -5,6 +5,10 @@ module TestR
|
|
5
5
|
|
6
6
|
Config = OpenStruct.new
|
7
7
|
|
8
|
+
#---------------------------------------------------------------------------
|
9
|
+
# defaults
|
10
|
+
#---------------------------------------------------------------------------
|
11
|
+
|
8
12
|
Config.max_forked_workers = [
|
9
13
|
# http://stackoverflow.com/questions/891537#6420817
|
10
14
|
'fgrep -c processor /proc/cpuinfo', # Linux
|
@@ -61,5 +65,19 @@ module TestR
|
|
61
65
|
end
|
62
66
|
]
|
63
67
|
|
68
|
+
#---------------------------------------------------------------------------
|
69
|
+
# overrides
|
70
|
+
#---------------------------------------------------------------------------
|
71
|
+
|
72
|
+
if ENV.key? 'TESTR_CONFIGS'
|
73
|
+
JSON.load(ENV['TESTR_CONFIGS']).each do |config|
|
74
|
+
if File.exist? config
|
75
|
+
load File.expand_path(config)
|
76
|
+
else
|
77
|
+
require "testr/config/#{config}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
64
82
|
load _user_config_file if File.exist? _user_config_file
|
65
83
|
end
|
data/lib/testr/server.rb
CHANGED
data/lib/testr/version.rb
CHANGED
data/man/man1/testr-driver.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.TH TESTR\-DRIVER 1 "2012\-01\-
|
1
|
+
.TH TESTR\-DRIVER 1 "2012\-01\-16" "14.2.0"
|
2
2
|
.SH NAME
|
3
3
|
.PP
|
4
4
|
testr\-driver \- drives
|
@@ -14,6 +14,14 @@ standard input stream and performs the respective actions as described below.
|
|
14
14
|
It also funnels the standard output stream of
|
15
15
|
.BR testr\-master (1)
|
16
16
|
into its own.
|
17
|
+
.PP
|
18
|
+
When
|
19
|
+
.BR testr\-herald (1)
|
20
|
+
reports that a file belonging to the test execution
|
21
|
+
overhead has been modified, this program replaces
|
22
|
+
.BR testr\-master (1)
|
23
|
+
with a new
|
24
|
+
instance, which then absorbs the modified test execution overhead into itself.
|
17
25
|
.TP
|
18
26
|
\fB\fC["run_all_test_files"]\fR
|
19
27
|
Runs all test files found within and beneath the current working directory.
|
@@ -40,6 +48,12 @@ Display this help manual using
|
|
40
48
|
\fI.testr.rb\fP
|
41
49
|
Optional Ruby script for configuring
|
42
50
|
.BR testr (1).
|
51
|
+
.SH ENVIRONMENT
|
52
|
+
.TP
|
53
|
+
\fB\fCTESTR_CONFIGS\fR
|
54
|
+
A single\-line JSON array containing paths to actual files or names of
|
55
|
+
helper libraries in the testr/config/ namespace of Ruby's load path.
|
56
|
+
These configuration files are loaded just before \fI.testr.rb\fP is loaded.
|
43
57
|
.SH SEE ALSO
|
44
58
|
.PP
|
45
59
|
.BR testr (1),
|
data/man/man1/testr-herald.1
CHANGED
data/man/man1/testr-master.1
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
.TH TESTR\-MASTER 1 "2012\-01\-
|
1
|
+
.TH TESTR\-MASTER 1 "2012\-01\-16" "14.2.0"
|
2
2
|
.SH NAME
|
3
3
|
.PP
|
4
4
|
testr\-master \- absorbs overhead and runs tests
|
@@ -47,6 +47,12 @@ Display this help manual using
|
|
47
47
|
\fI.testr.rb\fP
|
48
48
|
Optional Ruby script for configuring
|
49
49
|
.BR testr (1).
|
50
|
+
.SH ENVIRONMENT
|
51
|
+
.TP
|
52
|
+
\fB\fCTESTR_CONFIGS\fR
|
53
|
+
A single\-line JSON array containing paths to actual files or names of
|
54
|
+
helper libraries in the testr/config/ namespace of Ruby's load path.
|
55
|
+
These configuration files are loaded just before \fI.testr.rb\fP is loaded.
|
50
56
|
.SH SEE ALSO
|
51
57
|
.PP
|
52
58
|
.BR testr (1),
|
data/man/man1/testr.1
CHANGED
@@ -1,32 +1,19 @@
|
|
1
|
-
.TH TESTR 1 "2012\-01\-
|
1
|
+
.TH TESTR 1 "2012\-01\-16" "14.2.0"
|
2
2
|
.SH NAME
|
3
3
|
.PP
|
4
4
|
testr \- Continuous testing tool for Ruby
|
5
5
|
.SH SYNOPSIS
|
6
6
|
.PP
|
7
|
-
\fB\fCtestr\fR [\fIOPTION\fP]...
|
7
|
+
\fB\fCtestr\fR [\fIOPTION\fP]... [\fICONFIG\fP]...
|
8
8
|
.SH DESCRIPTION
|
9
9
|
.PP
|
10
10
|
This program is a simple command\-line user interface for
|
11
11
|
.BR testr\-driver (1).
|
12
12
|
It
|
13
|
-
|
14
|
-
|
15
|
-
.
|
16
|
-
|
17
|
-
can enter, loads the test execution overhead into
|
18
|
-
.BR testr\-master (1),
|
19
|
-
and
|
20
|
-
finally notifies you when the master is ready to run test files.
|
21
|
-
.PP
|
22
|
-
It also launches
|
23
|
-
.BR testr\-herald (1)
|
24
|
-
alongside
|
25
|
-
.BR testr\-master (1).
|
26
|
-
When the herald
|
27
|
-
reports a modified file that belongs to the test execution overhead, this
|
28
|
-
program notifies you accordingly and then replaces the current master with a
|
29
|
-
new one that will absorb the modified test execution overhead into itself.
|
13
|
+
loads the given \fICONFIG\fP files (which are either paths to actual files or
|
14
|
+
names of helper libraries in the testr/config/ namespace of Ruby's load path)
|
15
|
+
and then waits for you to supply interactive commands on its stdin. You may
|
16
|
+
press the ENTER key (supplying no command) to see a menu of accepted commands.
|
30
17
|
.SH OPTIONS
|
31
18
|
.TP
|
32
19
|
\fB\fC-h\fR, \fB\fC--help\fR
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.
|
4
|
+
version: 14.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,11 +13,11 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2012-01-
|
16
|
+
date: 2012-01-17 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: binman
|
20
|
-
requirement: &
|
20
|
+
requirement: &9134380 !ruby/object:Gem::Requirement
|
21
21
|
none: false
|
22
22
|
requirements:
|
23
23
|
- - ~>
|
@@ -25,10 +25,10 @@ dependencies:
|
|
25
25
|
version: '3'
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
|
-
version_requirements: *
|
28
|
+
version_requirements: *9134380
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: json
|
31
|
-
requirement: &
|
31
|
+
requirement: &9133860 !ruby/object:Gem::Requirement
|
32
32
|
none: false
|
33
33
|
requirements:
|
34
34
|
- - ! '>='
|
@@ -39,10 +39,10 @@ dependencies:
|
|
39
39
|
version: '2'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
|
-
version_requirements: *
|
42
|
+
version_requirements: *9133860
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: guard
|
45
|
-
requirement: &
|
45
|
+
requirement: &9133120 !ruby/object:Gem::Requirement
|
46
46
|
none: false
|
47
47
|
requirements:
|
48
48
|
- - ! '>='
|
@@ -53,10 +53,10 @@ dependencies:
|
|
53
53
|
version: '1'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
|
-
version_requirements: *
|
56
|
+
version_requirements: *9133120
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: diff-lcs
|
59
|
-
requirement: &
|
59
|
+
requirement: &9132380 !ruby/object:Gem::Requirement
|
60
60
|
none: false
|
61
61
|
requirements:
|
62
62
|
- - ! '>='
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
version: '2'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *9132380
|
71
71
|
description: ''
|
72
72
|
email:
|
73
73
|
- sunaku@gmail.com
|