New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test minitest integration #445

Open
wants to merge 2 commits into
base: master
from

Conversation

Projects
None yet
@mbj
Owner

mbj commented Sep 22, 2015

[fix #92]

References: #330.

@mbj mbj referenced this pull request Sep 22, 2015

Closed

Introduce Minitest integration #330

@kbrock

This comment has been minimized.

Show comment
Hide comment
@kbrock

kbrock Sep 22, 2015

Contributor

could you add a check list or some ideas what may need to be added here?

Contributor

kbrock commented Sep 22, 2015

could you add a check list or some ideas what may need to be added here?

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Sep 22, 2015

Owner

could you add a check list or some ideas what may need to be added here?

Will do. Right now it needs someone who tests it on a non trivial project, that has real unit tests. That will likely be myself. And I'm blocked by time right now.

Owner

mbj commented Sep 22, 2015

could you add a check list or some ideas what may need to be added here?

Will do. Right now it needs someone who tests it on a non trivial project, that has real unit tests. That will likely be myself. And I'm blocked by time right now.

@mperham

This comment has been minimized.

Show comment
Hide comment
@mperham

mperham Sep 22, 2015

I'll play with it today on sidekiq's suite.

mperham commented Sep 22, 2015

I'll play with it today on sidekiq's suite.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Sep 22, 2015

Owner

I'll play with it today on sidekiq's suite.

I tried with sidekiq for maybe 10min back one month or so. But could not isolate a test / subject set that is a "real unit" test for testing the rspec integration.

By that I mean that most of the tests (and maybe even the global setup, I do not recall precicely) require redis / and or cause side effects.

You should start with -j1 to limit concurrency. I had some local commits that made the sidekiq test suite more accessible for mutant, but I lost them in the chaos that is my current live (sick for 4+ weeks).

Conceptually I think that sidekiq might not be the best project to verify the mutant-minitest integration. Since its domain is mostly managing nondeterministic things (threads, network, ...).

Not that I think sidekiq and mutant "cannot" play well together, but I think its at too big step. It would be easier to start with a smaller lib that does not have IO etc to validate the integration is correct, before using the integration on something bigger and running into false positives that burn time.

Owner

mbj commented Sep 22, 2015

I'll play with it today on sidekiq's suite.

I tried with sidekiq for maybe 10min back one month or so. But could not isolate a test / subject set that is a "real unit" test for testing the rspec integration.

By that I mean that most of the tests (and maybe even the global setup, I do not recall precicely) require redis / and or cause side effects.

You should start with -j1 to limit concurrency. I had some local commits that made the sidekiq test suite more accessible for mutant, but I lost them in the chaos that is my current live (sick for 4+ weeks).

Conceptually I think that sidekiq might not be the best project to verify the mutant-minitest integration. Since its domain is mostly managing nondeterministic things (threads, network, ...).

Not that I think sidekiq and mutant "cannot" play well together, but I think its at too big step. It would be easier to start with a smaller lib that does not have IO etc to validate the integration is correct, before using the integration on something bigger and running into false positives that burn time.

@dogweather

This comment has been minimized.

Show comment
Hide comment
@dogweather

dogweather Oct 4, 2015

How would I try this out?

dogweather commented Oct 4, 2015

How would I try this out?

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Nov 3, 2015

Owner

How would I try this out?

No time at all sorry. Someone with a less "global state hitting" minitest project should try.

Owner

mbj commented Nov 3, 2015

How would I try this out?

No time at all sorry. Someone with a less "global state hitting" minitest project should try.

@dogweather

This comment has been minimized.

Show comment
Hide comment
@dogweather

dogweather Nov 3, 2015

I mean just, how would I invoke this from the command line? minitest in place of rspec?

dogweather commented Nov 3, 2015

I mean just, how would I invoke this from the command line? minitest in place of rspec?

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Nov 3, 2015

Owner

I mean just, how would I invoke this from the command line? minitest in place of rspec?

--use minitest yes. And use this branch.

Owner

mbj commented Nov 3, 2015

I mean just, how would I invoke this from the command line? minitest in place of rspec?

--use minitest yes. And use this branch.

@dogweather

This comment has been minimized.

Show comment
Hide comment
@dogweather

dogweather Nov 3, 2015

I gave it a try on a Rails project, and it executed part-way but then had an error:

RAILS_ENV=test bundle exec mutant -r ./config/environment -I test --use minitest Agency

Output:

Mutant configuration:
Matcher:         #<Mutant::Matcher::Config match_expressions: [Agency]>
Integration:     Mutant::Integration::Minitest
Expect Coverage: 100.00%
Jobs:            8
Includes:        ["test"]
Requires:        ["./config/environment"]
Subjects:        14
Mutations:       729
Kills:           0
Alive:           0
Runtime:         0.00s
Killtime:        0.00s
Overhead:        Inf%
Coverage:        100.00%
Expected:        100.00%
Active subjects: 0
/Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:60:in `expression_syntax': undefined method `cover_expression' for BusinessesControllerTest:Class (NoMethodError)
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:138:in `construct_test'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:123:in `block in all_tests_index'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `each'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `each_with_object'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `all_tests_index'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'

(etc.)

dogweather commented Nov 3, 2015

I gave it a try on a Rails project, and it executed part-way but then had an error:

RAILS_ENV=test bundle exec mutant -r ./config/environment -I test --use minitest Agency

Output:

Mutant configuration:
Matcher:         #<Mutant::Matcher::Config match_expressions: [Agency]>
Integration:     Mutant::Integration::Minitest
Expect Coverage: 100.00%
Jobs:            8
Includes:        ["test"]
Requires:        ["./config/environment"]
Subjects:        14
Mutations:       729
Kills:           0
Alive:           0
Runtime:         0.00s
Killtime:        0.00s
Overhead:        Inf%
Coverage:        100.00%
Expected:        100.00%
Active subjects: 0
/Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:60:in `expression_syntax': undefined method `cover_expression' for BusinessesControllerTest:Class (NoMethodError)
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:138:in `construct_test'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:123:in `block in all_tests_index'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `each'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `each_with_object'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/mutant-36269e744bcd/lib/mutant/integration/minitest.rb:122:in `all_tests_index'
    from /Users/robb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'

(etc.)

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Nov 3, 2015

Owner

Likely this is triggered from missing autoload triggers. Typical rails symptom. Try to explicitly require the file that defines that method. Or ideally test on a non rails project.

Owner

mbj commented Nov 3, 2015

Likely this is triggered from missing autoload triggers. Typical rails symptom. Try to explicitly require the file that defines that method. Or ideally test on a non rails project.

@dogweather

This comment has been minimized.

Show comment
Hide comment
@dogweather

dogweather Nov 3, 2015

It seems that Mutant expects the missing method #cover_expression. (?) I can't find any references to that online. What should be providing that?

        # Cover expression syntaxes
        #
        # @return [Array<String>]
        #
        # @api private
        def expression_syntax
          klass.cover_expression
        end

https://github.com/mbj/mutant/blob/feature/minitest-integration/lib/mutant/integration/minitest.rb#L54-L61

dogweather commented Nov 3, 2015

It seems that Mutant expects the missing method #cover_expression. (?) I can't find any references to that online. What should be providing that?

        # Cover expression syntaxes
        #
        # @return [Array<String>]
        #
        # @api private
        def expression_syntax
          klass.cover_expression
        end

https://github.com/mbj/mutant/blob/feature/minitest-integration/lib/mutant/integration/minitest.rb#L54-L61

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Nov 3, 2015

Owner

@dogweather Ahh, I remember see the discussion in #330.

Owner

mbj commented Nov 3, 2015

@dogweather Ahh, I remember see the discussion in #330.

@mbj mbj added the enhancement label Nov 16, 2015

@mbj mbj added the in-progress label Nov 23, 2015

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Dec 20, 2015

Owner

Depends on #508 from software rusting.

Owner

mbj commented Dec 20, 2015

Depends on #508 from software rusting.

@mbj mbj removed the in-progress label Dec 20, 2015

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Dec 20, 2015

Owner

@dkubb Ready for review. Includes #508 so should not be merged before.

Owner

mbj commented Dec 20, 2015

@dkubb Ready for review. Includes #508 so should not be merged before.

Show outdated Hide outdated mutant-minitest.gemspec
Show outdated Hide outdated mutant-minitest.gemspec
Show outdated Hide outdated mutant-minitest.gemspec
def self.autorun
end
end # Minitest

This comment has been minimized.

@backus

backus Dec 21, 2015

Contributor

Could rewrite this monkey patch on one line with something like

Minitest.define_singleton_method(:autorun) { }
@backus

backus Dec 21, 2015

Contributor

Could rewrite this monkey patch on one line with something like

Minitest.define_singleton_method(:autorun) { }

This comment has been minimized.

@mbj

mbj Dec 21, 2015

Owner

Interesting idea to shorten it like this. I wounder how we can apply the axioms to deterministically prefer one form over the other. //cc @dkubb.

@mbj

mbj Dec 21, 2015

Owner

Interesting idea to shorten it like this. I wounder how we can apply the axioms to deterministically prefer one form over the other. //cc @dkubb.

This comment has been minimized.

@dkubb

dkubb Dec 28, 2015

Collaborator

I'm kind of partial to the def form myself. I generally prefer to use built-in language syntax over meta-programming methods, assuming the end result is equal.

@dkubb

dkubb Dec 28, 2015

Collaborator

I'm kind of partial to the def form myself. I generally prefer to use built-in language syntax over meta-programming methods, assuming the end result is equal.

This comment has been minimized.

@mbj

mbj Dec 29, 2015

Owner

built-in language syntax over meta-programming methods, assuming the end result is equal.

Yes. And the rule of least power supports this as the metaprogramming closure has a much wider scope. Using the primary syntax has "less power" (scope wise) so should be preferred here.

@mbj

mbj Dec 29, 2015

Owner

built-in language syntax over meta-programming methods, assuming the end result is equal.

Yes. And the rule of least power supports this as the metaprogramming closure has a much wider scope. Using the primary syntax has "less power" (scope wise) so should be preferred here.

This comment has been minimized.

@backus

backus Dec 29, 2015

Contributor

If you want to stick with the primary syntax here you could still cut two lines by instead writing

def Minitest.autorun
end

I know this syntax is usually frowned upon but it might make sense in a context like this. It also has the benefit then of not pinning YARD documentation to the toplevel Minitest namespace.

@backus

backus Dec 29, 2015

Contributor

If you want to stick with the primary syntax here you could still cut two lines by instead writing

def Minitest.autorun
end

I know this syntax is usually frowned upon but it might make sense in a context like this. It also has the benefit then of not pinning YARD documentation to the toplevel Minitest namespace.

This comment has been minimized.

@mbj

mbj Jan 2, 2016

Owner

Reopening the scope Minitest is not needed technically, but maybe for consistency?

@mbj

mbj Jan 2, 2016

Owner

Reopening the scope Minitest is not needed technically, but maybe for consistency?

@kbrock

This comment has been minimized.

Show comment
Hide comment
@kbrock

kbrock Dec 21, 2015

Contributor

Heh. would be cool if rake just took the test file names out of the gemspec.
Meta data to rule them all.

@backus Thanks for all the research

Contributor

kbrock commented Dec 21, 2015

Heh. would be cool if rake just took the test file names out of the gemspec.
Meta data to rule them all.

@backus Thanks for all the research

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Dec 21, 2015

Owner

Heh. would be cool if rake just took the test file names out of the gemspec.
Meta data to rule them all.

Thats also a good idea. But likely I'll not have this in the first release. Also a repo can contain multiple .gemspecs and you might want to select only one. But in general this is a good approach to reduce doubt and to use a single source of truth.

Owner

mbj commented Dec 21, 2015

Heh. would be cool if rake just took the test file names out of the gemspec.
Meta data to rule them all.

Thats also a good idea. But likely I'll not have this in the first release. Also a repo can contain multiple .gemspecs and you might want to select only one. But in general this is a good approach to reduce doubt and to use a single source of truth.

@chastell

This comment has been minimized.

Show comment
Hide comment
@chastell

chastell May 31, 2016

Contributor

Would Lovely Rufus and/or signore work? Both ~200 lines of code + ~500 lines of tests, Minitest-tested, RuboCop+Reek-clean (with some whitelisting) and I’d love to have them mutation-covered.

Contributor

chastell commented May 31, 2016

Would Lovely Rufus and/or signore work? Both ~200 lines of code + ~500 lines of tests, Minitest-tested, RuboCop+Reek-clean (with some whitelisting) and I’d love to have them mutation-covered.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj May 31, 2016

Owner

@chastell Both look okay. Can you confirm none of them has mandatory IO in the unit tests?

Owner

mbj commented May 31, 2016

@chastell Both look okay. Can you confirm none of them has mandatory IO in the unit tests?

@chastell

This comment has been minimized.

Show comment
Hide comment
@chastell

chastell Jun 1, 2016

Contributor

Gaah, signore does do IO, sorry. Lovely Rufus doesn’t (well, one test reads a fixture, but doesn’t write anything).

Contributor

chastell commented Jun 1, 2016

Gaah, signore does do IO, sorry. Lovely Rufus doesn’t (well, one test reads a fixture, but doesn’t write anything).

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jun 1, 2016

Owner

one test reads a fixture, but doesn’t write anything).

