Gem::TestCase, deprecations and building gems during tests

Luis Lavena luislavena at
Thu Jun 14 02:31:36 UTC 2012

Thank you Steve and Hugh,

My anxiety won over my laziness so I've spent a lot of hours figuring
out how to do what I wanted.

So far, I've created my own set of helpers that abstract Gem::TestCase
ones for my purpose:

* Create a fake gem
* Bundle a extension (files) inside the fake gem

A few things I noticed:

new_spec returns the gemspec of the new gem you created, but
internally it relocates the gem so you can't use spec.cache_file
because that file doesn't exist.

I needed to workaround that here:

With these helpers, I can:

Create a gem and obtain the path to the gem file (cache_file):

    gem_file = util_bake_gem { |s| s.platform = Gem::Platform::CURRENT }

Add a no-op extension to it:

    gem_file = util_bake_gem { |spec|
      util_fake_extension spec

Or add a almost-real extension that generates an empty artifact
combining above with util_custom_configure helper.

One last thing I'm missing is a way to check gem contents and see if I
have one particular file inside the generated gem.

I guess will have to figure it out ;-)

On Tue, Jun 12, 2012 at 1:34 PM, Hugh Sasse <hgs at> wrote:
> Whilst I'm not familiar enough with the structure and many details
> of Rubygems (as I should be) in order to give you an answer, this
> re-raises the issue of Software Archeology.  My own weak attempt to
> tackle to this might be of some very limited help in exploring the
> space.  See the code at, and remarks below
> Among other things, this produces diagrams of which classes create
> instances of which other classes, using GraphViz.  The parser is
> very, very crude.  It should probably be rewritten using some of the
> excellent work from Rubinius, etc.  I've not touched the code in a
> long time, so it is probably frightful, but if it helps, then that's
> something at least.
>        HTH
>        Hugh
> _______________________________________________
> RubyGems-Developers mailing list
> RubyGems-Developers at

Luis Lavena
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

More information about the RubyGems-Developers mailing list