Module Source: src\poodle\mutate.py

Project: poodle version 1.2.0   <Index
Mutants: 111, Found: 109, Not Found: 2, Timeout: 0, Error: 0
Module Score: 98.20%
1
"""Create Mutants."""
2

        
3
from __future__ import annotations
4

        
5
import ast
6
import logging
7
import re
8
from copy import deepcopy
9
from typing import TYPE_CHECKING, Any, Callable
10

        
11
from . import PoodleInputError
12
from .data_types import FileMutation, Mutant, Mutator, PoodleWork
13
from .mutators import (
14
    AugAssignMutator,
15
    BinaryOperationMutator,
16
    ComparisonMutator,
17
    DecoratorMutator,
18
    DictArrayCallMutator,
19
    FunctionCallMutator,
20
    KeywordMutator,
21
    LambdaReturnMutator,
22
    NumberMutator,
23
    ReturnMutator,
24
    StringMutator,
25
    UnaryOperationMutator,
26
)
27
from .util import dynamic_import, files_list_for_folder
28

        
29
if TYPE_CHECKING:
30
    from pathlib import Path
31

        
32
logger = logging.getLogger(__name__)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:32
@@ -29,7 +29,7 @@
 if TYPE_CHECKING:
     from pathlib import Path
 
-logger = logging.getLogger(__name__)
+logger = None
 
 builtin_mutators = {
     BinaryOperationMutator.mutator_name: BinaryOperationMutator,
33

        
34
builtin_mutators = {
35
    BinaryOperationMutator.mutator_name: BinaryOperationMutator,
36
    AugAssignMutator.mutator_name: AugAssignMutator,
37
    UnaryOperationMutator.mutator_name: UnaryOperationMutator,
38
    ComparisonMutator.mutator_name: ComparisonMutator,
39
    KeywordMutator.mutator_name: KeywordMutator,
40
    NumberMutator.mutator_name: NumberMutator,
41
    StringMutator.mutator_name: StringMutator,
42
    FunctionCallMutator.mutator_name: FunctionCallMutator,
43
    DictArrayCallMutator.mutator_name: DictArrayCallMutator,
44
    LambdaReturnMutator.mutator_name: LambdaReturnMutator,
45
    ReturnMutator.mutator_name: ReturnMutator,
46
    DecoratorMutator.mutator_name: DecoratorMutator,
47
}
48

        
49

        
50
def initialize_mutators(work: PoodleWork) -> list[Callable | Mutator]:
51
    """Initialize all mutators from standard list and from config options."""
52
    mutators: list[Any] = [
53
        mutator for name, mutator in builtin_mutators.items() if name not in work.config.skip_mutators

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:53
@@ -50,7 +50,7 @@
 def initialize_mutators(work: PoodleWork) -> list[Callable | Mutator]:
     """Initialize all mutators from standard list and from config options."""
     mutators: list[Any] = [
-        mutator for name, mutator in builtin_mutators.items() if name not in work.config.skip_mutators
+        mutator for name, mutator in builtin_mutators.items() if name in work.config.skip_mutators
     ]
     mutators.extend(work.config.add_mutators)
 

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:53
@@ -50,7 +50,7 @@
 def initialize_mutators(work: PoodleWork) -> list[Callable | Mutator]:
     """Initialize all mutators from standard list and from config options."""
     mutators: list[Any] = [
-        mutator for name, mutator in builtin_mutators.items() if name not in work.config.skip_mutators
+        mutator for name, mutator in None if name not in work.config.skip_mutators
     ]
     mutators.extend(work.config.add_mutators)
 
54
    ]
55
    mutators.extend(work.config.add_mutators)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:55
@@ -52,7 +52,7 @@
     mutators: list[Any] = [
         mutator for name, mutator in builtin_mutators.items() if name not in work.config.skip_mutators
     ]
-    mutators.extend(work.config.add_mutators)
+    None
 
     return [initialize_mutator(work, mut_def) for mut_def in mutators]
 
56

        
57
    return [initialize_mutator(work, mut_def) for mut_def in mutators]

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:57
@@ -54,7 +54,7 @@
     ]
     mutators.extend(work.config.add_mutators)
 
-    return [initialize_mutator(work, mut_def) for mut_def in mutators]
+    return [None for mut_def in mutators]
 
 
 def initialize_mutator(work: PoodleWork, mutator_def: Any) -> Callable | Mutator:  # noqa: ANN401

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:57
@@ -54,7 +54,7 @@
     ]
     mutators.extend(work.config.add_mutators)
 
-    return [initialize_mutator(work, mut_def) for mut_def in mutators]
+    return None
 
 
 def initialize_mutator(work: PoodleWork, mutator_def: Any) -> Callable | Mutator:  # noqa: ANN401
