sass 3.1.15 → 3.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/README.md +4 -5
  2. data/Rakefile +2 -2
  3. data/VERSION +1 -1
  4. data/lib/sass/css.rb +144 -48
  5. data/lib/sass/engine.rb +3 -1
  6. data/lib/sass/plugin/compiler.rb +25 -32
  7. data/lib/sass/plugin/listener.rb +59 -0
  8. data/lib/sass/script/lexer.rb +1 -1
  9. data/lib/sass/script/list.rb +1 -0
  10. data/lib/sass/scss/parser.rb +90 -4
  11. data/lib/sass/scss/rx.rb +5 -0
  12. data/lib/sass/scss/static_parser.rb +1 -1
  13. data/lib/sass/selector/abstract_sequence.rb +11 -2
  14. data/lib/sass/selector/simple.rb +6 -0
  15. data/lib/sass/tree/comment_node.rb +1 -1
  16. data/lib/sass/tree/node.rb +2 -2
  17. data/lib/sass/tree/visitors/check_nesting.rb +2 -2
  18. data/lib/sass/tree/visitors/cssize.rb +1 -1
  19. data/lib/sass/util.rb +3 -2
  20. data/test/sass/conversion_test.rb +10 -0
  21. data/test/sass/css2sass_test.rb +24 -0
  22. data/test/sass/engine_test.rb +1 -0
  23. data/test/sass/scss/css_test.rb +53 -0
  24. data/vendor/listen/CHANGELOG.md +72 -0
  25. data/vendor/listen/Gemfile +35 -0
  26. data/vendor/listen/Guardfile +8 -0
  27. data/vendor/{fssm → listen}/LICENSE +1 -1
  28. data/vendor/listen/README.md +297 -0
  29. data/vendor/listen/Rakefile +47 -0
  30. data/vendor/listen/Vagrantfile +96 -0
  31. data/vendor/listen/lib/listen.rb +38 -0
  32. data/vendor/listen/lib/listen/adapter.rb +159 -0
  33. data/vendor/listen/lib/listen/adapters/darwin.rb +84 -0
  34. data/vendor/listen/lib/listen/adapters/linux.rb +99 -0
  35. data/vendor/listen/lib/listen/adapters/polling.rb +66 -0
  36. data/vendor/listen/lib/listen/adapters/windows.rb +82 -0
  37. data/vendor/listen/lib/listen/directory_record.rb +257 -0
  38. data/vendor/listen/lib/listen/listener.rb +186 -0
  39. data/vendor/listen/lib/listen/multi_listener.rb +121 -0
  40. data/vendor/listen/lib/listen/turnstile.rb +28 -0
  41. data/vendor/listen/lib/listen/version.rb +3 -0
  42. data/vendor/listen/listen.gemspec +26 -0
  43. data/vendor/listen/spec/listen/adapter_spec.rb +142 -0
  44. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +31 -0
  45. data/vendor/listen/spec/listen/adapters/linux_spec.rb +30 -0
  46. data/vendor/listen/spec/listen/adapters/polling_spec.rb +68 -0
  47. data/vendor/listen/spec/listen/adapters/windows_spec.rb +24 -0
  48. data/vendor/listen/spec/listen/directory_record_spec.rb +807 -0
  49. data/vendor/listen/spec/listen/listener_spec.rb +151 -0
  50. data/vendor/listen/spec/listen/multi_listener_spec.rb +151 -0
  51. data/vendor/listen/spec/listen/turnstile_spec.rb +56 -0
  52. data/vendor/listen/spec/listen_spec.rb +73 -0
  53. data/vendor/listen/spec/spec_helper.rb +16 -0
  54. data/vendor/listen/spec/support/adapter_helper.rb +538 -0
  55. data/vendor/listen/spec/support/directory_record_helper.rb +35 -0
  56. data/vendor/listen/spec/support/fixtures_helper.rb +29 -0
  57. data/vendor/listen/spec/support/listeners_helper.rb +133 -0
  58. data/vendor/listen/spec/support/platform_helper.rb +11 -0
  59. metadata +40 -40
  60. data/vendor/fssm/Gemfile +0 -3
  61. data/vendor/fssm/README.markdown +0 -83
  62. data/vendor/fssm/Rakefile +0 -11
  63. data/vendor/fssm/example.rb +0 -12
  64. data/vendor/fssm/ext/rakefile.rb +0 -14
  65. data/vendor/fssm/fssm.gemspec +0 -27
  66. data/vendor/fssm/lib/fssm.rb +0 -74
  67. data/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  68. data/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  69. data/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  70. data/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  71. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  72. data/vendor/fssm/lib/fssm/monitor.rb +0 -36
  73. data/vendor/fssm/lib/fssm/path.rb +0 -94
  74. data/vendor/fssm/lib/fssm/pathname.rb +0 -36
  75. data/vendor/fssm/lib/fssm/state/directory.rb +0 -75
  76. data/vendor/fssm/lib/fssm/state/file.rb +0 -24
  77. data/vendor/fssm/lib/fssm/support.rb +0 -87
  78. data/vendor/fssm/lib/fssm/tree.rb +0 -176
  79. data/vendor/fssm/lib/fssm/version.rb +0 -3
  80. data/vendor/fssm/profile/prof-cache.rb +0 -40
  81. data/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  82. data/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  83. data/vendor/fssm/profile/prof-pathname.rb +0 -68
  84. data/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  85. data/vendor/fssm/profile/prof.html +0 -2379
  86. data/vendor/fssm/spec/count_down_latch.rb +0 -151
  87. data/vendor/fssm/spec/monitor_spec.rb +0 -202
  88. data/vendor/fssm/spec/path_spec.rb +0 -96
  89. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  90. data/vendor/fssm/spec/root/file.css +0 -0
  91. data/vendor/fssm/spec/root/file.rb +0 -0
  92. data/vendor/fssm/spec/root/file.yml +0 -0
  93. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  94. data/vendor/fssm/spec/spec_helper.rb +0 -14
