diff --git a/awx/main/tests/functional/api/test_user.py b/awx/main/tests/functional/api/test_user.py index e3f314b985..366f6f943c 100644 --- a/awx/main/tests/functional/api/test_user.py +++ b/awx/main/tests/functional/api/test_user.py @@ -1,4 +1,3 @@ -from datetime import date from unittest import mock import pytest @@ -253,7 +252,7 @@ def test_user_verify_attribute_created(admin, get): resp = get(reverse('api:user_detail', kwargs={'pk': admin.pk}), admin) assert resp.data['created'] == admin.date_joined - past = date(2020, 1, 1).isoformat() + past = "2020-01-01T00:00:00Z" for op, count in (('gt', 1), ('lt', 0)): resp = get(reverse('api:user_list') + f'?created__{op}={past}', admin) assert resp.data['count'] == count diff --git a/awx/main/tests/unit/utils/test_common.py b/awx/main/tests/unit/utils/test_common.py index e38543ead5..b5983497b2 100644 --- a/awx/main/tests/unit/utils/test_common.py +++ b/awx/main/tests/unit/utils/test_common.py @@ -330,17 +330,13 @@ class TestHostnameRegexValidator: def test_bad_call(self, regex_expr, re_flags): h = HostnameRegexValidator(regex=regex_expr, flags=re_flags) - try: + with pytest.raises(ValidationError, match=r"^\['illegal characters detected in hostname=@#\$%\)\$#\(TUFAS_DG. Please verify.'\]$"): h("@#$%)$#(TUFAS_DG") - except ValidationError as e: - assert e.message is not None def test_good_call_with_inverse(self, regex_expr, re_flags, inverse_match=True): h = HostnameRegexValidator(regex=regex_expr, flags=re_flags, inverse_match=inverse_match) - try: + with pytest.raises(ValidationError, match=r"^\['Enter a valid value.'\]$"): h("1.2.3.4") - except ValidationError as e: - assert e.message is not None def test_bad_call_with_inverse(self, regex_expr, re_flags, inverse_match=True): h = HostnameRegexValidator(regex=regex_expr, flags=re_flags, inverse_match=inverse_match) diff --git a/awx/main/utils/ansible.py b/awx/main/utils/ansible.py index 64530c5300..cd99b347de 100644 --- a/awx/main/utils/ansible.py +++ b/awx/main/utils/ansible.py @@ -48,15 +48,16 @@ def could_be_playbook(project_path, dir_path, filename): # show up. matched = False try: - for n, line in enumerate(codecs.open(playbook_path, 'r', encoding='utf-8', errors='ignore')): - if valid_playbook_re.match(line): - matched = True - break - # Any YAML file can also be encrypted with vault; - # allow these to be used as the main playbook. - elif n == 0 and line.startswith('$ANSIBLE_VAULT;'): - matched = True - break + with codecs.open(playbook_path, 'r', encoding='utf-8', errors='ignore') as f: + for n, line in enumerate(f): + if valid_playbook_re.match(line): + matched = True + break + # Any YAML file can also be encrypted with vault; + # allow these to be used as the main playbook. + elif n == 0 and line.startswith('$ANSIBLE_VAULT;'): + matched = True + break except IOError: return None if not matched: diff --git a/pytest.ini b/pytest.ini index 2c8790e6af..54f261c07c 100644 --- a/pytest.ini +++ b/pytest.ini @@ -35,10 +35,6 @@ filterwarnings = # FIXME: and is no longer imported at runtime. once:CoreAPI compatibility is deprecated and will be removed in DRF 3.17:rest_framework.RemovedInDRF317Warning:rest_framework.schemas.coreapi - # FIXME: Delete this entry once naive dates aren't passed to DB lookup - # FIXME: methods. Not sure where, might be in awx's views or in DAB. - once:DateTimeField User.date_joined received a naive datetime .2020-01-01 00.00.00. while time zone support is active.:RuntimeWarning:django.db.models.fields - # FIXME: Delete this entry once the deprecation is acted upon. # Note: RemovedInDjango51Warning may not exist in newer Django versions ignore:'index_together' is deprecated. Use 'Meta.indexes' in 'main.\w+' instead. @@ -47,12 +43,6 @@ filterwarnings = # Note: RemovedInDjango50Warning may not exist in newer Django versions ignore:Using QuerySet.iterator.. after prefetch_related.. without specifying chunk_size is deprecated. - # FIXME: Delete this entry once the **broken** always-true assertions in the - # FIXME: following tests are fixed: - # * `awx/main/tests/unit/utils/test_common.py::TestHostnameRegexValidator::test_good_call` - # * `awx/main/tests/unit/utils/test_common.py::TestHostnameRegexValidator::test_bad_call_with_inverse` - once:assertion is always true, perhaps remove parentheses\?:pytest.PytestAssertRewriteWarning: - # FIXME: Figure this out, fix and then delete the entry. It's not entirely # FIXME: clear what emits it and where. once:Pagination may yield inconsistent results with an unordered object_list. .class 'awx.main.models.workflow.WorkflowJobTemplateNode'. QuerySet.:django.core.paginator.UnorderedObjectListWarning:django.core.paginator @@ -60,11 +50,6 @@ filterwarnings = # FIXME: Figure this out, fix and then delete the entry. once::django.core.paginator.UnorderedObjectListWarning:rest_framework.pagination - # FIXME: Use `codecs.open()` via a context manager - # FIXME: in `awx/main/utils/ansible.py` to close hanging file descriptors - # FIXME: and then delete the entry. - once:unclosed file <_io.BufferedReader name='[^']+'>:ResourceWarning:awx.main.utils.ansible - # FIXME: Use `open()` via a context manager # FIXME: in `awx/main/tests/unit/test_tasks.py` to close hanging file # FIXME: descriptors and then delete the entry.