58

        
59

        
60
def initialize_mutator(work: PoodleWork, mutator_def: Any) -> Callable | Mutator:  # noqa: ANN401
61
    """Import and initialize a Mutator.
62

        
63
    mutator_def may be string of object to import, Callable, Mutator subclass or Mutator subclass instance.
64
    """
65
    logger.debug(mutator_def)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:65
@@ -62,7 +62,7 @@
 
     mutator_def may be string of object to import, Callable, Mutator subclass or Mutator subclass instance.
     """
-    logger.debug(mutator_def)
+    None
 
     if isinstance(mutator_def, str):
         try:
66

        
67
    if isinstance(mutator_def, str):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:67
@@ -64,7 +64,7 @@
     """
     logger.debug(mutator_def)
 
-    if isinstance(mutator_def, str):
+    if None:
         try:
             mutator_def = dynamic_import(mutator_def)
         except Exception as ex:  # noqa: BLE001
68
        try:
69
            mutator_def = dynamic_import(mutator_def)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:69
@@ -66,7 +66,7 @@
 
     if isinstance(mutator_def, str):
         try:
-            mutator_def = dynamic_import(mutator_def)
+            mutator_def = None
         except Exception as ex:  # noqa: BLE001
             msg = f"Import failed for mutator '{mutator_def}'"
             raise PoodleInputError(msg) from ex
70
        except Exception as ex:  # noqa: BLE001
71
            msg = f"Import failed for mutator '{mutator_def}'"

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:71
@@ -68,7 +68,7 @@
         try:
             mutator_def = dynamic_import(mutator_def)
         except Exception as ex:  # noqa: BLE001
-            msg = f"Import failed for mutator '{mutator_def}'"
+            msg = f""XXImport failed for mutator 'XX"{mutator_def}'"
             raise PoodleInputError(msg) from ex
 
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:71
@@ -68,7 +68,7 @@
         try:
             mutator_def = dynamic_import(mutator_def)
         except Exception as ex:  # noqa: BLE001
-            msg = f"Import failed for mutator '{mutator_def}'"
+            msg = f"Import failed for mutator '{mutator_def}"XX'XX""
             raise PoodleInputError(msg) from ex
 
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
72
            raise PoodleInputError(msg) from ex

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:72
@@ -69,7 +69,7 @@
             mutator_def = dynamic_import(mutator_def)
         except Exception as ex:  # noqa: BLE001
             msg = f"Import failed for mutator '{mutator_def}'"
-            raise PoodleInputError(msg) from ex
+            raise None from ex
 
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
73

        
74
    if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:74
@@ -71,7 +71,7 @@
             msg = f"Import failed for mutator '{mutator_def}'"
             raise PoodleInputError(msg) from ex
 
-    if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
+    if isinstance(mutator_def, type) or issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:74
@@ -71,7 +71,7 @@
             msg = f"Import failed for mutator '{mutator_def}'"
             raise PoodleInputError(msg) from ex
 
-    if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
+    if None and issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:74
@@ -71,7 +71,7 @@
             msg = f"Import failed for mutator '{mutator_def}'"
             raise PoodleInputError(msg) from ex
 
-    if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
+    if isinstance(mutator_def, type) and None:
         return mutator_def(config=work.config, echo=work.echo)
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):
75
        return mutator_def(config=work.config, echo=work.echo)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:75
@@ -72,7 +72,7 @@
             raise PoodleInputError(msg) from ex
 
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
-        return mutator_def(config=work.config, echo=work.echo)
+        return None
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):
         return mutator_def

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:75
@@ -72,7 +72,7 @@
             raise PoodleInputError(msg) from ex
 
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
-        return mutator_def(config=work.config, echo=work.echo)
+        return None
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):
         return mutator_def
76

        
77
    if callable(mutator_def) or isinstance(mutator_def, Mutator):

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:77
@@ -74,7 +74,7 @@
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
 