Thats fair, its "intend to be idempotent" so fine for parallelized mutation testing.

Owner

mbj commented Jun 1, 2016

one test reads a fixture, but doesn’t write anything).

Thats fair, its "intend to be idempotent" so fine for parallelized mutation testing.

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Jun 17, 2016

Contributor

I have added mutant to my minitest-tested project gir_ffi here: https://github.com/mvz/gir_ffi/pull/71/files

@chastell you're welcome to use the code there to add mutant to lovely_rufus.

Contributor

mvz commented Jun 17, 2016

I have added mutant to my minitest-tested project gir_ffi here: https://github.com/mvz/gir_ffi/pull/71/files

@chastell you're welcome to use the code there to add mutant to lovely_rufus.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jun 17, 2016

Owner

@mvz Thx for that. I'm time limited by an upcoming biological fork (AKA awaiting next baby, due any moment). Once forked I'll be able to pick up work on mutant. Also I'll reach out to @arthurnn in detail in the hope to get some very representative project using mutant.

Owner

mbj commented Jun 17, 2016

@mvz Thx for that. I'm time limited by an upcoming biological fork (AKA awaiting next baby, due any moment). Once forked I'll be able to pick up work on mutant. Also I'll reach out to @arthurnn in detail in the hope to get some very representative project using mutant.

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Jun 17, 2016

