[rspec-users] Specs for code stored in rails_app/lib/

David Chelimsky dchelimsky at gmail.com
Thu May 24 05:53:55 EDT 2007


On 5/24/07, Wincent Colaiuta <win at wincent.com> wrote:
> El 24/5/2007, a las 10:35, David Chelimsky escribió:
>
> > On 5/24/07, Wincent Colaiuta <win at wincent.com> wrote:
> >> Where should the specs go for code in the "lib" directory of a Rails
> >> app?
> >>
> >> I made a folder, "spec/lib/", for storing such specs, and RSpec
> >> automatically picks them up when run using "rake spec".
> >>
> >> Before I go ahead and patch rspec_on_rails/lib/autotest/
> >> rails_rspec.rb so that autotest can monitor these specs I'd like to
> >> ask whether this is the "standard" location for such specs or not.
> >
> > Seems reasonable. Can you get me that patch this AM? I want to do a
> > 1.0.3 release today to fix a couple of bugs.
>
> Will paste one possible diff below; based on the convention that for
> file:
>
> lib/my_module.rb
>
> There will be a corresponding spec at:
>
> spec/lib/my_module_spec.rb
>
> This may be too simplistic given the possibility of nesting
> subfolders in lib, but as a first cut it might be ok.
>
> > FYI - how did you even find that file? We released it, but autotest is
> > not using it yet. It will be after the next ZenTest release, but not
> > yet.
>
> Just happened to notice it; after "script/plugin install" I did an
> "svn st" and "svn diff" to see what was new...
>
> Cheers,
> Wincent
>
>
> Index: rails_rspec.rb
> ===================================================================
> --- rails_rspec.rb      (revision 2014)
> +++ rails_rspec.rb      (working copy)
> @@ -33,7 +33,7 @@
>         %r%^(test|spec)/fixtures/(.*).yml% => proc { |_, m|
>           ["spec/models/#{m[2].singularize}_spec.rb"] + files_matching
> (%r%^spec\/views\/#{m[2]}/.*_spec\.rb$%)
>         },
> -      %r%^spec/(models|controllers|views|helpers)/.*rb$% => proc { |
> filename, _|
> +      %r%^spec/(models|controllers|views|helpers|lib)/.*rb$% => proc
> { |filename, _|
>           filename
>         },
>         %r%^app/models/(.*)\.rb$% => proc { |_, m|
> @@ -61,6 +61,9 @@
>         %r%^app/controllers/(.*)\.rb$% => proc { |_, m|
>           ["spec/controllers/#{m[1]}_spec.rb"]
>         },
> +      %r%^lib/(.*)\.rb$% => proc { |_, m|
> +        ["spec/lib/#{m[1]}_spec.rb"]
> +      },
>         %r%^config/routes.rb$% => proc { # FIX:
>           files_matching %r%^spec/(controllers|views|helpers)/.*_spec
> \.rb$%
>         },
> @@ -68,7 +71,7 @@
>           files_matching %r%^spec/models/.*_spec\.rb$%
>         },
>         %r%^spec/spec_helper.rb|config/((boot|environment(s/
> test)?).rb)% => proc {
> -        files_matching %r%^spec/(models|controllers|views|
> helpers)/.*_spec\.rb$%
> +        files_matching %r%^spec/(models|controllers|views|helpers|
> lib)/.*_spec\.rb$%
>         },
>       }
>     end

I don't think this is too simplistic - as long as the nested dirs
align in lib and spec/lib, then the regexp matcher will include the
'/'es, and all will be right with the world.

In truth, I already implemented exactly what you have there (in a
hurry to get a release out today), but if you file the above in the
tracker I'll be more than happy to add you to the contributor page.

Cheers,
David


> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list