sauron 0.1.22 → 0.1.23

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,22 +1,34 @@
1
1
  = Sauron
2
2
 
3
- The all-seeing testing toolkit with many workers. Think multi-threaded, multi-database autotest. It continually watches your application for code changes like autotest, then runs them multi-threaded, each thread having its own database, to take maximum advantage of your computer's multiple cores/processors. Fast!
3
+ The all-seeing testing toolkit with many workers. Think multi-threaded, multi-database autotest.
4
+ It continually watches your application for code changes like autotest, then runs them
5
+ multi-threaded, each thread having its own database, to take maximum advantage of your computer's
6
+ multiple cores/processors. Fast!
4
7
 
5
8
  == Why a new testing toolkit?
6
9
 
7
- For a long time, my holy grail of testing has been multi-threaded autotest. Autotest is awesome, watching my application in real time and only running tests for code that has changed. But it doesn't take advantage of the growing number of cores and processors that computers have today.
10
+ For a long time, my holy grail of testing has been multi-threaded autotest. Autotest is awesome,
11
+ watching my application in real time and only running tests for code that has changed. But it
12
+ doesn't take advantage of the growing number of cores and processors that computers have today.
8
13
 
9
- Parallel_specs solves the multi-threaded, multi-database problem, but it has to be run manually, and runs all your tests at once. It also doesn't split up the test suite very efficiently, resulting in one thread finishing significantly sooner than the other.
14
+ Parallel_specs solves the multi-threaded, multi-database problem, but it has to be run manually,
15
+ and runs all your tests at once. It also doesn't split up the test suite very efficiently,
16
+ resulting in one thread finishing significantly sooner than the other.
10
17
 
11
18
  == How does it work?
12
19
 
13
- Sauron uses the watchr gem to watch your rails files for changes, and runs only the tests related to those changes. Sauron comes with a basic, but user-changeable, watchr script. This part is much like autotest.
20
+ Sauron uses the watchr gem to watch your rails files for changes, and runs only the tests related
21
+ to those changes. Sauron comes with a basic, but user-changeable, watchr script. This part is much
22
+ like autotest.
14
23
 
15
- When Sauron detects that tests need to be run, it runs single tests with a direct ruby command. If there are multiple files, however, it kicks off a customized version of the hydra gem, creating multiple workers to run pieces of the test suite efficiently.
24
+ When Sauron detects that tests need to be run, it runs single tests with a direct ruby command. If
25
+ there are multiple files, however, it kicks off a customized version of the hydra gem, creating
26
+ multiple workers to run pieces of the test suite efficiently.
16
27
 
17
28
  == How do I use it?
18
29
 
19
- WARNING: This is still a *very* new gem (only in existence since July 17th, 2010). Use very carefully.
30
+ WARNING: This is still a *very* new gem (only in existence since July 17th, 2010). Use very
31
+ carefully.
20
32
 
21
33
  === Include the gems
22
34
 
@@ -24,13 +36,15 @@ The first step is to include the necessary gems in your config/environments/test
24
36
 
25
37
  config.gem 'sauron'
26
38
 
27
- The is the Sauron gem, which will also include the Watchr gem and a fork of the Hydra gem that I modified to support multiple databases. To get them on your system, run:
39
+ The is the Sauron gem, which will also include the Watchr gem and a fork of the Hydra gem that I
40
+ modified to support multiple databases. To get them on your system, run:
28
41
 
29
42
  rake gems:install RAILS_ENV=test
30
43
 
31
44
  === Edit your database configuration
32
45
 
33
- Edit your config/database.yml so that your test database name includes the worker number environment variable. Here's an example:
46
+ Edit your config/database.yml so that your test database name includes the worker number
47
+ environment variable. Here's an example:
34
48
 
35
49
  test:
36
50
  adapter: mysql
@@ -42,11 +56,15 @@ Or for sqlite3:
42
56
  adapter: sqlite3
43
57
  database: app_test<%= ENV['HYDRA_WORKER_ID'] %>.sqlite3
44
58
 
59
+ Aside from sqlite, you might have an extra step depending on your database permissions. See
60
+ "Caveats" below.
61
+
45
62
  === Run the Sauron generator
46
63
 
47
64
  ruby script/generate sauron
48
65
 
49
- By default, it will create a setup with 4 workers (threads/databases used during tests) and assume you are using testunit. You can change both of these with commandline arguments:
66
+ By default, it will create a setup with 4 workers (threads/databases used during tests) and assume
67
+ you are using testunit. You can change both of these with commandline arguments:
50
68
 
51
69
  ruby script/generate sauron --workers=10 --rspec
52
70
 
@@ -58,23 +76,61 @@ While developing your rails app, run:
58
76
 
59
77
  ruby script/sauron
60
78
 