Contributor

@mbj congratulations!

Contributor

mvz commented Jun 17, 2016

@mbj congratulations!

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Jul 26, 2016

Contributor

The --since option doesn't seem to work with this integration.

Contributor

mvz commented Jul 26, 2016

The --since option doesn't seem to work with this integration.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jul 26, 2016

Owner

The --since option doesn't seem to work with this integration.

--since should only affect the subject selection, and not intersect at all with the integration, as the integration simply gets feed less mutations as less mutations are generated from a more restricted subject set.

On what way it does not work?

Owner

mbj commented Jul 26, 2016

The --since option doesn't seem to work with this integration.

--since should only affect the subject selection, and not intersect at all with the integration, as the integration simply gets feed less mutations as less mutations are generated from a more restricted subject set.

On what way it does not work?

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jul 26, 2016

Owner

@mbj congratulations!

Thx, we are still recovering efficient day by day organisation, so my OSS time is still negative.

Owner

mbj commented Jul 26, 2016

@mbj congratulations!

Thx, we are still recovering efficient day by day organisation, so my OSS time is still negative.

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Jul 26, 2016

Contributor

On what way it does not work?

The selection seems to always be empty. I'll see if I can find out more details of what goes wrong exactly. Good to know that it shouldn't depend on the integration.

Contributor

