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