Skip to content

Commit

Permalink
Move tests to root package directory
Browse files Browse the repository at this point in the history
  • Loading branch information
albertas committed Apr 7, 2024
1 parent 04bbab9 commit 88ed4e2
Show file tree
Hide file tree
Showing 41 changed files with 95 additions and 73 deletions.
23 changes: 21 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
.PHONY: check publish test ruff fix mypy black deadcode

ifndef VERBOSE
MAKEFLAGS += --no-print-directory
endif

check: venv
cd deadcode && make check
check: test ruff mypy black deadcode

venv:
python3.8 -m venv venv
Expand All @@ -15,3 +16,21 @@ publish: venv
rm -fr dist/*
venv/bin/hatch build
venv/bin/hatch publish

test: venv
venv/bin/pytest -vv $(PYTEST_ME_PLEASE)

ruff: venv
venv/bin/ruff check deadcode tests

fix: venv
venv/bin/ruff deadcode tests --fix

mypy: venv
venv/bin/mypy deadcode

black: venv
venv/bin/black deadcode tests

deadcode: venv
venv/bin/deadcode deadcode tests -v
24 changes: 0 additions & 24 deletions deadcode/tests/cli_args/test_exclude.py

This file was deleted.

24 changes: 12 additions & 12 deletions deadcode/tests/base.py → deadcode/utils/base_test_case.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from pathlib import Path
from typing import Dict, List, Union
from typing import Any, Dict, List, Optional, Union
from unittest import TestCase
from unittest.mock import MagicMock, patch

Expand All @@ -17,24 +17,24 @@ def patch(self, path: str) -> MagicMock:
self.addCleanup(patcher.stop)
return patcher.start()

def _get_filenames(self, *args, **kwargs) -> List[str]:
def _get_filenames(self, *args: Any, **kwargs: Any) -> List[str]:
return list(self.files.keys())

def _read_file_side_effect(self, filename: Union[str, Path], *args, **kwargs) -> MagicMock:
def _read_file_side_effect(self, filename: Union[str, Path], *args: Any, **kwargs: Any) -> MagicMock:
mock = MagicMock()
mock.filename = str(filename)

def cache_file_content(file_content: str):
def cache_file_content(file_content: str) -> int:
self.updated_files[mock.filename] = file_content
return len(file_content)

file_content = fix_indent(self.files[mock.filename])
mock.__enter__().read.return_value = file_content
mock.__enter__().readlines.return_value = [f"{line}\n" for line in file_content.split("\n")]
mock.__enter__().write.side_effect = cache_file_content
if file_content := fix_indent(self.files[mock.filename]):
mock.__enter__().read.return_value = file_content
mock.__enter__().readlines.return_value = [f"{line}\n" for line in file_content.split("\n")]
mock.__enter__().write.side_effect = cache_file_content
return mock

def setUp(self):
def setUp(self) -> None:
self.updated_files: Dict[str, str] = {}

self.find_python_filenames_mock = self.patch("deadcode.cli.find_python_filenames")
Expand All @@ -50,7 +50,7 @@ def setUp(self):

self.args = Args()

def assertFiles(self, files: Dict[str, str], removed: List[str] = None):
def assertFiles(self, files: Dict[str, str], removed: Optional[List[str]] = None) -> None:
expected_removed_files = removed
expected_files = files

Expand All @@ -73,10 +73,10 @@ def assertFiles(self, files: Dict[str, str], removed: List[str] = None):
for filename, content in expected_files.items():
self.assertEqual(
fix_indent(content),
fix_indent(self.updated_files.get(filename, unchanged_files.get(filename)) or ""),
fix_indent(self.updated_files.get(filename) or unchanged_files.get(filename) or ""),
)

def assertUpdatedFiles(self, expected_updated_files: Dict[str, str]):
def assertUpdatedFiles(self, expected_updated_files: Dict[str, str]) -> None:
"""Checks if updated files match expected updated files."""

self.assertListEqual(list(expected_updated_files.keys()), list(self.updated_files.keys()))
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ ignore_names = [
"show",
"visit_*",
]
ignore_names_in_files = [
"deadcode/utils/base_test_case.py"
]

exclude = ["tests"]

Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
from deadcode.actions.find_python_filenames import find_python_filenames
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestFindPythonFilenames(BaseTestCase):
def test_file_detection(self):
self.args.paths = ["./cli.py"]
self.args.paths = ["deadcode/cli.py"]
filenames = find_python_filenames(args=self.args)
self.assertListEqual(filenames, ["cli.py"])
self.assertListEqual(filenames, ["deadcode/cli.py"])

def test_exclude_directories(self):
self.args.paths = ["."]
self.args.paths = ["deadcode/."]
filenames = find_python_filenames(args=self.args)
self.assertTrue(any(f.startswith("tests") for f in filenames))
self.assertTrue(any(f.startswith("utils") for f in filenames))
self.assertTrue(any(f.startswith("deadcode/cli.py") for f in filenames))
self.assertTrue(any(f.startswith("deadcode/utils") for f in filenames))

self.args.exclude = ["tests", "utils"]
self.args.exclude = ["deadcode/utils", "deadcode/cli.py"]
filenames = find_python_filenames(args=self.args)
self.assertFalse(any(f.startswith("tests") for f in filenames))
self.assertFalse(any(f.startswith("utils") for f in filenames))
self.assertFalse(any(f.startswith("deadcode/cli.py") for f in filenames))
self.assertFalse(any(f.startswith("deadcode/utils") for f in filenames))

def test_exclude_files(self):
self.args.paths = ["."]
self.args.paths = ["deadcode"]
filenames = find_python_filenames(args=self.args)
self.assertTrue("cli.py" in filenames)
self.assertTrue("deadcode/cli.py" in filenames)

self.args.exclude = ["cli.py"]
self.args.exclude = ["deadcode/cli.py"]
filenames = find_python_filenames(args=self.args)
self.assertFalse("cli.py" in filenames)
self.assertFalse("deadcode/cli.py" in filenames)

def test_provided_path_does_not_exist(self):
self.args.paths = ["path_does_not_exist"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.actions.merge_overlaping_file_parts import merge_overlaping_file_parts, does_overlap, merge_parts
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestMergeOverlapingFileParts(BaseTestCase):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase
from deadcode.utils.fix_indent import fix_indent


Expand Down
24 changes: 24 additions & 0 deletions tests/cli_args/test_exclude.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from deadcode.utils.base_test_case import BaseTestCase
from deadcode.actions.find_python_filenames import find_python_filenames


class TestExcludeCliArgUnit(BaseTestCase):
def test_exclude_directories(self):
self.args.paths = ["deadcode/."]
filenames = find_python_filenames(args=self.args)
self.assertTrue(any(f.startswith("deadcode/cli.py") for f in filenames))
self.assertTrue(any(f.startswith("deadcode/utils") for f in filenames))

self.args.exclude = ["deadcode/utils", "deadcode/cli.py"]
filenames = find_python_filenames(args=self.args)
self.assertFalse(any(f.startswith("deadcode/cli.py") for f in filenames))
self.assertFalse(any(f.startswith("deadcode/utils") for f in filenames))

def test_exclude_files(self):
self.args.paths = ["deadcode/."]
filenames = find_python_filenames(args=self.args)
self.assertTrue("deadcode/cli.py" in filenames)

self.args.exclude = ["deadcode/cli.py"]
filenames = find_python_filenames(args=self.args)
self.assertFalse("deadcode/cli.py" in filenames)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestFixCliOption(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestIgnoreDefinitionIfInheritsFrom(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestIgnoreDefinitionsByPattern(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestIgnoreDefinitionIfInheritsFrom(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class IgnoreNamesByPatternTests(BaseTestCase):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""

from deadcode.actions.parse_arguments import parse_arguments
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class CommandLineArgParsingTests(BaseTestCase):
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestAssignmentExpressionRemoval(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestClassDefRemoval(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestAssignmentExpressionRemoval(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestUnusedMethodRemoval(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


@skip
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestUnreachableCodeIsNotRemoved(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestScopeTracking(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestNoqaComments(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import skip

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


@skip
Expand Down
2 changes: 1 addition & 1 deletion deadcode/tests/test_deadcode.py → tests/test_deadcode.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import TestCase

from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class DeadCodeIntegrationTests(TestCase):
Expand Down
2 changes: 1 addition & 1 deletion deadcode/tests/test_imports.py → tests/test_imports.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class RelativeImportTests(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class DetectLineNumbersOfExpressionsTests(BaseTestCase):
Expand Down
2 changes: 1 addition & 1 deletion deadcode/tests/test_output.py → tests/test_output.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from deadcode.cli import main
from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class TestCountOptionOutput(BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- tests for parsing variable usage from abstract syntax tree.
"""

from deadcode.tests.base import BaseTestCase
from deadcode.utils.base_test_case import BaseTestCase


class VariableParsingTests(BaseTestCase):
Expand Down
File renamed without changes.
File renamed without changes.

0 comments on commit 88ed4e2

Please sign in to comment.