mvz commented Jul 26, 2016

On what way it does not work?

The selection seems to always be empty. I'll see if I can find out more details of what goes wrong exactly. Good to know that it shouldn't depend on the integration.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jul 26, 2016

Owner

The selection seems to always be empty. I'll see if I can find out more details of what goes wrong exactly. Good to know that it shouldn't depend on the integration.

Can you test if git diff $your_argument_given_to_since shows a diff that includes ruby code mutant would normally select on a full run without --since?

Owner

mbj commented Jul 26, 2016

The selection seems to always be empty. I'll see if I can find out more details of what goes wrong exactly. Good to know that it shouldn't depend on the integration.

Can you test if git diff $your_argument_given_to_since shows a diff that includes ruby code mutant would normally select on a full run without --since?

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Jul 27, 2016

Contributor

Can you test if git diff $your_argument_given_to_since shows a diff that includes ruby code mutant would normally select on a full run without --since?

Oh, that is a good check. The main problem seems to be that '*' doesn't work as a match expression. It works fine using, e.g., 'GirFFI*'. Conclusion: --since works as it should.

Contributor

mvz commented Jul 27, 2016

Can you test if git diff $your_argument_given_to_since shows a diff that includes ruby code mutant would normally select on a full run without --since?

Oh, that is a good check. The main problem seems to be that '*' doesn't work as a match expression. It works fine using, e.g., 'GirFFI*'. Conclusion: --since works as it should.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Jul 27, 2016

