Hi. Why doesn''t the following filter work? ~~~ # encoding: utf-8 # ./example_spec.rb RSpec.configure do |config| config.filter = { unless: :condition_acceptable } end describe ''some code'' do it ''does one'', if: :condition_acceptable do end it ''does two'', unless: :condition_acceptable do end end ~~~ ~~~ $ rspec example_spec.rb No examples were matched # instead of ''some code does two'' ~~~ Thanks. Debian GNU/Linux 5.0.7; Ruby 1.9.2; RSpec 2.5.0.
On Thu, Mar 10, 2011 at 2:32 AM, Shamaoke <shamaoke at hotmail.com> wrote:> Hi. > > Why doesn''t the following filter work? > > ~~~ > # encoding: utf-8 > # ./example_spec.rb > > RSpec.configure do |config| > config.filter = { > unless: :condition_acceptable > } > end > > describe ''some code'' do > it ''does one'', if: :condition_acceptable do > end > > it ''does two'', unless: :condition_acceptable do > end > end > ~~~ > > ~~~ > $ rspec example_spec.rb > No examples were matched # instead of ''some code does two'' > ~~~ > > Thanks. > > Debian GNU/Linux 5.0.7; > Ruby 1.9.2; > RSpec 2.5.0. > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >If :condition_acceptable evaluates to false, your example will run. If you are looking to "match" key/values, don''t use :if or :unless -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110311/f239de5e/attachment.html>
On Mar 11, 1:17?pm, Justin Ko <jko... at gmail.com> wrote:> On Thu, Mar 10, 2011 at 2:32 AM, Shamaoke <shama... at hotmail.com> wrote: > > Hi. > > > Why doesn''t the following filter work? > > > ~~~ > > # encoding: utf-8 > > # ./example_spec.rb > > > RSpec.configure do |config| > > ?config.filter = { > > ? ?unless: :condition_acceptable > > ?} > > end > > > describe ''some code'' do > > ?it ''does one'', if: :condition_acceptable do > > ?end > > > ?it ''does two'', unless: :condition_acceptable do > > ?end > > end > > ~~~ > > > ~~~ > > $ rspec example_spec.rb > > No examples were matched # instead of ''some code does two'' > > ~~~ > > > Thanks. > > > Debian GNU/Linux 5.0.7; > > Ruby 1.9.2; > > RSpec 2.5.0. > > _______________________________________________ > > rspec-users mailing list > > rspec-us... at rubyforge.org > >http://rubyforge.org/mailman/listinfo/rspec-users > > If :condition_acceptable evaluates to false, your example will run. If you > are looking to "match" key/values, don''t use :if or :unless > > _______________________________________________ > rspec-users mailing list > rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-usersThere are built-in `:if` and `:unless` filters. You probably don''t want to override them. They work how you would normally expect. http://relishapp.com/rspec/rspec-core/v/2-5/dir/filtering/implicit-filters HTH, Myron
Thanks for the clarification. I was led astray by the example from the RSpec Book where the network dependent code was described*. In that example the default if filter was overriden using the Proc object and it returned true or false depending on the network condition. Now I understand that code could be changed like the following: ~~~ class Network def self.available true # or false depending on the network condition end end describe ''some network dependent code'' do it ''does one'', :if => Network.available do # works if the network is available only end it ''does two'' do end end ~~~ ________ * The RSpec Book, chp. 16, p. 238. On 14 ???, 03:16, Myron Marston <myron.mars... at gmail.com> wrote:> On Mar 11, 1:17?pm, Justin Ko <jko... at gmail.com> wrote: > > > > > On Thu, Mar 10, 2011 at 2:32 AM, Shamaoke <shama... at hotmail.com> wrote: > > > Hi. > > > > Why doesn''t the following filter work? > > > > ~~~ > > > # encoding: utf-8 > > > # ./example_spec.rb > > > > RSpec.configure do |config| > > > ?config.filter = { > > > ? ?unless: :condition_acceptable > > > ?} > > > end > > > > describe ''some code'' do > > > ?it ''does one'', if: :condition_acceptable do > > > ?end > > > > ?it ''does two'', unless: :condition_acceptable do > > > ?end > > > end > > > ~~~ > > > > ~~~ > > > $ rspec example_spec.rb > > > No examples were matched # instead of ''some code does two'' > > > ~~~ > > > > Thanks. > > > > Debian GNU/Linux 5.0.7; > > > Ruby 1.9.2; > > > RSpec 2.5.0. > > > _______________________________________________ > > > rspec-users mailing list > > > rspec-us... at rubyforge.org > > >http://rubyforge.org/mailman/listinfo/rspec-users > > > If :condition_acceptable evaluates to false, your example will run. If you > > are looking to "match" key/values, don''t use :if or :unless > > > _______________________________________________ > > rspec-users mailing list > > rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users > > There are built-in `:if` and `:unless` filters. ?You probably don''t > want to override them. ?They work how you would normally expect. > > http://relishapp.com/rspec/rspec-core/v/2-5/dir/filtering/implicit-fi... > > HTH, > Myron > _______________________________________________ > rspec-users mailing list > rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
On Mar 15, 2011, at 4:49 AM, Shamaoke wrote:> On 14 ???, 03:16, Myron Marston <myron.mars... at gmail.com> wrote: >> On Mar 11, 1:17 pm, Justin Ko <jko... at gmail.com> wrote: >> >> >> >>> On Thu, Mar 10, 2011 at 2:32 AM, Shamaoke <shama... at hotmail.com> wrote: >>>> Hi. >> >>>> Why doesn''t the following filter work? >> >>>> ~~~ >>>> # encoding: utf-8 >>>> # ./example_spec.rb >> >>>> RSpec.configure do |config| >>>> config.filter = { >>>> unless: :condition_acceptable >>>> } >>>> end >> >>>> describe ''some code'' do >>>> it ''does one'', if: :condition_acceptable do >>>> end >> >>>> it ''does two'', unless: :condition_acceptable do >>>> end >>>> end >>>> ~~~ >> >>>> ~~~ >>>> $ rspec example_spec.rb >>>> No examples were matched # instead of ''some code does two'' >>>> ~~~ >> >>>> Thanks. >> >>>> Debian GNU/Linux 5.0.7; >>>> Ruby 1.9.2; >>>> RSpec 2.5.0. >>>> _______________________________________________ >>>> rspec-users mailing list >>>> rspec-us... at rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/rspec-users >> >>> If :condition_acceptable evaluates to false, your example will run. If you >>> are looking to "match" key/values, don''t use :if or :unless >> >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users >> >> There are built-in `:if` and `:unless` filters. You probably don''t >> want to override them. They work how you would normally expect. >> >> http://relishapp.com/rspec/rspec-core/v/2-5/dir/filtering/implicit-fi... >> >> HTH, >> Myron> Thanks for the clarification. I was led astray by the example from the > RSpec Book where the network dependent code was described*. In that > example the default if filter was overriden using the Proc object and > it returned true or false depending on the network condition. Now I > understand that code could be changed like the following: > > ~~~ > class Network > def self.available > true # or false depending on the network condition > end > end > > describe ''some network dependent code'' do > it ''does one'', :if => Network.available do # works if the network is > available only > end > > it ''does two'' do > end > end > ~~~ > ________ > * The RSpec Book, chp. 16, p. 238.Unfortunately, :if and :unless were added as special cases after rspec-2.0 and The RSpec Book were released :( Cheers, David