-    if callable(mutator_def) or isinstance(mutator_def, Mutator):
+    if callable(mutator_def) and isinstance(mutator_def, Mutator):
         return mutator_def
 
     msg = (

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:77
@@ -74,7 +74,7 @@
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
 
-    if callable(mutator_def) or isinstance(mutator_def, Mutator):
+    if None or isinstance(mutator_def, Mutator):
         return mutator_def
 
     msg = (

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:77
@@ -74,7 +74,7 @@
     if isinstance(mutator_def, type) and issubclass(mutator_def, Mutator):
         return mutator_def(config=work.config, echo=work.echo)
 
-    if callable(mutator_def) or isinstance(mutator_def, Mutator):
+    if callable(mutator_def) or None:
         return mutator_def
 
     msg = (
78
        return mutator_def

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:78
@@ -75,7 +75,7 @@
         return mutator_def(config=work.config, echo=work.echo)
 
     if callable(mutator_def) or isinstance(mutator_def, Mutator):
-        return mutator_def
+        return None
 
     msg = (
         f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
79

        
80
    msg = (
81
        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:81
@@ -78,7 +78,7 @@
         return mutator_def
 
     msg = (
-        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
+        f""XXUnable to create mutator 'XX"{mutator_def}' of type={type(mutator_def)}. "
         "Expected String, Callable, Mutator subclass or Mutator subclass instance."
     )
     raise PoodleInputError(msg)

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:81
@@ -78,7 +78,7 @@
         return mutator_def
 
     msg = (
-        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
+        f"Unable to create mutator '{mutator_def}"XX' of type=XX"{type(mutator_def)}. "
         "Expected String, Callable, Mutator subclass or Mutator subclass instance."
     )
     raise PoodleInputError(msg)

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:81
@@ -78,8 +78,7 @@
         return mutator_def
 
     msg = (
-        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
-        "Expected String, Callable, Mutator subclass or Mutator subclass instance."
+        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}'XX. Expected String, Callable, Mutator subclass or Mutator subclass instance.XX'
     )
     raise PoodleInputError(msg)
 

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:81
@@ -78,7 +78,7 @@
         return mutator_def
 
     msg = (
-        f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
+        f"Unable to create mutator '{mutator_def}' of type={None}. "
         "Expected String, Callable, Mutator subclass or Mutator subclass instance."
     )
     raise PoodleInputError(msg)
82
        "Expected String, Callable, Mutator subclass or Mutator subclass instance."
83
    )
84
    raise PoodleInputError(msg)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:84
@@ -81,7 +81,7 @@
         f"Unable to create mutator '{mutator_def}' of type={type(mutator_def)}. "
         "Expected String, Callable, Mutator subclass or Mutator subclass instance."
     )
-    raise PoodleInputError(msg)
+    raise None
 
 
 def create_mutants_for_all_mutators(work: PoodleWork) -> list[Mutant]:
85

        
86

        
87
def create_mutants_for_all_mutators(work: PoodleWork) -> list[Mutant]:
88
    """Create consolidated, flattened list of all mutants to be tried."""
89
    return [

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:89
@@ -86,16 +86,7 @@
 
 def create_mutants_for_all_mutators(work: PoodleWork) -> list[Mutant]:
     """Create consolidated, flattened list of all mutants to be tried."""
-    return [
-        mutant
-        for folder, files in get_target_files(work).items()
-        for file in files
-        for mutant in create_mutants_for_file(
-            work,
-            folder,
-            file,
-        )
-    ]
+    return None
 
 
 def get_target_files(work: PoodleWork) -> dict[Path, list[Path]]:
90
        mutant
91
        for folder, files in get_target_files(work).items()

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:91
@@ -88,7 +88,7 @@
     """Create consolidated, flattened list of all mutants to be tried."""
     return [
         mutant
-        for folder, files in get_target_files(work).items()
+        for folder, files in None
         for file in files
         for mutant in create_mutants_for_file(
             work,
92
        for file in files
93
        for mutant in create_mutants_for_file(

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:93
@@ -90,11 +90,7 @@
         mutant
         for folder, files in get_target_files(work).items()
         for file in files
-        for mutant in create_mutants_for_file(
-            work,
-            folder,
-            file,
-        )
+        for mutant in None
     ]
 
 
94
            work,
95
            folder,
96
            file,
97
        )
98
    ]
99

        
100

        
101
def get_target_files(work: PoodleWork) -> dict[Path, list[Path]]:
102
    """Create mapping from each source folder to all mutable files in that folder."""
103
    logger.debug(

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:103
@@ -100,12 +100,7 @@
 
 def get_target_files(work: PoodleWork) -> dict[Path, list[Path]]:
     """Create mapping from each source folder to all mutable files in that folder."""
-    logger.debug(
-        "get_target_files source_folders=%s only_files=%s file_filters=%s",
-        work.config.source_folders,
-        work.config.only_files,
-        work.config.source_folders,
-    )
+    None
 
     if work.config.only_files:
         out: dict[Path, list[Path]] = {}
104
        "get_target_files source_folders=%s only_files=%s file_filters=%s",

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:104
@@ -101,7 +101,7 @@
 def get_target_files(work: PoodleWork) -> dict[Path, list[Path]]:
     """Create mapping from each source folder to all mutable files in that folder."""
     logger.debug(
-        "get_target_files source_folders=%s only_files=%s file_filters=%s",
+        'XXget_target_files source_folders=%s only_files=%s file_filters=%sXX',
         work.config.source_folders,
         work.config.only_files,
         work.config.source_folders,
105
        work.config.source_folders,
106
        work.config.only_files,
107
        work.config.source_folders,
108
    )
109

        
110
    if work.config.only_files:
111
        out: dict[Path, list[Path]] = {}
112
        for folder in work.config.source_folders:
113
            out[folder] = []

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:113
@@ -110,7 +110,7 @@
     if work.config.only_files:
         out: dict[Path, list[Path]] = {}
         for folder in work.config.source_folders:
-            out[folder] = []
+            None = []
             for glob in work.config.only_files:
                 out[folder] += files_list_for_folder(
                     folder=folder,
114
            for glob in work.config.only_files:
115
                out[folder] += files_list_for_folder(

Status: Mutant Found

Mutator Name: AugAssign

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:115
@@ -112,12 +112,7 @@
         for folder in work.config.source_folders:
             out[folder] = []
             for glob in work.config.only_files:
-                out[folder] += files_list_for_folder(
-                    folder=folder,
-                    match_glob=glob,
-                    flags=work.config.file_flags,
-                    filter_globs=[],
-                )
+                out[folder] = files_list_for_folder(folder=folder, match_glob=glob, flags=work.config.file_flags, filter_globs=[])
         return out
     return {
         folder: files_list_for_folder(

Status: Mutant Found

Mutator Name: AugAssign

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:115
@@ -112,12 +112,7 @@
         for folder in work.config.source_folders:
             out[folder] = []
             for glob in work.config.only_files:
-                out[folder] += files_list_for_folder(
-                    folder=folder,
-                    match_glob=glob,
-                    flags=work.config.file_flags,
-                    filter_globs=[],
-                )
+                out[folder] -= files_list_for_folder(folder=folder, match_glob=glob, flags=work.config.file_flags, filter_globs=[])
         return out
     return {
         folder: files_list_for_folder(

Status: Mutant Found

Mutator Name: AugAssign

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:115
@@ -112,12 +112,7 @@
         for folder in work.config.source_folders:
             out[folder] = []
             for glob in work.config.only_files:
-                out[folder] += files_list_for_folder(
-                    folder=folder,
-                    match_glob=glob,
-                    flags=work.config.file_flags,
-                    filter_globs=[],
-                )
+                out[folder] *= files_list_for_folder(folder=folder, match_glob=glob, flags=work.config.file_flags, filter_globs=[])
         return out
     return {
         folder: files_list_for_folder(

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:115
@@ -112,12 +112,7 @@
         for folder in work.config.source_folders:
             out[folder] = []
             for glob in work.config.only_files:
-                out[folder] += files_list_for_folder(
-                    folder=folder,
-                    match_glob=glob,
-                    flags=work.config.file_flags,
-                    filter_globs=[],
-                )
+                out[folder] += None
         return out
     return {
         folder: files_list_for_folder(

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:115
@@ -112,7 +112,7 @@
         for folder in work.config.source_folders:
             out[folder] = []
             for glob in work.config.only_files:
-                out[folder] += files_list_for_folder(
+                None += files_list_for_folder(
                     folder=folder,
                     match_glob=glob,
                     flags=work.config.file_flags,
116
                    folder=folder,
117
                    match_glob=glob,
118
                    flags=work.config.file_flags,
119
                    filter_globs=[],
120
                )
121
        return out

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:121
@@ -118,7 +118,7 @@
                     flags=work.config.file_flags,
                     filter_globs=[],
                 )
-        return out
+        return None
     return {
         folder: files_list_for_folder(
             folder=folder,
122
    return {

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:122
@@ -119,15 +119,7 @@
                     filter_globs=[],
                 )
         return out
-    return {
-        folder: files_list_for_folder(
-            folder=folder,
-            match_glob="*.py",
-            flags=work.config.file_flags,
-            filter_globs=work.config.file_filters,
-        )
-        for folder in work.config.source_folders
-    }
+    return None
 
 
 def create_mutants_for_file(work: PoodleWork, folder: Path, file: Path) -> list[Mutant]:
123
        folder: files_list_for_folder(

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:123
@@ -120,12 +120,7 @@
                 )
         return out
     return {
-        folder: files_list_for_folder(
-            folder=folder,
-            match_glob="*.py",
-            flags=work.config.file_flags,
-            filter_globs=work.config.file_filters,
-        )
+        folder: None
         for folder in work.config.source_folders
     }
 
124
            folder=folder,
125
            match_glob="*.py",

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:125
@@ -122,7 +122,7 @@
     return {
         folder: files_list_for_folder(
             folder=folder,
-            match_glob="*.py",
+            match_glob='XX*.pyXX',
             flags=work.config.file_flags,
             filter_globs=work.config.file_filters,
         )
126
            flags=work.config.file_flags,
127
            filter_globs=work.config.file_filters,
128
        )
129
        for folder in work.config.source_folders
130
    }
131

        
132

        
133
def create_mutants_for_file(work: PoodleWork, folder: Path, file: Path) -> list[Mutant]:
134
    """Create all mutants for specified file.
135

        
136
    * Parse ast from file.
137
    * Pass file ast to all mutators.
138
    * Apply Filters.
139
    * Compile list of Mutants.
140
    """
141
    logger.debug("Create Mutants for file %s", file)

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:141
@@ -138,7 +138,7 @@
     * Apply Filters.
     * Compile list of Mutants.
     """
-    logger.debug("Create Mutants for file %s", file)
+    logger.debug('XXCreate Mutants for file %sXX', file)
 
     parsed_ast = ast.parse(file.read_bytes(), file)
     file_lines = file.read_text("utf-8").splitlines()

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:141
@@ -138,7 +138,7 @@
     * Apply Filters.
     * Compile list of Mutants.
     """
-    logger.debug("Create Mutants for file %s", file)
+    None
 
     parsed_ast = ast.parse(file.read_bytes(), file)
     file_lines = file.read_text("utf-8").splitlines()
142

        
143
    parsed_ast = ast.parse(file.read_bytes(), file)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:143
@@ -140,7 +140,7 @@
     """
     logger.debug("Create Mutants for file %s", file)
 
-    parsed_ast = ast.parse(file.read_bytes(), file)
+    parsed_ast = None
     file_lines = file.read_text("utf-8").splitlines()
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
144
    file_lines = file.read_text("utf-8").splitlines()

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:144
@@ -141,7 +141,7 @@
     logger.debug("Create Mutants for file %s", file)
 
     parsed_ast = ast.parse(file.read_bytes(), file)
-    file_lines = file.read_text("utf-8").splitlines()
+    file_lines = file.read_text('XXutf-8XX').splitlines()
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:144
@@ -141,7 +141,7 @@
     logger.debug("Create Mutants for file %s", file)
 
     parsed_ast = ast.parse(file.read_bytes(), file)
-    file_lines = file.read_text("utf-8").splitlines()
+    file_lines = None
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):
145

        
146
    def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
147
        if isinstance(mutator, Mutator):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:147
@@ -144,7 +144,7 @@
     file_lines = file.read_text("utf-8").splitlines()
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
-        if isinstance(mutator, Mutator):
+        if None:
             return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
         return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
 
148
            return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:148
@@ -145,7 +145,7 @@
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):
-            return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
+            return None
         return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
 
     mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:148
@@ -145,7 +145,7 @@
 
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):
-            return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
+            return None
         return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
 
     mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]
149
        return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:149
@@ -146,7 +146,7 @@
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):
             return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
-        return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
+        return None
 
     mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:149
@@ -146,7 +146,7 @@
     def call_mutator(mutator: Callable | Mutator) -> list[FileMutation]:
         if isinstance(mutator, Mutator):
             return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
-        return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
+        return None
 
     mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
150

        
151
    mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:151
@@ -148,7 +148,7 @@
             return mutator.create_mutations(parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
         return mutator(config=work.config, parsed_ast=deepcopy(parsed_ast), file_lines=deepcopy(file_lines))
 
-    mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]
+    mutant_nested_list = [None for mutator in work.mutators]
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
 
     line_filters = parse_filters(file_lines)
152
    file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
153

        
154
    line_filters = parse_filters(file_lines)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:154
@@ -151,7 +151,7 @@
     mutant_nested_list = [call_mutator(mutator) for mutator in work.mutators]
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
 
-    line_filters = parse_filters(file_lines)
+    line_filters = None
     file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]
 
     return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]
155
    file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]

Status: Mutant Found

Mutator Name: UnaryOp

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:155
@@ -152,7 +152,7 @@
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
 
     line_filters = parse_filters(file_lines)
-    file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]
+    file_mutants = [mut for mut in file_mutants if is_filtered(line_filters, mut)]
 
     return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]
 

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:155
@@ -152,7 +152,7 @@
     file_mutants = [mutant for mutant_list in mutant_nested_list if mutant_list for mutant in mutant_list]
 
     line_filters = parse_filters(file_lines)
-    file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]
+    file_mutants = [mut for mut in file_mutants if not None]
 
     return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]
 
156

        
157
    return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:157
@@ -154,7 +154,7 @@
     line_filters = parse_filters(file_lines)
     file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]
 
-    return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]
+    return [None for file_mutant in file_mutants]
 
 
 def parse_filters(file_lines: list[str]) -> dict[int, set[str]]:

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:157
@@ -154,7 +154,7 @@
     line_filters = parse_filters(file_lines)
     file_mutants = [mut for mut in file_mutants if not is_filtered(line_filters, mut)]
 
-    return [Mutant(source_folder=folder, source_file=file, **vars(file_mutant)) for file_mutant in file_mutants]
+    return None
 
 
 def parse_filters(file_lines: list[str]) -> dict[int, set[str]]:
158

        
159

        
160
def parse_filters(file_lines: list[str]) -> dict[int, set[str]]:
161
    r"""Parse text for comments to filter mutations.
162

        
163
    Block all mutations:
164

        
165
    \# pragma: no mutate
166

        
167
    \# nomut
168

        
169
    \# nomut: start
170

        
171
    \# nomut: end
172

        
173
    Block only specific mutations:
174

        
175
    \# nomut: mutator,mutator
176
    """
177
    line_filters: dict[int, set[str]] = {}
178

        
179
    no_mut_on = False

Status: Mutant Found

Mutator Name: Keyword

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:179
@@ -176,7 +176,7 @@
     """
     line_filters: dict[int, set[str]] = {}
 
-    no_mut_on = False
+    no_mut_on = True
 
     for lineno, line in enumerate(file_lines, start=1):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
180

        
181
    for lineno, line in enumerate(file_lines, start=1):

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:181
@@ -178,7 +178,7 @@
 
     no_mut_on = False
 
-    for lineno, line in enumerate(file_lines, start=1):
+    for lineno, line in enumerate(file_lines, start=2):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:181
@@ -178,7 +178,7 @@
 
     no_mut_on = False
 
-    for lineno, line in enumerate(file_lines, start=1):
+    for lineno, line in enumerate(file_lines, start=0):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:181
@@ -178,7 +178,7 @@
 
     no_mut_on = False
 
-    for lineno, line in enumerate(file_lines, start=1):
+    for lineno, line in None:
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
182
        if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:182
@@ -179,7 +179,7 @@
     no_mut_on = False
 
     for lineno, line in enumerate(file_lines, start=1):
-        if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
+        if re.search('XX#\\s*pragma:\\s*no mutate[\\s#$]*XX', line):
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:182
@@ -179,7 +179,7 @@
     no_mut_on = False
 
     for lineno, line in enumerate(file_lines, start=1):
-        if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
+        if None:
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
183
            add_line_filter(line_filters, lineno, "all")

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:183
@@ -180,7 +180,7 @@
 
     for lineno, line in enumerate(file_lines, start=1):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
-            add_line_filter(line_filters, lineno, "all")
+            add_line_filter(line_filters, lineno, 'XXallXX')
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:183
@@ -180,7 +180,7 @@
 
     for lineno, line in enumerate(file_lines, start=1):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
-            add_line_filter(line_filters, lineno, "all")
+            None
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
184
        no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:184
@@ -181,7 +181,7 @@
     for lineno, line in enumerate(file_lines, start=1):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
             add_line_filter(line_filters, lineno, "all")
-        no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
+        no_mut_filter: list[str] = re.findall('XX#\\s*nomut:?\\s*([A-Za-z0-9,\\s]*)[#$]*XX', line)
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
             no_mut_on = True

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:184
@@ -181,7 +181,7 @@
     for lineno, line in enumerate(file_lines, start=1):
         if re.search(r"#\s*pragma:\s*no mutate[\s#$]*", line):
             add_line_filter(line_filters, lineno, "all")
-        no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
+        no_mut_filter: list[str] = None
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
             no_mut_on = True
185

        
186
        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter or no_mut_filter[0].strip().lower() in ('start', 'on'):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and no_mut_filter[1].strip().lower() in ("start", "on"):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Not Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and no_mut_filter[-1].strip().lower() in ("start", "on"):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and no_mut_filter[0].strip().lower() in ('XXstartXX', "on"):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", 'XXonXX'):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and None in ("start", "on"):
             no_mut_on = True
 
         if no_mut_on:

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:186
@@ -183,7 +183,7 @@
             add_line_filter(line_filters, lineno, "all")
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
+        if no_mut_filter and None.strip().lower() in ("start", "on"):
             no_mut_on = True
 
         if no_mut_on:
187
            no_mut_on = True

Status: Mutant Found

Mutator Name: Keyword

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:187
@@ -184,7 +184,7 @@
         no_mut_filter: list[str] = re.findall(r"#\s*nomut:?\s*([A-Za-z0-9,\s]*)[#$]*", line)
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("start", "on"):
-            no_mut_on = True
+            no_mut_on = False
 
         if no_mut_on:
             add_line_filter(line_filters, lineno, "all")
188

        
189
        if no_mut_on:
190
            add_line_filter(line_filters, lineno, "all")

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:190
@@ -187,7 +187,7 @@
             no_mut_on = True
 
         if no_mut_on:
-            add_line_filter(line_filters, lineno, "all")
+            add_line_filter(line_filters, lineno, 'XXallXX')
         else:
             for mutators in no_mut_filter:
                 for mutator in mutators.split(","):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:190
@@ -187,7 +187,7 @@
             no_mut_on = True
 
         if no_mut_on:
-            add_line_filter(line_filters, lineno, "all")
+            None
         else:
             for mutators in no_mut_filter:
                 for mutator in mutators.split(","):
191
        else:
192
            for mutators in no_mut_filter:
193
                for mutator in mutators.split(","):

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:193
@@ -190,7 +190,7 @@
             add_line_filter(line_filters, lineno, "all")
         else:
             for mutators in no_mut_filter:
-                for mutator in mutators.split(","):
+                for mutator in mutators.split('XX,XX'):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:193
@@ -190,7 +190,7 @@
             add_line_filter(line_filters, lineno, "all")
         else:
             for mutators in no_mut_filter:
-                for mutator in mutators.split(","):
+                for mutator in None:
                     add_line_filter(line_filters, lineno, mutator.strip())
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
194
                    add_line_filter(line_filters, lineno, mutator.strip())

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:194
@@ -191,7 +191,7 @@
         else:
             for mutators in no_mut_filter:
                 for mutator in mutators.split(","):
-                    add_line_filter(line_filters, lineno, mutator.strip())
+                    None
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
             no_mut_on = False
195

        
196
        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter or no_mut_filter[0].strip().lower() in ('end', 'off'):
             no_mut_on = False
 
     return line_filters

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and no_mut_filter[1].strip().lower() in ("end", "off"):
             no_mut_on = False
 
     return line_filters

Status: Mutant Not Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and no_mut_filter[-1].strip().lower() in ("end", "off"):
             no_mut_on = False
 
     return line_filters

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and no_mut_filter[0].strip().lower() in ('XXendXX', "off"):
             no_mut_on = False
 
     return line_filters

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", 'XXoffXX'):
             no_mut_on = False
 
     return line_filters

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and None in ("end", "off"):
             no_mut_on = False
 
     return line_filters

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:196
@@ -193,7 +193,7 @@
                 for mutator in mutators.split(","):
                     add_line_filter(line_filters, lineno, mutator.strip())
 
-        if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
+        if no_mut_filter and None.strip().lower() in ("end", "off"):
             no_mut_on = False
 
     return line_filters
197
            no_mut_on = False

Status: Mutant Found

Mutator Name: Keyword

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:197
@@ -194,7 +194,7 @@
                     add_line_filter(line_filters, lineno, mutator.strip())
 
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
-            no_mut_on = False
+            no_mut_on = True
 
     return line_filters
 
198

        
199
    return line_filters

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:199
@@ -196,7 +196,7 @@
         if no_mut_filter and no_mut_filter[0].strip().lower() in ("end", "off"):
             no_mut_on = False
 
-    return line_filters
+    return None
 
 
 def add_line_filter(line_filters: dict[int, set[str]], lineno: int, mutator: str) -> None:
200

        
201

        
202
def add_line_filter(line_filters: dict[int, set[str]], lineno: int, mutator: str) -> None:
203
    """Add filter to line_filters dict."""
204
    if lineno not in line_filters:

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:204
@@ -201,7 +201,7 @@
 
 def add_line_filter(line_filters: dict[int, set[str]], lineno: int, mutator: str) -> None:
     """Add filter to line_filters dict."""
-    if lineno not in line_filters:
+    if lineno in line_filters:
         line_filters[lineno] = set()
     line_filters[lineno].add("all" if mutator == "" else mutator.lower())
 
205
        line_filters[lineno] = set()

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:205
@@ -202,7 +202,7 @@
 def add_line_filter(line_filters: dict[int, set[str]], lineno: int, mutator: str) -> None:
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
-        line_filters[lineno] = set()
+        line_filters[lineno] = None
     line_filters[lineno].add("all" if mutator == "" else mutator.lower())
 
 

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:205
@@ -202,7 +202,7 @@
 def add_line_filter(line_filters: dict[int, set[str]], lineno: int, mutator: str) -> None:
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
-        line_filters[lineno] = set()
+        None = set()
     line_filters[lineno].add("all" if mutator == "" else mutator.lower())
 
 
206
    line_filters[lineno].add("all" if mutator == "" else mutator.lower())

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:206
@@ -203,7 +203,7 @@
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
         line_filters[lineno] = set()
-    line_filters[lineno].add("all" if mutator == "" else mutator.lower())
+    line_filters[lineno].add("all" if mutator != '' else mutator.lower())
 
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:206
@@ -203,7 +203,7 @@
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
         line_filters[lineno] = set()
-    line_filters[lineno].add("all" if mutator == "" else mutator.lower())
+    line_filters[lineno].add("all" if mutator == 'XXXX' else mutator.lower())
 
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:206
@@ -203,7 +203,7 @@
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
         line_filters[lineno] = set()
-    line_filters[lineno].add("all" if mutator == "" else mutator.lower())
+    line_filters[lineno].add('XXallXX' if mutator == "" else mutator.lower())
 
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:206
@@ -203,7 +203,7 @@
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
         line_filters[lineno] = set()
-    line_filters[lineno].add("all" if mutator == "" else mutator.lower())
+    None
 
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:206
@@ -203,7 +203,7 @@
     """Add filter to line_filters dict."""
     if lineno not in line_filters:
         line_filters[lineno] = set()
-    line_filters[lineno].add("all" if mutator == "" else mutator.lower())
+    None.add("all" if mutator == "" else mutator.lower())
 
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
207

        
208

        
209
def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
210
    """Identify if this mutant matches any filters."""
211
    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):

Status: Mutant Found

Mutator Name: BinOp

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:211
@@ -208,7 +208,7 @@
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
-    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
+    for lineno in range(file_mutant.lineno, file_mutant.end_lineno - 1):
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):

Status: Mutant Found

Mutator Name: BinOp

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:211
@@ -208,7 +208,7 @@
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
-    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
+    for lineno in range(file_mutant.lineno, file_mutant.end_lineno * 1):
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:211
@@ -208,7 +208,7 @@
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
-    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
+    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 2):
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):

Status: Mutant Found

Mutator Name: Number

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:211
@@ -208,7 +208,7 @@
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
-    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
+    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 0):
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:211
@@ -208,7 +208,7 @@
 
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
-    for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
+    for lineno in None:
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
212
        if lineno in line_filters and (

Status: Mutant Found

Mutator Name: Compare

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:212
@@ -209,8 +209,6 @@
 def is_filtered(line_filters: dict[int, set[str]], file_mutant: FileMutation) -> bool:
     """Identify if this mutant matches any filters."""
     for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
-        if lineno in line_filters and (
-            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
-        ):
+        if lineno in line_filters or ('all' in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]):
             return True
     return False
213
            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]

Status: Mutant Found

Mutator Name: String

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:213
@@ -210,7 +210,7 @@
     """Identify if this mutant matches any filters."""
     for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
         if lineno in line_filters and (
-            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
+            'XXallXX' in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
             return True
     return False

Status: Mutant Found

Mutator Name: FuncCall

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:213
@@ -210,7 +210,7 @@
     """Identify if this mutant matches any filters."""
     for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
         if lineno in line_filters and (
-            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
+            "all" in line_filters[lineno] or None in line_filters[lineno]
         ):
             return True
     return False

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:213
@@ -210,7 +210,7 @@
     """Identify if this mutant matches any filters."""
     for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
         if lineno in line_filters and (
-            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
+            "all" in None or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
             return True
     return False

Status: Mutant Found

Mutator Name: DictArray

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:213
@@ -210,7 +210,7 @@
     """Identify if this mutant matches any filters."""
     for lineno in range(file_mutant.lineno, file_mutant.end_lineno + 1):
         if lineno in line_filters and (
-            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
+            "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in None
         ):
             return True
     return False
214
        ):
215
            return True

Status: Mutant Found

Mutator Name: Keyword

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:215
@@ -212,5 +212,5 @@
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
-            return True
+            return False
     return False

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:215
@@ -212,5 +212,5 @@
         if lineno in line_filters and (
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
-            return True
+            return None
     return False
216
    return False

Status: Mutant Found

Mutator Name: Keyword

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:216
@@ -213,4 +213,4 @@
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
             return True
-    return False
+    return True

Status: Mutant Found

Mutator Name: Return

Unified Diff:

--- src\poodle\mutate.py
+++ [Mutant] src\poodle\mutate.py:216
@@ -213,4 +213,4 @@
             "all" in line_filters[lineno] or file_mutant.mutator_name.lower() in line_filters[lineno]
         ):
             return True
-    return False
+    return None