Owner

Oh, that is a good check. The main problem seems to be that '' doesn't work as a match expression. It works fine using, e.g., 'GirFFI'. Conclusion: --since works as it should.

* is dangerous as it would also select stuff that is not in your SUT, in theory it should work also. If it does not select any available subject, please open an issue. I do not recommend using * with --since as it causes a lot of work internally on matching.

Ideally go for a shared toplevel namespace for your entire app and select this via YourApp*.

Owner

mbj commented Jul 27, 2016

Oh, that is a good check. The main problem seems to be that '' doesn't work as a match expression. It works fine using, e.g., 'GirFFI'. Conclusion: --since works as it should.

* is dangerous as it would also select stuff that is not in your SUT, in theory it should work also. If it does not select any available subject, please open an issue. I do not recommend using * with --since as it causes a lot of work internally on matching.

Ideally go for a shared toplevel namespace for your entire app and select this via YourApp*.

@mvz

This comment has been minimized.

Show comment
Hide comment
@mvz

mvz Sep 18, 2016

Contributor

@chastell are you still planning to add mutant to lovely_rufus? If so, perhaps I can lend a hand.

Contributor

mvz commented Sep 18, 2016

@chastell are you still planning to add mutant to lovely_rufus? If so, perhaps I can lend a hand.

@chastell

This comment has been minimized.

Show comment
Hide comment
@chastell

chastell Sep 19, 2016

Contributor