@@ -0,0 +1,72 @@
1
+ ## 0.4.1 - April 15, 2012
2
+
3
+ ### Bug fixes
4
+
5
+ - [#18](https://github.com/guard/listen/issues/18): Listener crashes when removing directories with nested paths (reported by [@daemonza][], fixed by [@Maher4Ever][])
6
+
7
+ ## 0.4.0 - April 9, 2012
8
+
9
+ ### New features
10
+
11
+ - Add `wait_for_callback` method to all adapters. ([@Maher4Ever][])
12
+ - Add `Listen::MultiListener` class to listen to multiple directories at once. ([@Maher4Ever][])
13
+ - Allow passing multiple directories to the `Listen.to` method. ([@Maher4Ever][])
14
+ - Add `blocking` option to `Listen#start` which can be used to disable blocking the current thread upon starting. ([@Maher4Ever][])
15
+ - Use absolute-paths in callbacks by default instead of relative-paths. ([@Maher4Ever][])
16
+ - Add `relative_paths` option to `Listen::Listener` to retain the old functionality. ([@Maher4Ever][])
17
+
18
+ ### Improvements
19
+
20
+ - Encapsulate thread spawning in the linux-adapter. ([@Maher4Ever][])
21
+ - Encapsulate thread spawning in the darwin-adapter. ([@Maher4Ever][] with [@scottdavis][] help)
22
+ - Encapsulate thread spawning in the windows-adapter. ([@Maher4Ever][])
23
+ - Fix linux-adapter bug where Listen would report file-modification events on the parent-directory. ([@Maher4Ever][])
24
+
25
+ ### Removals
26
+
27
+ - Remove `wait_until_listening` as adapters doesn't need to run inside threads anymore ([@Maher4Ever][])
28
+
29
+ ## 0.3.3 - March 6, 2012
30
+
31
+ ### Improvements
32
+
33
+ - Improve pause/unpause. ([@thibaudgg][])
34
+
35
+ ## 0.3.2 - March 4, 2012
36
+
37
+ ### New features
38
+
39
+ - Add pause/unpause listener's methods. ([@thibaudgg][])
40
+
41
+ ## 0.3.1 - February 22, 2012
42
+
43
+ ### Bug fix
44
+
45
+ - [#9](https://github.com/guard/listen/issues/9): Ignore doesn't seem to work. (reported by [@markiz][], fixed by [@thibaudgg][])
46
+
47
+ ## 0.3.0 - February 21, 2012
48
+
49
+ ### New features
50
+
51
+ - Add automatic fallback to polling if system adapter doesn't work (like a DropBox folder). ([@thibaudgg][])
52
+ - Add latency and force_polling options. ([@Maher4Ever][])
53
+
54
+ ## 0.2.0 - February 13, 2012
55
+
56
+ ### New features
57
+
58
+ - Add checksum comparaison support for detecting consecutive file modifications made during the same second. ([@thibaudgg][])
59
+ - Add rb-fchange support. ([@thibaudgg][])
60
+ - Add rb-inotify support. ([@thibaudgg][] with [@Maher4Ever][] help)
61
+ - Add rb-fsevent support. ([@thibaudgg][])
62
+ - Add non-recursive diff with multiple directories support. ([@thibaudgg][])
63
+ - Ignore .DS_Store by default. ([@thibaudgg][])
64
+
65
+ ## 0.1.0 - January 28, 2012
66
+
67
+ - First version with only a polling adapter and basic features set (ignore & filter). ([@thibaudgg][])
68
+
69
+ [@markiz]: https://github.com/markiz
70
+ [@thibaudgg]: https://github.com/thibaudgg
71
+ [@Maher4Ever]: https://github.com/Maher4Ever
72
+ [@daemonza]: https://github.com/daemonza
@@ -0,0 +1,35 @@
1
+ source :rubygems
2
+
3
+ gemspec
4
+
5
+ gem 'rake'
6
+
7
+ group :development do
8
+ platform :ruby do
9
+ gem 'rb-readline'
10
+ end
11
+
12
+ require 'rbconfig'
13
+ case RbConfig::CONFIG['target_os']
14
+ when /darwin/i
15
+ # gem 'ruby_gntp', '~> 0.3.4', :require => false
16
+ gem 'growl', :require => false
17
+ when /linux/i
18
+ gem 'libnotify', '~> 0.7.1', :require => false
19
+ when /mswin|mingw/i
20
+ gem 'win32console', :require => false
21
+ gem 'rb-notifu', '>= 0.0.4', :require => false
22
+ end
23
+
24
+ gem 'guard', '~> 1.0.0'
25
+ gem 'guard-rspec', '~> 0.7.0'
26
+ gem 'yard'
27
+ gem 'redcarpet'
28
+ gem 'pry'
29
+
30
+ gem 'vagrant'
31
+ end
32
+
33
+ group :test do
34
+ gem 'rspec', '~> 2.9.0'
35
+ end
@@ -0,0 +1,8 @@
1
+ guard :rspec, :all_on_start => false, :all_after_pass => false, :cli => '--fail-fast --format doc' do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch('spec/support/adapter_helper.rb') { "spec/listen/adapters" }
5
+ watch('spec/support/listener_helper.rb') { "spec/listen/listener_spec.rb" }
6
+ watch('spec/support/fixtures_helper.rb') { "spec" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Travis Tilley
1
+ Copyright (c) 2012 Thibaud Guillaume-Gentil
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -0,0 +1,297 @@
1
+ # Listen [![Build Status](https://secure.travis-ci.org/guard/listen.png?branch=master)](http://travis-ci.org/guard/listen)
2
+
3
+ The Listen gem listens to file modifications and notifies you about the changes.
4
+
5
+ ## Features
6
+
7
+ * Works everywhere!
8
+ * Supports watching multiple directories from a single listener.
9
+ * OS-specific adapters for Mac OS X 10.6+, Linux and Windows.
10
+ * Automatic fallback to polling if OS-specific adapter doesn't work.
11
+ * Detects files modification, addidation and removal.
12
+ * Checksum comparaison for modifications made under the same second.
13
+ * Allows ignoring paths and supplying filters for better results.
14
+ * Tested on all Ruby environments via [travis-ci](http://travis-ci.org/guard/listen).
15
+
16
+ ## Install
17
+
18
+ ``` bash
19
+ gem install listen
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ There are **two ways** to use Listen:
25
+
26
+ 1. Call `Listen.to` with either a single directory or multiple directories, then define the `change` callback in a block.
27
+ 2. Create a `listener` object and use it in an (ARel style) chainable way.
28
+
29
+ Feel free to give your feeback via [Listen issues](https://github.com/guard/listener/issues)
30
+
31
+ ### Block API
32
+
33
+ ``` ruby
34
+ # Listen to a single directory.
35
+ Listen.to('dir/path/to/listen', filter: /.*\.rb/, ignore: '/ignored/path') do |modified, added, removed|
36
+ # ...
37
+ end
38
+
39
+ # Listen to multiple directories.
40
+ Listen.to('dir/to/awesome_app', 'dir/to/other_app', filter: /.*\.rb/, latency: 0.1) do |modified, added, removed|
41
+ # ...
42
+ end
43
+ ```
44
+
45
+ ### "Object" API
46
+
47
+ ``` ruby
48
+ listener = Listen.to('dir/path/to/listen')
49
+ listener = listener.ignore('/ignored/path')
50
+ listener = listener.filter(/.*\.rb/)
51
+ listener = listener.latency(0.5)
52
+ listener = listener.force_polling(true)
53
+ listener = listener.polling_fallback_message(false)
54
+ listener = listener.change(&callback)
55
+ listener.start # blocks execution!
56
+ ```
57
+
58
+ ### Chainable
59
+
60
+ ``` ruby
61
+ Listen.to('dir/path/to/listen')
62
+ .ignore('/ignored/path')
63
+ .filter(/.*\.rb/)
64
+ .latency(0.5)
65
+ .force_polling(true)
66
+ .polling_fallback_message('custom message')
67
+ .change(&callback)
68
+ .start # blocks execution!
69
+ ```
70
+
71
+ ### Pause/Unpause
72
+
73
+ Listener can also easily be paused/unpaused:
74
+
75
+ ``` ruby
76
+ listener = Listen.to('dir/path/to/listen')
77
+ listener.start(false) # non-blocking mode
78
+ listener.pause # stop listening to changes
79
+ listener.paused? # => true
80
+ listener.unpause
81
+ listener.stop
82
+ ```
83
+
84
+ ## Listening to changes on multiple directories
85
+
86
+ The Listen gem provides the `MultiListener` class to watch multiple directories and
87
+ handle their changes from a single listener:
88
+
89
+ ```ruby
90
+ listener = Listen::MultiListener.new('app/css', 'app/js')
91
+ listener.latency(0.5)
92
+
93
+ # Configure the listener to your needs...
94
+
95
+ listener.start # blocks execution!
96
+ ````
97
+
98
+ For an easier access, the `Listen.to` method can also be used to create a multi-listener:
99
+
100
+ ``` ruby
101
+ listener = Listen.to('app/css', 'app/js')
102
+ .ignore('vendor') # both js/vendor and css/vendor will be ignored
103
+ .change(&assets_callback)
104
+
105
+ listener.start # blocks execution!
106
+ ```
107
+
108
+ ## Changes callback
109
+
110
+ Changes to the listened-to directories gets reported back to the user in a callback.
111
+ The registered callback gets invoked, when there are changes, with **three** parameters:
112
+ `modified_paths`, `added_paths` and `removed_paths` in that particular order.
113
+
114
+ You can register a callback in two ways. The first way is by passing a block when calling
115
+ the `Listen.to` method or when initializing a listener object:
116
+
117
+ ```ruby
118
+ Listen.to('path/to/app') do |modified, added, removed|
119
+ # This block will be called when there are changes.
120
+ end
121
+
122
+ # or ...
123
+
124
+ listener = Listen::Listener.new('path/to/app') do |modified, added, removed|
125
+ # This block will be called when there are changes.
126
+ end
127
+
128
+ ```
129
+
130
+ The second way to register a callback is be calling the `change` method on any
131
+ listener passing it a block:
132
+
133
+ ```ruby
134
+ # Create a callback
135
+ callback = Proc.new do |modified, added, removed|
136
+ # This proc will be called when there are changes.
137
+ end
138
+
139
+ listener = Listen.to('dir')
140
+ listener.change(&callback) # convert the callback to a block and register it
141
+
142
+ listener.start # blocks execution
143
+ ```
144
+
145
+ ### Paths in callbacks
146
+
147
+ Listeners invoke callbacks passing them absolute paths by default:
148
+
149
+ ```ruby
150
+ # Assume someone changes the 'style.css' file in '/home/user/app/css' after creating
151
+ # the listener.
152
+ Listen.to('/home/user/app/css') do |modified, added, removed|
153
+ modified.inspect # => ['/home/user/app/css/style.css']
154
+ end
155
+ ```
156
+
157
+ #### Relative paths in callbacks
158
+
159
+ When creating a listener for a **single** path (more specifically a `Listen::Listener` instance),
160
+ you can pass `:relative_paths => true` as an option to get relative paths in
161
+ your callback:
162
+
163
+ ```ruby
164
+ # Assume someone changes the 'style.css' file in '/home/user/app/css' after creating
165
+ # the listener.
166
+ Listen.to('/home/user/app/css', :relative_paths => true) do |modified, added, removed|
167
+ modified.inspect # => ['style.css']
168
+ end
169
+ ```
170
+
171
+ Passing the `:relative_paths => true` option won't work when listeneing to multiple
172
+ directories:
173
+
174
+ ```ruby
175
+ # Assume someone changes the 'style.css' file in '/home/user/app/css' after creating
176
+ # the listener.
177
+ Listen.to('/home/user/app/css', '/home/user/app/js', :relative_paths => true) do |modified, added, removed|
178
+ modified.inspect # => ['/home/user/app/css/style.css']
179
+ end
180
+ ```
181
+
182
+ ## Options
183
+
184
+ These options can be set through `Listen.to` params or via methods (see the "Object" API)
185
+
186
+ ```ruby
187
+ :filter => /.*\.rb/, /.*\.coffee/ # Filter files to listen to via a regexps list.
188
+ # default: none
189
+
190
+ :ignore => 'path1', 'path2' # Ignore a list of paths (root directory or sub-dir)
191
+ # default: '.bundle', '.git', '.DS_Store', 'log', 'tmp', 'vendor'
192
+
193
+ :latency => 0.5 # Set the delay (**in seconds**) between checking for changes
194
+ # default: 0.1 sec (1.0 sec for polling)
195
+
196
+ :force_polling => true # Force the use of the polling adapter
197
+ # default: none
198
+
199
+ :polling_fallback_message => 'custom message' # Set a custom polling fallback message (or disable it with `false`)
200
+ # default: "WARNING: Listen fallen back to polling, learn more at https://github.com/guard/listen#fallback."
201
+ ```
202
+
203
+ ### Non-blocking listening to changes
204
+
205
+ Starting a listener blocks the current thread by default. That means any code after the
206
+ `start` call won't be run until the listener is stopped (which needs to be done from another thread).
207
+
208
+ For advanced usage there is an option to disable this behavior and have the listener start working
209
+ in the background without blocking. To enable non-blocking listening the `start` method of
210
+ the listener (be it `Listener` or `MultiListener`) needs to be called with `false` as a parameter.
211
+
212
+ Here is an example of using a listener in the non-blocking mode:
213
+
214
+ ```ruby
215
+ listener = Listen.to('dir/path/to/listen')
216
+ listener.start(false) # doesn't block execution
217
+
218
+ # Code here will run immediately after starting the listener
219
+
220
+ ```
221
+
222
+ **note**: Using the `Listen.to` helper-method with a callback-block will always
223
+ block execution. See the "Block API" section for an example.
224
+
225
+ ## Listen adapters
226
+
227
+ The Listen gem has a set of adapters to notify it when there are changes.
228
+ There are 3 OS-specific adapters to support Mac, Linux and Windows. These adapters are fast
229
+ as they use some system-calls to implement the notifying function.
230
+
231
+ There is also a polling adapter which is a cross-platform adapter and it will
232
+ work on any system. This adapter is unfortunately slower than the rest of the adapters.
233
+
234
+ The Listen gem will choose the best and working adapter for your machine automatically. If you
235
+ want to force the use of the polling adapter, either use the `:force_polling` option
236
+ while initializing the listener or call the `force_polling` method on your listener
237
+ before starting it.
238
+
239
+ <a name="fallback"/>
240
+ ## Polling fallback
241
+
242
+ When a OS-specific adapter doesn't work the Listen gem automatically falls back to the polling adapter.
243
+ Here are some things you could try to avoid the polling fallback:
244
+
245
+ * [Update your Dropbox client](http://www.dropbox.com/downloading) (if used).
246
+ * Increase latency. (Please [open an issue](https://github.com/guard/listen/issues/new) if you think that default is too low.)
247
+ * Move or rename the listened folder.
248
+ * Update/reboot your OS.
249
+
250
+ If your application keeps using the polling-adapter and you can't figure out why, feel free to [open an issue](https://github.com/guard/listen/issues/new) (and be sure to give all the details).
251
+
252
+ ## Development [![Dependency Status](https://gemnasium.com/guard/listen.png?branch=master)](https://gemnasium.com/guard/listen)
253
+
254
+ * Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/listen/master/frames).
255
+ * Source hosted at [GitHub](https://github.com/guard/listen).
256
+
257
+ Pull requests are very welcome! Please try to follow these simple rules if applicable:
258
+
259
+ * Please create a topic branch for every separate change you make.
260
+ * Make sure your patches are well tested. All specs run with `rake spec:portability` must pass.
261
+ * Update the [Yard](http://yardoc.org/) documentation.
262
+ * Update the README.
263
+ * Update the CHANGELOG for noteworthy changes.
264
+ * Please **do not change** the version number.
265
+
266
+ For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on
267
+ `#guard` (irc.freenode.net).
268
+
269
+ ## Acknowledgment
270
+
271
+ * [Michael Kessler (netzpirat)][] for having written the [initial specs](https://github.com/guard/listen/commit/1e457b13b1bb8a25d2240428ce5ed488bafbed1f).
272
+ * [Travis Tilley (ttilley)][] for this awesome work on [fssm][] & [rb-fsevent][].
273
+ * [Nathan Weizenbaum (nex3)][] for [rb-inotify][], a thorough inotify wrapper.
274
+ * [stereobooster][] for [rb-fchange][], windows support wouldn't exist without him.
275
+ * [Yehuda Katz (wycats)][] for [vigilo][], that has been a great source of inspiration.
276
+
277
+ ## Authors
278
+
279
+ * [Thibaud Guillaume-Gentil][] ([@thibaudgg](http://twitter.com/thibaudgg))
280
+ * [Maher Sallam][] ([@mahersalam](http://twitter.com/mahersalam))
281
+
282
+ ## Contributors
283
+
284
+ [https://github.com/guard/listen/contributors](https://github.com/guard/listen/contributors)
285
+
286
+ [Thibaud Guillaume-Gentil]: https://github.com/thibaudgg
287
+ [Maher Sallam]: https://github.com/Maher4Ever
288
+ [Michael Kessler (netzpirat)]: https://github.com/netzpirat
289
+ [Travis Tilley (ttilley)]: https://github.com/ttilley
290
+ [fssm]: https://github.com/ttilley/fssm
291
+ [rb-fsevent]: https://github.com/thibaudgg/rb-fsevent
292
+ [Nathan Weizenbaum (nex3)]: https://github.com/nex3
293
+ [rb-inotify]: https://github.com/nex3/rb-inotify
294
+ [stereobooster]: https://github.com/stereobooster
295
+ [rb-fchange]: https://github.com/stereobooster/rb-fchange
296
+ [Yehuda Katz (wycats)]: https://github.com/wycats
297
+ [vigilo]: https://github.com/wycats/vigilo
@@ -0,0 +1,47 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task :default => :spec
6
+
7
+ require 'rbconfig'
8
+ namespace(:spec) do
9
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/i
10
+ desc "Run all specs on multiple ruby versions (requires pik)"
11
+ task(:portability) do
12
+ %w[187 192 161].each do |version|
13
+ system "cmd /c echo -----------#{version}------------ & " +
14
+ "pik use #{version} & " +
15
+ "bundle install & " +
16
+ "bundle exec rspec spec"
17
+ end
18
+ end
19
+ else
20
+ desc "Run all specs on multiple ruby versions (requires rvm)"
21
+ task(:portability) do
22
+ travis_config_file = File.expand_path("../.travis.yml", __FILE__)
23
+ begin
24
+ travis_options ||= YAML::load_file(travis_config_file)
25
+ rescue => ex
26
+ puts "Travis config file '#{travis_config_file}' could not be found: #{ex.message}"
27
+ return
28
+ end
29
+
30
+ travis_options['rvm'].each do |version|
31
+ system <<-BASH
32
+ bash -c 'source ~/.rvm/scripts/rvm;
33
+ rvm #{version};
34
+ ruby_version_string_size=`ruby -v | wc -m`
35
+ echo;
36
+ for ((c=1; c<$ruby_version_string_size; c++)); do echo -n "="; done
37
+ echo;
38
+ echo "`ruby -v`";
39
+ for ((c=1; c<$ruby_version_string_size; c++)); do echo -n "="; done
40
+ echo;
41
+ RBXOPT="-Xrbc.db" bundle install;
42
+ RBXOPT="-Xrbc.db" bundle exec rspec spec -f doc 2>&1;'
43
+ BASH
44
+ end
45
+ end
46
+ end
47
+ end