ICorProfilerCallback2 requires C\COM scaryness :)
On Wed, Jan 27, 2010 at 9:17 AM, Ivan Porto Carrero <i...@flanders.co.nz> wrote: > Well this is going to be a very interesting problem to solve when I'm done > with the edits on my book. > ICorProfilerCallback2 is windows only > Mono.Cecil requires steps before running the app > On the mono IRC channel I'm told that there is no other way to do it in > mono. > > --- > 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 Wed, Jan 27, 2010 at 6:58 AM, Ivan Porto Carrero <i...@flanders.co.nz> > wrote: >> >> yes typemock uses the CLR profiling API and is a paid product. I don't >> know if typemock runs on Mono either, couldn't find it on their website. >> For me running on mono is one of the base requirements of my mocker, >> because I'm too often on my mac or linux machines to neglect that. >> That being said 99% of your tests will not need to mock a static method, >> and if you know about the limitation you can work around it if you're in >> control of the code. >> I've looked into this now and I can't find the ICorProfilerCallback2 >> interface in Mono on my mac. Mono allows you to write a profiler too though >> but AFAICT that has to be written in C, which I don't know, and it would >> also require to start mono with a different set of parameters. >> So I guess the way forward is mono.cecil, but I don't like the approach I >> need to take at all: >> Backup the assemblies in the bin >> before running the tests instrument every assembly in the bin folder with >> all the static method calls wrapped inside a before and after hook. These >> hooks call out to caricature and provide the mocking behavior. >> Save the modified assembly in the bin >> run the test. >> if there is an error or an interrupt or exit, restore assemblies from >> backup and this can go wrong easily. >> It also means I have to make it a requirement to require caricature before >> requiring any of your application code in the test_helper or spec_helper >> file. >> If somebody has a better solution by all means share, or better yet put it >> in and send me a pull request >> --- >> 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 Wed, Jan 27, 2010 at 4:50 AM, Miguel Madero <m...@miguelmadero.com> >> wrote: >>> >>> TypeMock is doing thing slightly different that allows you to intercept >>> essentially calls to any member (static, sealed types, non-virtuals, etc). >>> It take sa different approach than Rhino and Moq, I'm not sure if something >>> similar could be done using Ruby, I'm just dropping the idea here.... >>> >>> On Mon, Jan 25, 2010 at 7:34 AM, Ivan Porto Carrero <i...@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.wilso...@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@rubyforge.org >>>>> http://rubyforge.org/mailman/listinfo/ironruby-core >>>>> >>>> >>>> >>>> _______________________________________________ >>>> Ironruby-core mailing list >>>> Ironruby-core@rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/ironruby-core >>>> >>> >>> >>> >>> -- >>> Miguel A. Madero Reyes >>> www.miguelmadero.com (blog) >>> m...@miguelmadero.com >>> >>> _______________________________________________ >>> Ironruby-core mailing list >>> Ironruby-core@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/ironruby-core >>> >> > > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > > _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core