mutant 0.11.14 → 0.11.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/mutant +40 -35
- data/lib/mutant/cli/command/environment/run.rb +0 -7
- data/lib/mutant/cli/command/environment.rb +4 -5
- data/lib/mutant/cli/command.rb +24 -22
- data/lib/mutant/cli.rb +2 -4
- data/lib/mutant/config.rb +3 -15
- data/lib/mutant/version.rb +1 -1
- data/lib/mutant.rb +2 -3
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4f0fc5ddcee197485af9a005a41938eb5c056fe7112747e1ed5cefd7860e0d27
         | 
| 4 | 
            +
              data.tar.gz: eed2005705a2ff4a58c18390d7f59cf4eff85aa67b6c3846cb44b014e9f3fba9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ff9b7d961960b339405eda6b0bf16bbcc7ad0527d52787f7fe402c0689afea3f0e344697af9a87e5331c766b8002ccc03c34b517f47b3edea385948336889634
         | 
| 7 | 
            +
              data.tar.gz: bfe080deae82a8b5aae5a281515344ecfd526e8fafc1350727608b989404cf34c821fedd42e1e8c04b8bca744a28d0ad66f2d273871cc044197556eec8ebad48
         | 
    
        data/bin/mutant
    CHANGED
    
    | @@ -8,43 +8,48 @@ end | |
| 8 8 |  | 
| 9 9 | 
             
            require 'mutant'
         | 
| 10 10 |  | 
| 11 | 
            -
             | 
| 11 | 
            +
            Mutant::CLI.parse(
         | 
| 12 12 | 
             
              arguments: ARGV,
         | 
| 13 13 | 
             
              world:     Mutant::WORLD
         | 
| 14 | 
            -
            )
         | 
| 14 | 
            +
            ).either(
         | 
| 15 | 
            +
              ->(message) { Mutant::WORLD.stderr.puts(message); Kernel.exit(false) },
         | 
| 16 | 
            +
              # rubocop:disable Metrics/BlockLength
         | 
| 17 | 
            +
              lambda do |command|
         | 
| 18 | 
            +
                status =
         | 
| 19 | 
            +
                  if command.zombie?
         | 
| 20 | 
            +
                    $stderr.puts('Running mutant zombified!')
         | 
| 21 | 
            +
                    Mutant::Zombifier.call(
         | 
| 22 | 
            +
                      namespace:        :Zombie,
         | 
| 23 | 
            +
                      load_path:        $LOAD_PATH,
         | 
| 24 | 
            +
                      kernel:           Kernel,
         | 
| 25 | 
            +
                      pathname:         Pathname,
         | 
| 26 | 
            +
                      require_highjack: Mutant::RequireHighjack
         | 
| 27 | 
            +
                        .public_method(:call)
         | 
| 28 | 
            +
                        .to_proc
         | 
| 29 | 
            +
                        .curry
         | 
| 30 | 
            +
                        .call(Kernel),
         | 
| 31 | 
            +
                      root_require:     'mutant',
         | 
| 32 | 
            +
                      includes:         %w[
         | 
| 33 | 
            +
                        adamantium
         | 
| 34 | 
            +
                        anima
         | 
| 35 | 
            +
                        concord
         | 
| 36 | 
            +
                        equalizer
         | 
| 37 | 
            +
                        mprelude
         | 
| 38 | 
            +
                        mutant
         | 
| 39 | 
            +
                        unparser
         | 
| 40 | 
            +
                        variable
         | 
| 41 | 
            +
                      ]
         | 
| 42 | 
            +
                    )
         | 
| 15 43 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                   | 
| 21 | 
            -
             | 
| 22 | 
            -
                   | 
| 23 | 
            -
                  pathname:         Pathname,
         | 
| 24 | 
            -
                  require_highjack: Mutant::RequireHighjack
         | 
| 25 | 
            -
                    .public_method(:call)
         | 
| 26 | 
            -
                    .to_proc
         | 
| 27 | 
            -
                    .curry
         | 
| 28 | 
            -
                    .call(Kernel),
         | 
| 29 | 
            -
                  root_require:     'mutant',
         | 
| 30 | 
            -
                  includes:         %w[
         | 
| 31 | 
            -
                    adamantium
         | 
| 32 | 
            -
                    anima
         | 
| 33 | 
            -
                    concord
         | 
| 34 | 
            -
                    equalizer
         | 
| 35 | 
            -
                    mprelude
         | 
| 36 | 
            -
                    mutant
         | 
| 37 | 
            -
                    unparser
         | 
| 38 | 
            -
                    variable
         | 
| 39 | 
            -
                  ]
         | 
| 40 | 
            -
                )
         | 
| 44 | 
            +
                    Zombie::Mutant::CLI.parse(
         | 
| 45 | 
            +
                      arguments: ARGV,
         | 
| 46 | 
            +
                      world:     Zombie::Mutant::WORLD
         | 
| 47 | 
            +
                    ).from_right.call
         | 
| 48 | 
            +
                  else
         | 
| 49 | 
            +
                    command.call
         | 
| 50 | 
            +
                  end
         | 
| 41 51 |  | 
| 42 | 
            -
                 | 
| 43 | 
            -
                  arguments: ARGV,
         | 
| 44 | 
            -
                  world:     Zombie::Mutant::WORLD
         | 
| 45 | 
            -
                ).call
         | 
| 46 | 
            -
              else
         | 
| 47 | 
            -
                command.call
         | 
| 52 | 
            +
                Kernel.exit(status)
         | 
| 48 53 | 
             
              end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 54 | 
            +
              # rubocop:enable Metrics/BlockLength
         | 
| 55 | 
            +
            )
         | 
| @@ -19,7 +19,9 @@ module Mutant | |
| 19 19 |  | 
| 20 20 | 
             
                    def initialize(attributes)
         | 
| 21 21 | 
             
                      super(attributes)
         | 
| 22 | 
            -
                      @config = Config::DEFAULT
         | 
| 22 | 
            +
                      @config = Config::DEFAULT.with(
         | 
| 23 | 
            +
                        coverage_criteria: Config::CoverageCriteria::EMPTY
         | 
| 24 | 
            +
                      )
         | 
| 23 25 | 
             
                    end
         | 
| 24 26 |  | 
| 25 27 | 
             
                    def bootstrap
         | 
| @@ -37,7 +39,7 @@ module Mutant | |
| 37 39 | 
             
                        )
         | 
| 38 40 | 
             
                      end
         | 
| 39 41 |  | 
| 40 | 
            -
                      @config = Config.env.merge(file_config).merge(@config) | 
| 42 | 
            +
                      @config = Config.env.merge(file_config).merge(@config)
         | 
| 41 43 | 
             
                    end
         | 
| 42 44 |  | 
| 43 45 | 
             
                    def parse_remaining_arguments(arguments)
         | 
| @@ -67,9 +69,6 @@ module Mutant | |
| 67 69 | 
             
                    # rubocop:disable Metrics/MethodLength
         | 
| 68 70 | 
             
                    def add_environment_options(parser)
         | 
| 69 71 | 
             
                      parser.separator('Environment:')
         | 
| 70 | 
            -
                      parser.on('--zombie', 'Run mutant zombified') do
         | 
| 71 | 
            -
                        set(zombie: true)
         | 
| 72 | 
            -
                      end
         | 
| 73 72 | 
             
                      parser.on('-I', '--include DIRECTORY', 'Add DIRECTORY to $LOAD_PATH') do |directory|
         | 
| 74 73 | 
             
                        add(:includes, directory)
         | 
| 75 74 | 
             
                      end
         | 
    
        data/lib/mutant/cli/command.rb
    CHANGED
    
    | @@ -4,9 +4,7 @@ module Mutant | |
| 4 4 | 
             
              module CLI
         | 
| 5 5 | 
             
                # rubocop:disable Metrics/ClassLength
         | 
| 6 6 | 
             
                class Command
         | 
| 7 | 
            -
                  include AbstractType, Anima.new(:world, :main, :parent, : | 
| 8 | 
            -
             | 
| 9 | 
            -
                  include Equalizer.new(:parent, :arguments)
         | 
| 7 | 
            +
                  include AbstractType, Anima.new(:world, :main, :parent, :zombie)
         | 
| 10 8 |  | 
| 11 9 | 
             
                  OPTIONS     = [].freeze
         | 
| 12 10 | 
             
                  SUBCOMMANDS = [].freeze
         | 
| @@ -18,21 +16,20 @@ module Mutant | |
| 18 16 | 
             
                    define_method(:add_officious) {}
         | 
| 19 17 | 
             
                  end # OptionParser
         | 
| 20 18 |  | 
| 21 | 
            -
                  class FailParse < self
         | 
| 22 | 
            -
                    include Concord.new(:world, :message)
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    def call
         | 
| 25 | 
            -
                      world.stderr.puts(message)
         | 
| 26 | 
            -
                      false
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
             | 
| 30 19 | 
             
                  # Parse command
         | 
| 31 20 | 
             
                  #
         | 
| 32 21 | 
             
                  # @return [Command]
         | 
| 33 | 
            -
                   | 
| 34 | 
            -
             | 
| 22 | 
            +
                  #
         | 
| 23 | 
            +
                  # rubocop:disable Metrics/ParameterLists
         | 
| 24 | 
            +
                  def self.parse(arguments:, parent: nil, world:, zombie: false)
         | 
| 25 | 
            +
                    new(
         | 
| 26 | 
            +
                      main:   nil,
         | 
| 27 | 
            +
                      parent: parent,
         | 
| 28 | 
            +
                      world:  world,
         | 
| 29 | 
            +
                      zombie: zombie
         | 
| 30 | 
            +
                    ).__send__(:parse, arguments)
         | 
| 35 31 | 
             
                  end
         | 
| 32 | 
            +
                  # rubocop:enable Metrics/ParameterLists
         | 
| 36 33 |  | 
| 37 34 | 
             
                  # Command name
         | 
| 38 35 | 
             
                  #
         | 
| @@ -62,12 +59,7 @@ module Mutant | |
| 62 59 | 
             
                    [*parent&.full_name, self.class.command_name].join(' ')
         | 
| 63 60 | 
             
                  end
         | 
| 64 61 |  | 
| 65 | 
            -
                   | 
| 66 | 
            -
                  #
         | 
| 67 | 
            -
                  # @return [Bool]
         | 
| 68 | 
            -
                  def zombie?
         | 
| 69 | 
            -
                    false
         | 
| 70 | 
            -
                  end
         | 
| 62 | 
            +
                  alias_method :zombie?, :zombie
         | 
| 71 63 |  | 
| 72 64 | 
             
                  abstract_method :action
         | 
| 73 65 |  | 
| @@ -116,7 +108,7 @@ module Mutant | |
| 116 108 | 
             
                    end
         | 
| 117 109 | 
             
                  end
         | 
| 118 110 |  | 
| 119 | 
            -
                  def parse
         | 
| 111 | 
            +
                  def parse(arguments)
         | 
| 120 112 | 
             
                    Either
         | 
| 121 113 | 
             
                      .wrap_error(OptionParser::InvalidOption) { parser.order(arguments) }
         | 
| 122 114 | 
             
                      .lmap(&method(:with_help))
         | 
| @@ -129,6 +121,7 @@ module Mutant | |
| 129 121 | 
             
                    parser.separator(nil)
         | 
| 130 122 | 
             
                  end
         | 
| 131 123 |  | 
| 124 | 
            +
                  # rubocop:disable Metrics/MethodLength
         | 
| 132 125 | 
             
                  def add_global_options(parser)
         | 
| 133 126 | 
             
                    parser.separator("mutant version: #{VERSION}")
         | 
| 134 127 | 
             
                    parser.separator(nil)
         | 
| @@ -142,6 +135,10 @@ module Mutant | |
| 142 135 | 
             
                    parser.on('--version', 'Print mutants version') do
         | 
| 143 136 | 
             
                      capture_main { world.stdout.puts("mutant-#{VERSION}"); true }
         | 
| 144 137 | 
             
                    end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                    parser.on('--zombie', 'Run mutant zombified') do
         | 
| 140 | 
            +
                      @zombie = true
         | 
| 141 | 
            +
                    end
         | 
| 145 142 | 
             
                  end
         | 
| 146 143 |  | 
| 147 144 | 
             
                  def add_subcommands(parser)
         | 
| @@ -178,7 +175,12 @@ module Mutant | |
| 178 175 | 
             
                      Either::Left.new(with_help('Missing required subcommand!'))
         | 
| 179 176 | 
             
                    else
         | 
| 180 177 | 
             
                      find_command(command_name).bind do |command|
         | 
| 181 | 
            -
                        command.parse( | 
| 178 | 
            +
                        command.parse(
         | 
| 179 | 
            +
                          arguments: arguments,
         | 
| 180 | 
            +
                          parent:    self,
         | 
| 181 | 
            +
                          world:     world,
         | 
| 182 | 
            +
                          zombie:    zombie
         | 
| 183 | 
            +
                        )
         | 
| 182 184 | 
             
                      end
         | 
| 183 185 | 
             
                    end
         | 
| 184 186 | 
             
                  end
         | 
    
        data/lib/mutant/cli.rb
    CHANGED
    
    | @@ -6,10 +6,8 @@ module Mutant | |
| 6 6 | 
             
                # Parse command
         | 
| 7 7 | 
             
                #
         | 
| 8 8 | 
             
                # @return [Command]
         | 
| 9 | 
            -
                def self.parse( | 
| 10 | 
            -
                  Command::Root
         | 
| 11 | 
            -
                    .parse(world: world, **attributes)
         | 
| 12 | 
            -
                    .from_right { |message| Command::FailParse.new(world, message) }
         | 
| 9 | 
            +
                def self.parse(arguments:, world:)
         | 
| 10 | 
            +
                  Command::Root.parse(arguments: arguments, world: world)
         | 
| 13 11 | 
             
                end
         | 
| 14 12 | 
             
              end # CLI
         | 
| 15 13 | 
             
            end # Mutant
         | 
    
        data/lib/mutant/config.rb
    CHANGED
    
    | @@ -21,11 +21,10 @@ module Mutant | |
| 21 21 | 
             
                  :matcher,
         | 
| 22 22 | 
             
                  :mutation,
         | 
| 23 23 | 
             
                  :reporter,
         | 
| 24 | 
            -
                  :requires | 
| 25 | 
            -
                  :zombie
         | 
| 24 | 
            +
                  :requires
         | 
| 26 25 | 
             
                )
         | 
| 27 26 |  | 
| 28 | 
            -
                %i[fail_fast | 
| 27 | 
            +
                %i[fail_fast].each do |name|
         | 
| 29 28 | 
             
                  define_method(:"#{name}?") { public_send(name) }
         | 
| 30 29 | 
             
                end
         | 
| 31 30 |  | 
| @@ -74,8 +73,7 @@ module Mutant | |
| 74 73 | 
             
                    jobs:                  other.jobs || jobs,
         | 
| 75 74 | 
             
                    matcher:               matcher.merge(other.matcher),
         | 
| 76 75 | 
             
                    mutation:              mutation.merge(other.mutation),
         | 
| 77 | 
            -
                    requires:              requires + other.requires | 
| 78 | 
            -
                    zombie:                zombie || other.zombie
         | 
| 76 | 
            +
                    requires:              requires + other.requires
         | 
| 79 77 | 
             
                  )
         | 
| 80 78 | 
             
                end
         | 
| 81 79 | 
             
                # rubocop:enable Metrics/AbcSize
         | 
| @@ -100,16 +98,6 @@ module Mutant | |
| 100 98 | 
             
                  end
         | 
| 101 99 | 
             
                end
         | 
| 102 100 |  | 
| 103 | 
            -
                # Expand config with defaults
         | 
| 104 | 
            -
                #
         | 
| 105 | 
            -
                # @return [Config]
         | 
| 106 | 
            -
                def expand_defaults
         | 
| 107 | 
            -
                  with(
         | 
| 108 | 
            -
                    coverage_criteria: CoverageCriteria::DEFAULT.merge(coverage_criteria),
         | 
| 109 | 
            -
                    jobs:              jobs || 1
         | 
| 110 | 
            -
                  )
         | 
| 111 | 
            -
                end
         | 
| 112 | 
            -
             | 
| 113 101 | 
             
                def self.load_contents(env, path)
         | 
| 114 102 | 
             
                  Transform::Named
         | 
| 115 103 | 
             
                    .new(
         | 
    
        data/lib/mutant/version.rb
    CHANGED
    
    
    
        data/lib/mutant.rb
    CHANGED
    
    | @@ -273,7 +273,7 @@ module Mutant | |
| 273 273 | 
             
              # Reopen class to initialize constant to avoid dep circle
         | 
| 274 274 | 
             
              class Config
         | 
| 275 275 | 
             
                DEFAULT = new(
         | 
| 276 | 
            -
                  coverage_criteria:     Config::CoverageCriteria:: | 
| 276 | 
            +
                  coverage_criteria:     Config::CoverageCriteria::DEFAULT,
         | 
| 277 277 | 
             
                  expression_parser:     Expression::Parser.new([
         | 
| 278 278 | 
             
                    Expression::Descendants,
         | 
| 279 279 | 
             
                    Expression::Method,
         | 
| @@ -291,8 +291,7 @@ module Mutant | |
| 291 291 | 
             
                  matcher:               Matcher::Config::DEFAULT,
         | 
| 292 292 | 
             
                  mutation:              Mutation::Config::DEFAULT,
         | 
| 293 293 | 
             
                  reporter:              Reporter::CLI.build(WORLD.stdout),
         | 
| 294 | 
            -
                  requires:              EMPTY_ARRAY | 
| 295 | 
            -
                  zombie:                false
         | 
| 294 | 
            +
                  requires:              EMPTY_ARRAY
         | 
| 296 295 | 
             
                )
         | 
| 297 296 | 
             
              end # Config
         | 
| 298 297 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mutant
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.11. | 
| 4 | 
            +
              version: 0.11.15
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Markus Schirp
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-09-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: diff-lcs
         | 
| @@ -393,7 +393,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 393 393 | 
             
                - !ruby/object:Gem::Version
         | 
| 394 394 | 
             
                  version: '0'
         | 
| 395 395 | 
             
            requirements: []
         | 
| 396 | 
            -
            rubygems_version: 3. | 
| 396 | 
            +
            rubygems_version: 3.3.7
         | 
| 397 397 | 
             
            signing_key:
         | 
| 398 398 | 
             
            specification_version: 4
         | 
| 399 399 | 
             
            summary: ''
         |