solnic changed the topic of #rom-rb to: Ruby Object Mapper | Mailing List: https://groups.google.com/forum/?fromgroups#!forum/rom-rb | Logs: http://irclog.whitequark.org/rom-rb
jessekempf has joined #rom-rb
<jessekempf> mbj: that reply on github didn't take long!
<mbj> jessekempf: heh
<mbj> jessekempf: I'm still awake
<mbj> 03:04 localtime
<mbj> doing deployments and batch job babysitting :(
<jessekempf> Lovely.
<mbj> jessekempf: what is your time zone?
<jessekempf> I think we're UTC-7 right now.
<jessekempf> I'm in San Francisco, CA, US
<mbj> I'm in Essen/Germany
<jessekempf> Local time's 1806
<jessekempf> I saw, which is why I was quite surprised ;)
<mbj> bundle installing your reproduction
<jessekempf> At first I wasn't sure if somehow that response was automated.
<jessekempf> kk
<jessekempf> (fingers crossed ((please reproduce) (please reproduce) (please reproduce) …))
<mbj> jessekempf: mutant is not part of your bundle?
<jessekempf> Correct.
<mbj> not reproduced
<mbj> But interesting difference!
<jessekempf> Of course, that may be the cause of my problem. I get unresolvable conflicts when I try to add mutant to my dev dependencies.
<mbj> so your version has fully covered evil mutations where mine has uncovered evil mutations
<mbj> So most likely mutant cannot run rspec correctly
<mbj> Sadly the '--debug' flag working in the beta releases, so we dont see debug output
<mbj> Show me that unresolvable errors pls.
<mbj> If you dont execute mutant from your bundle you basically risk any sort of possible dependency fuckup :D
<mbj> jessekempf: still there?
<mbj> I'm about to leave in minutes :D
<mbj> sorry for pusing
<jessekempf> Me too
<jessekempf> No worries
<jessekempf> I was getting you your output
<mbj> rubocop
<mbj> rubocop does not like mutants bleeding edge dependency on parser pre2
<mbj> so update your rubocop
<mbj> IMHO a rubocop authors should have done some beta releases with newer deps.
<mbj> BTW bundlers errors are easier to debug with:
<mbj> DEBUG_RESOLVER=1 bundle foo
<jessekempf> Ok, I'll track this down.
<jessekempf> I'll see if I can hammer out all the dep conflicts and I'll let you know what I find later
<mbj> just use that rubocop and use bundle exec
<mbj> your problems will be gone.
<jessekempf> I appreciate the help =)
<mbj> Most likely mutant fails to load rspec
<mbj> silently!
<mbj> This causes the kill for to exit nonzero
<mbj> yields false positives for evil mutations, but the noop sanity check saved us here.
<mbj> noop basically injects the unmodified mutant
<mbj> s/mutant/subject/
<mbj> falling asleep, cu
<jessekempf> kk
mbj has quit [Quit: leaving]
<dkubb> O
<dkubb> I'll be around a bit later tonight to help if you need it jessekempf
<dkubb> probably 9 or 10 PM PST
<jessekempf> dkubb: thanks. It looks like I might need it =/
<jessekempf> bbiaw
jessekempf has quit [Quit: Leaving.]
jessekempf has joined #rom-rb
jessekempf has quit [Quit: Leaving.]
jessekempf has joined #rom-rb
<dkubb> jessekempf: I just pushed a change to mutant on github that doesn't swallow exceptions, so maybe it'll report the issue rather than being a noop failure
<dkubb> I'll test it against mutant-breaker in a moment, but I wanted to let you know first
<jessekempf> dkubb: kk
<dkubb> in either case, the logic we had there was catching too many exceptions. even if we decide to do it later, we can't be so broad with what we're catching
<jessekempf> dkubb: I've got my own hacked version I'm working against. It's continuing to fail, and Rspec::Core::Runner isn't sticking anything in the StringIO it's being passed.
<dkubb> oh I see
<dkubb> jessekempf: did you merge the change I sent into your hacked version?
<jessekempf> I made that change in one of my hacked versions. It didn't help — ::Rspec::Core::Runner's failing, and run's retval is always true.
<dkubb> that's very odd
<jessekempf> I guess that was the intent, but passing the StringIO as the stdout/stderr args to Runner.run suppresses all output.
<dkubb> I suppose you could pass in $stdout and $stderr there and see what it output
<jessekempf> I did =)
<dkubb> hmm
<jessekempf> I'll gist it up
<dkubb> cool, thanks
<dkubb> what version of ruby are you using? I've been testing with ruby 2.0.0p247
<dkubb> and running the spec normally does not produce this error?
<jessekempf> On my laptop, 1.9.3-p125…which is a little old. My team uses 1.9.3-p374 in production. The company uses 1.9.2 for most of its stuff, but is upgrading to 1.9.3.
<jessekempf> Correct, running the spec normally doesn't produce this error.
<dkubb> interesting. lemme install that version and see if it's something platform specific
<dkubb> I do know 1.9.2 has some really weird json problems
<jessekempf> My guess is it's an old version of JSON
<dkubb> like it requires the json gem for some things, because the built-in is so old
<dkubb> :)
<jessekempf> jesse.kempf:~/workspace/account-reifier/ddiflib-mutant2 [git: master] $ gem list | grep json
<jessekempf> skip "always_verify_ssl_certificates"
<jessekempf> multi_json (1.7.7, 1.7.2, 1.3.6, 1.1.0, 1.0.4)
<jessekempf> json (1.8.0, 1.7.5, 1.7.3, 1.7.0, 1.5.4)
<jessekempf> json_pure (1.8.0)
<jessekempf> I don't know why you would do this, but between some ancient version of JSON and the modern one, they decided that JSON.load('') would return nil instead of an exception.
<dkubb> hmm
<dkubb> since 1.9.3-p125 will take a bit to install, I have one theory to test
<dkubb> I noticed mutant isn't in the Gemfile for that repro
<dkubb> which means it's probably using the mutant in the global path to run the specs
<dkubb> which would also use the deps from the global gem path, not the stuff in your Gemfile
<jessekempf> I added mutant to my gemspec
<dkubb> so maybe if you added mutant, and then ran it with "bundle exec mutant ..."
<dkubb> oh hmm, lemme check I must've missed it
<jessekempf> That code's not up on github yet =)
<jessekempf> er, =(
<dkubb> ahh ok
<dkubb> lemme know when you push it
<jessekempf> working on it
<jessekempf> Updated.
<dkubb> fwiw, I didn't write mutant but I use it in oss and work projects and it's awesome
<dkubb> it helps me find places I missed writing specs for
<dkubb> and it helps find bugs earlier in some cases
<jessekempf> Well I'll be damned.
<jessekempf> RUBYLIB=lib RUBYOPT='-r ddiflib' bundle exec "mutant --rspec-full --fail-fast '::DDIFLib.decode'" works.
<jessekempf> bundle exec "RUBYLIB=lib RUBYOPT='-r ddiflib' mutant --rspec-full --fail-fast '::DDIFLib.decode'"
<jessekempf> ^ fails
<dkubb> ahh yeah
<dkubb> the environment variables need to be specified first
<dkubb> so it looks like it's working now?
<jessekempf> Yes.
<dkubb> awesome
<jessekempf> Well. I feel dumb.
<dkubb> no worries
<dkubb> I've made that mistake dozens of times
<jessekempf> My team's pretty excited about mutant.
<jessekempf> We're on call for all the software we write, so we're pretty interested in anything that increases the quality of what we build.
<dkubb> ahh yeah
<dkubb> have you looked at devtools?
<dkubb> it includes mutant and a few other tools we use
<dkubb> mostly common stuff, but I think we do it a bit differently from other teams and that's all the difference
<Gibheer> jessekempf: you are on call for the stuff you write? That is awesome
<dkubb> jessekempf: would you mind updating https://github.com/mbj/mutant/issues/68 with some info and closing it?
<jessekempf> We're working to the point where all code has to pass all rspecs, be clean according to rubocop, and pass reek without warnings before it's ready for a code review.
<jessekempf> dkubb: sure
<dkubb> that's a good approach
<dkubb> I've done that on other teams and it reduces code review time, because it takes care of some of the low hanging fruit
<dkubb> I hate reviewing code that is misformatted, and I have to send it back and wait for it to be updated before I can do a "real" review
<dkubb> well, in truth I do a full pass anyway, but it always means I need to do two passes
<dkubb> which sucks, because if those devs were using rubocop then at least most of the common stuff would've been fixed before I even saw it
<jessekempf> yeah, you also get so much time on a CR before you make your CR agony quota and stop caring.
<jessekempf> Gibheer: yes. On-call clears the mind and forces you to focus on what's truly important upfront ;)
<dkubb> yeah, it's human nature. a tool never gets tired and never gets lazy
<jessekempf> A tool is never under pressure to ship, either.
<dkubb> in ROM code we actually fail the build if the tools flag issues
<jessekempf> And a fast enough tool can be run from Guard, so you don't have a build-up of crufty code.
<dkubb> I think mbj started spiking out guard-mutant
<jessekempf> For a fast enough test suite that would be pretty spiffy.
<Gibheer> jessekempf: so true. No developer has to do that here. If something breaks and the ops guys can't fix it, it is broken until the devs wake up
<dkubb> jessekempf: well, there's the --rspec-unit which runs all the unit tests but I think mbj is going to be working on a new strategy that attempts to run a portion of the specs only
<dkubb> jessekempf: so say, you saved app/models/user.rb, first mutant is going to look in spec/unit/models/user/*_spec.rb (for per-method specs), then it looks for spec/unit/models/user_spec.rb and then it runs all the unit tests (which is effectively --rspec-unit)
<dkubb> I think the spec layout could probably be made configurable at some point too
<dkubb> the advantage to narrowing the scope like this though is that you can get away with just running the unit tests that relate to the file you're modifying, not every spec in the whole test suite.. unless that's your preference
<jessekempf> Gibheer: One of my team's projects is extremely high-profile within the company, so we can't roll like that.
<dkubb> it woudn't matter if the specs take 10 minutes to run if the user tests take 10 or 15 seconds
<jessekempf> dkubb: the particular codebase I want to run mutant against is not particularly large, but a full system test is expensive (it needs to hit the filesystem a bunch and send messages through RabbitMQ) and we'd want to generate a mutant report off the full suite of tests since the unit and integration tests only get us so far.
<dkubb> ahh ok
<dkubb> the thing about mutant is not that it'll find something. it'll find *a lot* guaranteed. the question is usually how to prioritize it
<dkubb> I had one codebase that I had use heckle to get full mutation coverage and mutant found over a hundred new things in it
<jessekempf> haha, nice
<dkubb> and that heckled codebase was probably much more well tested than the average app
<dkubb> or actually the best tested app I've ever worked on for $word
<dkubb> *$work
<jessekempf> There we go. That was the problem. Mutant's working sanely against the full DDIFLib codebase without breakenating.
<dkubb> scratch that.. it was probably tested more extensively than the best tested app I've ever *heard* of in the ruby community. I only state that to underscore how important I think mutant is and how good it is at finding issues
<dkubb> awesome
<jessekempf> You don't need to sell me on mutant ;)
<dkubb> hehe
<dkubb> fuzz testing was probably the second best thing I ever used apart from mutant
<jessekempf> Oh. Also. Another thing that's great about automated testers is that you can't get upset with them.
<jessekempf> It's a machine. It's not coming up with flaws in your code because it has a grudge against you and wants to make you look dumb.
<dkubb> that's true. it cuts past all that and it's not about ego anymore
<jessekempf> YES. YES. IT WORKS!
<dkubb> sweet. how's it look with that lib?
<jessekempf> SimpleCov says 100% coverage. Mutant says 92.82%
<jessekempf> This is hot.
<dkubb> nice
<dkubb> code coverage is still useful in telling you what parts of the code have 0% coverage, but beyond that I don't really trust it. it's too easy to write tests that touch a ton of code and give you false metrics
langitbiru has joined #rom-rb
<dkubb> it's also too easy for incidental coverage to inflate things
<jessekempf> Nice. It looks like Mutant is validating one of my personal pet peeves — the use of mutable variables.
zekefast has joined #rom-rb
solnic has joined #rom-rb
zekefast has quit [Quit: Leaving.]
zekefast has joined #rom-rb
postmodern has quit [Quit: Leaving]
postmodern has joined #rom-rb
solnic has quit [Quit: Leaving...]
theCrab has joined #rom-rb
solnic has joined #rom-rb
zekefast has quit [Quit: Leaving.]
solnic has quit [Quit: Linkinus - http://linkinus.com]
solnic has joined #rom-rb
zekefast has joined #rom-rb
theCrab has quit [Quit: Sleeping -_-]
mbj has joined #rom-rb
zekefast has quit [Read error: No route to host]
zekefast has joined #rom-rb
<mbj> dkubb: no
<mbj> dkubb: why I should feak simplcov / coveralls
<mbj> dkubb: I know mutants metrics are suboptimal when it comes to test coverage :(
zekefast1 has joined #rom-rb
zekefast has quit [Ping timeout: 245 seconds]
langitbiru has quit [Ping timeout: 264 seconds]
mbj_ has joined #rom-rb
mbj has quit [Ping timeout: 264 seconds]
mbj has joined #rom-rb
<snusnu> yo mbj
mbj_ has quit [Ping timeout: 276 seconds]
<mbj> snusnu: yo
<mbj> snusnu: need that decompose compose soon
postmodern has quit [Quit: Leaving]
mbj has quit [Read error: Connection reset by peer]
solnic has quit [Quit: Leaving...]
solnic has joined #rom-rb
snusnu has quit [Quit: Leaving.]
snusnu has joined #rom-rb
mbj has joined #rom-rb
<snusnu> yo mbj
<snusnu> mbj: i saw you pushed a few commits, what shall i do with them? do you still plan to add some?
<snusnu> mbj: i fixed the last remaining spec locally before i saw that you've committed stuff
<mbj> snusnu: I only pushed devtools and rspec api related changes
<mbj> snusnu: Push your stuff.
<snusnu> mbj: well, i only fixed a failing spec, so .. are you still planning to do anything, or shall i continue? ;)
<mbj> snusnu: I'll start 18:00
<snusnu> mbj: and merge the stuff you have in
<snusnu> mbj: ok, then i'll just merge and add some missing specs and stuff now
<mbj> snusnu: If you fix this before and make it realeasable you help me a lot.
<snusnu> mbj: we'll see how far i will get
<mbj> snusnu: thx
<snusnu> mbj: i merged your commits, but then i amended them (as one spec had a syntax error) .. now i just noticed that history is lost, and that merge commit ends up showing me as the author .. sorry for that!
_whitelogger has joined #rom-rb
<dkubb> good morning
<snusnu> good morning dkubb
<dkubb> mbj: you're right, adding that mutator was pretty easy
<dkubb> mbj: I'll see about renaming LocalVariable to just Variable and see if I can use it for gvar, cvar and ivar nodes
<dkubb> mbj: does this look like an error to you, a class variable should bd @@foo, not $foo: https://github.com/whitequark/parser/blob/master/doc/AST_FORMAT.md#class-variable
solnic has quit [Quit: Leaving...]
mbj has quit [Read error: Connection reset by peer]
therabidbanana has joined #rom-rb
zekefast1 has quit [Quit: Leaving.]
jessekempf has quit [Quit: Leaving.]
dkubb has quit [Quit: Linkinus - http://linkinus.com]
jessekempf has joined #rom-rb
zekefast has joined #rom-rb
solnic has joined #rom-rb
solnic_ has joined #rom-rb
solnic has quit [Read error: Connection reset by peer]
zekefast has quit [Quit: Leaving.]
postmodern has joined #rom-rb
kapowaz has joined #rom-rb
solnic_ has quit [Quit: Leaving...]
mbj has joined #rom-rb
<snusnu> mbj: if you feel like killing the remaining substation mutations, go for it :)
<snusnu> mbj: i needed to take a break, and am unsure if i want to go back to "just" writing specs later on
<mbj> snusnu: thx!
<snusnu> mbj: no worries, just tell me if you'll work on it today still :)
<snusnu> mbj: otherwise, i might do it myself, but i actually wanted to add another missing feature
<mbj> snusnu: I need that decomsosition composition for some time now
<snusnu> mbj: so?
<snusnu> ;)
<mbj> snusnu: I'll work on it :D
<mbj> To mutation cover it and add the missing docs.
<mbj> And release this evening.
<snusnu> mbj: sweet, thx! feel free to ping me whenever
<snusnu> mbj: i'll be going home now, but i'll be online later tonight
snusnu has quit [Quit: Leaving.]
<kalleth> mbj:
<kalleth> you made me unhappy the other night
<kalleth> :(
<mbj> kalleth: heh
<kalleth> but now i am hacking on code here
<kalleth> so you can't make me unhappy with Factories
<kalleth> thanks.
mbj has quit [Read error: Connection reset by peer]
jessekempf has quit [Ping timeout: 264 seconds]
jessekempf has joined #rom-rb
xybre is now known as pipework|dontban
pipework|dontban is now known as xybre
snusnu has joined #rom-rb
therabidbanana has quit [Quit: leaving]