61
- which will launch Sauron and watch your app. Use Ctrl-\ to refresh your testing suite after adding files. Ta-da! Multi-threaded, multi-database, automatic testing goodness!
79
+ which will launch Sauron and watch your app. Use Ctrl-\ to refresh your testing suite after adding
80
+ files. Ta-da! Multi-threaded, multi-database, automatic testing goodness!
62
81
 
63
82
  == For advanced users
64
83
 
65
- The generator creates a watchr script called sauron_watchr.rb in the root directory of your app. I think it has a good basic setup, but customize it all you want.
84
+ The generator creates a watchr script called sauron_watchr.rb in the root directory of your app. I
85
+ think it has a good basic setup, but customize it all you want.
66
86
 
67
87
  == For really advanced users
68
88
 
69
- Help me make this tool better. Fork it, fix it, send a pull request. My low public profile and crippling need for acceptance ensure you'll get a prompt, friendly response.
89
+ Help me make this tool better. Fork it, fix it, send a pull request. My low public profile and
90
+ crippling need for acceptance ensure you'll get a prompt, friendly response.
70
91
 
71
92
  == Caveats
72
93
 
73
- This is very new. I can't see how it would damage anything, but I guess that's what everyone says before they damage something. Also, I've traditionally used shoulda over rspec, so there may be glitches in what files Sauron watches/runs in rspec mode. If you see something wrong, let me know.
94
+ ==== MySQL, PostgreSQL, and other big kids
95
+
96
+ Sqlite is fun, but with real databases come issues like permissions. If you have liberal local
97
+ permissions on your database, like root with no password from localhost, you shouldn't have to do
98
+ anything extra to prepare your db's.
99
+
100
+ If you're more paranoid like me, and assign a unique user/pass for each app on your local system,
101
+ you'll need to create the extra databases and grant privileges in advance. It's easy, just create
102
+ more test databases with numbers appended in this fashion:
103
+
104
+ * app_test
105
+ * app_test1
106
+ * app_test2
107
+ * app_test3
108
+
109
+ And so forth, as many databases as you'll have workers. These three lines work nicely in MySQL:
110
+
111
+ create database app_test1;
112
+ grant all on app_test1.* to turtle@localhost identified by 'secretpassword';
113
+ flush privileges;
114
+
115
+ Substitute your chosen username and password above, instead of 'turtle' and 'secretpassword',
116
+ respectively. Do this to create each new database.
117
+
118
+ ==== Full Hydra support? No!
119
+
120
+ While the Hydra gem supports multiple computers over a network, Sauron doesn't at this time. That
121
+ might become a priority if people ask. It will definitely become a priority if somebody buys me a
122
+ multi-core system I can add to my testing arsenal :)
123
+
124
+ ==== Newness/shoddiness
74
125
 
75
- While the Hydra gem supports multiple computers over a network, Sauron doesn't at this time. That might become a priority if people ask. It will definitely become a priority if somebody buys me a multi-core system I can add to my testing arsenal :)
126
+ This is very new. I can't see how it would damage anything, but I guess that's what everyone says
127
+ before they damage something. Also, I've traditionally used shoulda over rspec, so there may be
128
+ glitches in what files Sauron watches/runs in rspec mode. If you see something wrong, let me know.
76
129
 
77
- This was put together quickly. If you don't feel like the underlying code is beautiful, this was largely hacked together during Ruby Midwest weekend, during hours that should have been used for sleeping.
130
+ Also, this was put together quickly. If you don't feel like the underlying code is beautiful, this
131
+ was largely hacked together during Ruby Midwest weekend, during hours that should have been used
132
+ for sleeping. If you *still* feel slighted, I will offer you a full refund of what you paid for
133
+ this gem. No questions asked!
78
134
 
79
135
 
80
136
  Copyright (c) 2010 Jaime Bellmyer, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.22
1
+ 0.1.23
@@ -135,8 +135,10 @@ class SauronTemplate
135
135
  print '.'
136
136
  STDOUT.flush
137
137
 
138
- i = '' if i == 0
139
- `rake db:reset RAILS_ENV=test HYDRA_WORKER_ID=#{i}`
138
+ hydra_worker_id = (i == 0 ? '' : i)
139
+ test_env_number = (i == 0 ? '' : i + 1)
140
+
141
+ `rake db:reset RAILS_ENV=test HYDRA_WORKER_ID=#{hydra_worker_id} TEST_ENV_NUMBER=#{test_env_number}`
140
142
  end
141
143
  end
142
144
 
data/sauron.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sauron}
8
- s.version = "0.1.22"
8
+ s.version = "0.1.23"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jaime Bellmyer"]
12
- s.date = %q{2010-07-19}
12
+ s.date = %q{2010-07-20}
13
13
  s.description = %q{Speed up your automated tests with multiple databases and workers.}
14
14
  s.email = %q{jaime@kconrails.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sauron
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 53
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 22
10
- version: 0.1.22
9
+ - 23
10
+ version: 0.1.23
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jaime Bellmyer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-19 00:00:00 -05:00
18
+ date: 2010-07-20 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency