diff --git a/tests/unit/containers/__init__.py b/tests/unit/containers/__init__.py index 69cef935..bfcb6292 100644 --- a/tests/unit/containers/__init__.py +++ b/tests/unit/containers/__init__.py @@ -1 +1 @@ -"""Dependency injector container unit tests.""" +"""Container tests.""" diff --git a/tests/unit/containers/cls/test_custom_strings_py2_py3.py b/tests/unit/containers/cls/test_custom_strings_py2_py3.py new file mode 100644 index 00000000..940a41f3 --- /dev/null +++ b/tests/unit/containers/cls/test_custom_strings_py2_py3.py @@ -0,0 +1,36 @@ +"""Tests for container cls with custom string classes as attribute names. + +See: https://github.com/ets-labs/python-dependency-injector/issues/479 +""" + +from dependency_injector import containers, providers +from pytest import fixture, raises + + +class CustomString(str): + pass + + +class CustomClass: + thing = None + + +class Container(containers.DeclarativeContainer): + pass + + +@fixture +def provider(): + return providers.Provider() + + +def test_setattr(provider): + setattr(Container, CustomString("test_attr"), provider) + assert Container.test_attr is provider + + +def test_delattr(): + setattr(Container, CustomString("test_attr"), provider) + delattr(Container, CustomString("test_attr")) + with raises(AttributeError): + Container.test_attr diff --git a/tests/unit/containers/test_declarative_py2_py3.py b/tests/unit/containers/test_declarative_py2_py3.py deleted file mode 100644 index ac774e3f..00000000 --- a/tests/unit/containers/test_declarative_py2_py3.py +++ /dev/null @@ -1,35 +0,0 @@ -"""Dependency injector declarative container unit tests.""" - -import unittest - -from dependency_injector import ( - containers, - providers, -) - - -class DeclarativeContainerWithCustomStringTests(unittest.TestCase): - # See: https://github.com/ets-labs/python-dependency-injector/issues/479 - - class CustomString(str): - pass - - class CustomClass: - thing = None - - class CustomContainer(containers.DeclarativeContainer): - pass - - def setUp(self): - self.container = self.CustomContainer - self.provider = providers.Provider() - - def test_setattr(self): - setattr(self.container, self.CustomString("test_attr"), self.provider) - self.assertIs(self.container.test_attr, self.provider) - - def test_delattr(self): - setattr(self.container, self.CustomString("test_attr"), self.provider) - delattr(self.container, self.CustomString("test_attr")) - with self.assertRaises(AttributeError): - self.container.test_attr