@mvz Argh, thanks for the patience – yes, but I’m not sure when, as I just got back from vacation and will be super busy in the next three weeks, then hope to finally have a bit of time for open source. :( Any help more than appreciated, of course!

Contributor

chastell commented Sep 19, 2016

@mvz Argh, thanks for the patience – yes, but I’m not sure when, as I just got back from vacation and will be super busy in the next three weeks, then hope to finally have a bit of time for open source. :( Any help more than appreciated, of course!

@ch1c0t

This comment has been minimized.

Show comment
Hide comment
@ch1c0t

ch1c0t Oct 26, 2016

This pull request introduces a special syntax to choose expressions:

cover 'TestApp::Literal*'

I wonder, have you considered running all the tests every time? It would encourage users to create smaller, better decomposed gems(to avoid waiting for a very long time, we will have to think better about avoiding high coupling).

ch1c0t commented Oct 26, 2016

This pull request introduces a special syntax to choose expressions:

cover 'TestApp::Literal*'

I wonder, have you considered running all the tests every time? It would encourage users to create smaller, better decomposed gems(to avoid waiting for a very long time, we will have to think better about avoiding high coupling).

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Oct 26, 2016

Owner

I wonder, have you considered running all the tests every time? It would encourage users to create smaller, better decomposed gems(to avoid waiting for a very long time, we will have to think better about avoiding high coupling).

Does not scale for real world projects. If you want this behavior just use a top level cover '*'.

Owner

mbj commented Oct 26, 2016

I wonder, have you considered running all the tests every time? It would encourage users to create smaller, better decomposed gems(to avoid waiting for a very long time, we will have to think better about avoiding high coupling).

Does not scale for real world projects. If you want this behavior just use a top level cover '*'.

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Oct 26, 2016

Owner

Also there is the problem of implicit coverage, one I've to blog about ;) Feel free to meet me in Slack (see README for invite link) where I can explain it.

Owner

mbj commented Oct 26, 2016

Also there is the problem of implicit coverage, one I've to blog about ;) Feel free to meet me in Slack (see README for invite link) where I can explain it.

@kbrock

This comment has been minimized.

Show comment
Hide comment
@kbrock

kbrock Dec 23, 2016

Contributor

Is it possible to get this out there but just a beta / 0.0.1 version state?
So it will be out there albeit a little buggy?

There have been a number of changes a year ago, but after that, nothing really new is being introduced. So it feels like this is striving for perfection.

(granted, some would say that using mutant testing is striving for perfection...)

Contributor

kbrock commented Dec 23, 2016

Is it possible to get this out there but just a beta / 0.0.1 version state?
So it will be out there albeit a little buggy?

There have been a number of changes a year ago, but after that, nothing really new is being introduced. So it feels like this is striving for perfection.

(granted, some would say that using mutant testing is striving for perfection...)

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Dec 23, 2016

Owner

Is it possible to get this out there but just a beta / 0.0.1 version state?
So it will be out there albeit a little buggy?

There have been a number of changes a year ago, but after that, nothing really new is being introduced. So it feels like this is striving for perfection.

(granted, some would say that using mutant testing is striving for perfection...)

I've got negative time for OSS these days, very busy. I'd be fine if someone fixes it and releases as ${handle}-mutant-minitest, I'd reference it from the README.

Owner

mbj commented Dec 23, 2016

Is it possible to get this out there but just a beta / 0.0.1 version state?
So it will be out there albeit a little buggy?

There have been a number of changes a year ago, but after that, nothing really new is being introduced. So it feels like this is striving for perfection.

(granted, some would say that using mutant testing is striving for perfection...)

I've got negative time for OSS these days, very busy. I'd be fine if someone fixes it and releases as ${handle}-mutant-minitest, I'd reference it from the README.

@bbcoimbra

This comment has been minimized.

Show comment
Hide comment
@bbcoimbra

bbcoimbra Aug 31, 2017

Any news here?

bbcoimbra commented Aug 31, 2017

Any news here?

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Aug 31, 2017

Owner

Any news here?

no

Owner

mbj commented Aug 31, 2017

Any news here?

no

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Sep 1, 2017

Owner

To summarize my problem with this feature request:

  • I need to make a living, so I'm busy doing commercial work. This commercial work heavily relies on mutant, but there is no minitest in my projects. Hence there is no commercial incentive to create the integration in a quality level I find acceptable.
  • I do not have any OSS project of my interest that uses minitest, hence the same above applies again.

So if anyone really needs to see this feature happening: I'm a freelancing Ruby developer, and I was contracted to do other features for the OSS mutant before: I suggest to simply contact me and negotiate a fixed rate for minitest as integration + acceptance criteria.

Sorry to commercialize this at that point, but I really cannot afford to "sink" my time into this at the current time.

Owner

mbj commented Sep 1, 2017

To summarize my problem with this feature request:

  • I need to make a living, so I'm busy doing commercial work. This commercial work heavily relies on mutant, but there is no minitest in my projects. Hence there is no commercial incentive to create the integration in a quality level I find acceptable.
  • I do not have any OSS project of my interest that uses minitest, hence the same above applies again.

So if anyone really needs to see this feature happening: I'm a freelancing Ruby developer, and I was contracted to do other features for the OSS mutant before: I suggest to simply contact me and negotiate a fixed rate for minitest as integration + acceptance criteria.

Sorry to commercialize this at that point, but I really cannot afford to "sink" my time into this at the current time.

@chastell

This comment has been minimized.

Show comment
Hide comment
@chastell

chastell Dec 13, 2017

Contributor

Oh totally understood! ♥ I can alto relate 100%, as I was mostly off-open-source work for the past few months (and only now start to have bits of time now and then). I’ll take a look at this at some point (no promises when, unfortunately). Thanks!

Contributor

chastell commented Dec 13, 2017

Oh totally understood! ♥ I can alto relate 100%, as I was mostly off-open-source work for the past few months (and only now start to have bits of time now and then). I’ll take a look at this at some point (no promises when, unfortunately). Thanks!

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Dec 13, 2017

Owner

Oh totally understood! ♥ I can alto relate 100%, as I was mostly off-open-source work for the past few months (and only now start to have bits of time now and then). I’ll take a look at this at some point (no promises when, unfortunately). Thanks!

Thanks for voicing your support here.

Owner

mbj commented Dec 13, 2017

Oh totally understood! ♥ I can alto relate 100%, as I was mostly off-open-source work for the past few months (and only now start to have bits of time now and then). I’ll take a look at this at some point (no promises when, unfortunately). Thanks!

Thanks for voicing your support here.

@tubbo

This comment has been minimized.

Show comment
Hide comment
@tubbo

tubbo Sep 4, 2018

hi @mbj! I know you haven't looked at this in a while, but would you mind if I took over this work? I've been able to get this running on my local apps, the only real work I did was add .cover_expression to all test cases, which I could programmatically infer by the class name. This definitely worked for me and I was able to actually get mutations to run on my app, which is a fairly large Rails app using many engines and hundreds of models.

https://github.com/tubbo/mutant/tree/feature/minitest-integration

tubbo commented Sep 4, 2018

hi @mbj! I know you haven't looked at this in a while, but would you mind if I took over this work? I've been able to get this running on my local apps, the only real work I did was add .cover_expression to all test cases, which I could programmatically infer by the class name. This definitely worked for me and I was able to actually get mutations to run on my app, which is a fairly large Rails app using many engines and hundreds of models.

https://github.com/tubbo/mutant/tree/feature/minitest-integration

@mbj

This comment has been minimized.

Show comment
Hide comment
@mbj

mbj Sep 5, 2018

Owner

hi @mbj! I know you haven't looked at this in a while, but would you mind if I took over this work?

I'd be super happy if you did so.

Feel free to open a fresh PR. I'd close this one and reference it.

Owner

mbj commented Sep 5, 2018

hi @mbj! I know you haven't looked at this in a while, but would you mind if I took over this work?

I'd be super happy if you did so.

Feel free to open a fresh PR. I'd close this one and reference it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment