[Ironruby-core] Mocking behavior between clr types

Ivan Porto Carrero ivan at flanders.co.nz
Tue Jan 26 04:03:49 EST 2010


I'm not sure if the CLR profiling API is in Mono I'd have to find that out
first.

My thing against mono.cecil is that you need to instrument the DLL and
rewrite the IL before running your app. I'd prefer to do stuff during
instead of beforehand.

I need to be able to intercept and decide whether to go on or not. I've been
googling the CLR profiling API a little yesterday, and I have to go through
the mailinglist archive to find the links Shri sent me last year about this
subject.  I did get the expert IL assembler book which also came out of that
discussion but haven't gotten round to actually reading it yet.
---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)



On Tue, Jan 26, 2010 at 9:43 AM, Jimmy Schementi <
Jimmy.Schementi at microsoft.com> wrote:

> Basically, Ruby is able to do all the crazy mocking stuff because of its
> mutable type system, and the only way to make the CLR's type-system mutable
> is to rewrite the IL. To put it in SAT terms:
>
> "rewriting IL" is to "static languages" as "monkey-patching" is to "dynamic
> languages"
>
> =P
>
> ~Jimmy
>
>
> > -----Original Message-----
> > From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-
> > bounces at rubyforge.org] On Behalf Of Ben Hall
> > Sent: Sunday, January 24, 2010 1:31 PM
> > To: ironruby-core at rubyforge.org
> > Subject: Re: [Ironruby-core] Mocking behavior between clr types
> >
> > Hi Ivan,
> >
> > I was thinking Mono.Cecil first and then the CLR profiling API as I'm
> pretty
> > sure that will work. I used a similar approach for
> > http://blog.benhall.me.uk/2008/11/net-fault-injection-very-early-proof-
> > of.html
> > but the fault injection was done via some Microsoft Research stuff.
> > Either approach your re-writing IL, it just depends which layer you work
> > with.
> >
> > Lots of interesting problems to solve. Then it would just need a nice
> Ruby
> > wrapper so it's transparent to the end user - ideally incorporating the
> > backend work into Caricature.
> >
> > Ben
> >
> > On Sun, Jan 24, 2010 at 8:34 PM, Ivan Porto Carrero <ivan at flanders.co.nz
> >
> > wrote:
> > > You don't need to do anything as drastic as disassemble dlls though :).
> > > There are several solutions and I think the cleanest one is to use the
> > > CLR profiling API.  Another avenue I could take is to use Mono.Cecil
> > > but I don't like the idea of the IL rewriting stuff. heck even
> > > postsharp would probably do the trick.
> > > I need to look into the CLR profiling API to make the rest of the
> > > stuff happening as that is the cleanest solution IMO. The limitation
> > > only exists if you're mocking CLR classes for use in other CLR
> > > classes. If you're going to use it in ruby code you can do whatever you
> > want.
> > > My mocker does most of what Moq and Rhino.Mocks do, except that it
> > > doesn't use LCG or expression trees but just the reflection API once
> > > per type. from there on out it uses ruby to do its job.
> > > What I need to add but don't know if they are really necessary are
> > > call count constraints.
> > > And I also want to make the RSpec integration a little bit better so
> > > that you can enlist an expectation for verification too.
> > > The docs are a bit outdated too, best is to look into
> > > spec/bacon/integration that's where I test out the new features or
> syntax
> > additions.
> > > I have a chapter in my book that explains the use of Caricature with
> > > RSpec which will be in the update at the end of january. Contact me
> > > off list if you want a discount :)
> > > ---
> > > Met vriendelijke groeten - Best regards - Salutations Ivan Porto
> > > Carrero
> > > Blog: http://flanders.co.nz
> > > Twitter: http://twitter.com/casualjim
> > > Author of IronRuby in Action (http://manning.com/carrero)
> > >
> > >
> > >
> > > On Sun, Jan 24, 2010 at 8:16 PM, andrew Wilson <a.wilson82 at gmail.com>
> > wrote:
> > >>
> > >> Ivan,
> > >>
> > >> Seems like a what I was looking for, however according to the
> > >> documentation it says it can only mock virtuals and non-static though.
> > >>
> > >> I don't want that restriction :(  One of the advantages I was hoping
> > >> to leverage was the ability to re-write methods that I wouldn't
> > >> otherwise be able to.
> > >>
> > >> -A
> > >>
> > >> --
> > >> When I wrote this, only God and I understood what I was doing.  Now,
> > >> God only knows - Karl Weierstrass
> > >>
> > >> _______________________________________________
> > >> Ironruby-core mailing list
> > >> Ironruby-core at rubyforge.org
> > >> http://rubyforge.org/mailman/listinfo/ironruby-core
> > >>
> > >
> > >
> > > _______________________________________________
> > > Ironruby-core mailing list
> > > Ironruby-core at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/ironruby-core
> > >
> > >
> > _______________________________________________
> > Ironruby-core mailing list
> > Ironruby-core at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/ironruby-core
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20100126/0e79da62/attachment-0001.html>


More information about the Ironruby-core mailing list