detect-secrets icon indicating copy to clipboard operation
detect-secrets copied to clipboard

Tests failing on openSUSE Tumbleweed

Open kastl-ars opened this issue 6 months ago • 0 comments

  • I'm submitting a ...

    • [X] bug report
    • [ ] feature request
  • What is the current behavior?

There are several tests failing when packaging detect-secrets for openSUSE. This might be due to the build environment that does not have network connectivity. But before ignoring those tests, I would like to get your opinion.

[   38s] =================================== FAILURES ===================================
[   38s] ___________________ TestAWSKeyDetector.test_verify_no_secret ___________________
[   38s] 
[   38s] self = <aws_key_test.TestAWSKeyDetector object at 0x7f61b0ab8be0>
[   38s] 
[   38s]     def test_verify_no_secret(self):
[   38s]         logic = AWSKeyDetector()
[   38s]     
[   38s]         assert logic.verify(
[   38s]             self.example_key,
[   38s]             get_code_snippet([], 1),
[   38s] >       ) == VerifiedResult.UNVERIFIED
[   38s] E       AttributeError: 'TestAWSKeyDetector' object has no attribute 'example_key'
[   38s] 
[   38s] tests/plugins/aws_key_test.py:77: AttributeError
[   38s] _________________ TestAWSKeyDetector.test_verify_valid_secret __________________
[   38s] 
[   38s] self = <aws_key_test.TestAWSKeyDetector object at 0x7f61b0ab9330>
[   38s] 
[   38s]     def test_verify_valid_secret(self):
[   38s]         with mock.patch(
[   38s]             'detect_secrets.plugins.aws.verify_aws_secret_access_key',
[   38s]             return_value=True,
[   38s]         ):
[   38s]             assert AWSKeyDetector().verify(
[   38s]                 self.example_key,
[   38s]                 get_code_snippet(['={}'.format(EXAMPLE_SECRET)], 1),
[   38s] >           ) == VerifiedResult.VERIFIED_TRUE
[   38s] E           AttributeError: 'TestAWSKeyDetector' object has no attribute 'example_key'
[   38s] 
[   38s] tests/plugins/aws_key_test.py:92: AttributeError
[   38s] ________________ TestAWSKeyDetector.test_verify_invalid_secret _________________
[   38s] 
[   38s] self = <aws_key_test.TestAWSKeyDetector object at 0x7f61b0918cd0>
[   38s] 
[   38s]     def test_verify_invalid_secret(self):
[   38s]         with mock.patch(
[   38s]             'detect_secrets.plugins.aws.verify_aws_secret_access_key',
[   38s]             return_value=False,
[   38s]         ):
[   38s]             assert AWSKeyDetector().verify(
[   38s]                 self.example_key,
[   38s]                 get_code_snippet(['={}'.format(EXAMPLE_SECRET)], 1),
[   38s] >           ) == VerifiedResult.VERIFIED_FALSE
[   38s] E           AttributeError: 'TestAWSKeyDetector' object has no attribute 'example_key'
[   38s] 
[   38s] tests/plugins/aws_key_test.py:102: AttributeError
[   38s] _______ TestAWSKeyDetector.test_verify_keep_trying_until_found_something _______
[   38s] 
[   38s] self = <aws_key_test.TestAWSKeyDetector object at 0x7f61b091a260>
[   38s] 
[   38s]     def test_verify_keep_trying_until_found_something(self):
[   38s]         data = {'count': 0}
[   38s]     
[   38s]         def counter(*args, **kwargs):
[   38s]             output = data['count']
[   38s]             data['count'] += 1
[   38s]     
[   38s]             return bool(output)
[   38s]     
[   38s]         with mock.patch(
[   38s]             'detect_secrets.plugins.aws.verify_aws_secret_access_key',
[   38s]             counter,
[   38s]         ):
[   38s]             assert AWSKeyDetector().verify(
[   38s]                 self.example_key,
[   38s]                 get_code_snippet(
[   38s]                     [
[   38s]                         'false_secret = {0}'.format('TEST' * 10),
[   38s]                         'real_secret = {0}'.format(EXAMPLE_SECRET),
[   38s]                     ],
[   38s]                     1,
[   38s]                 ),
[   38s] >           ) == VerifiedResult.VERIFIED_TRUE
[   38s] E           AttributeError: 'TestAWSKeyDetector' object has no attribute 'example_key'
[   38s] 
[   38s] tests/plugins/aws_key_test.py:126: AttributeError
[   38s] _ TestAnalyzeLine.test_potential_secret_constructed_correctly[VerifiedResult.UNVERIFIED-False] _
[   38s] 
[   38s] self = <base_test.TestAnalyzeLine object at 0x7f61b09184c0>
[   38s] verified_result = <VerifiedResult.UNVERIFIED: 2>, is_verified = False
[   38s] 
[   38s]     @pytest.mark.parametrize(
[   38s]         'verified_result ,is_verified',
[   38s]         [
[   38s]             (VerifiedResult.UNVERIFIED, False),
[   38s]             (VerifiedResult.VERIFIED_FALSE, False),
[   38s]             (VerifiedResult.VERIFIED_TRUE, True),
[   38s]         ],
[   38s]     )
[   38s]     def test_potential_secret_constructed_correctly(self, verified_result, is_verified):
[   38s]         self._enable_filter()
[   38s]         plugin = MockPlugin(verified_result)
[   38s]         output = plugin.analyze_line(
[   38s] >           filename=self.filename,
[   38s]             line=self.line,
[   38s]             line_number=1,
[   38s]             context=self.context,
[   38s]         )
[   38s] E       AttributeError: 'TestAnalyzeLine' object has no attribute 'filename'
[   38s] 
[   38s] tests/plugins/base_test.py:65: AttributeError
[   38s] _ TestAnalyzeLine.test_potential_secret_constructed_correctly[VerifiedResult.VERIFIED_FALSE-False] _
[   38s] 
[   38s] self = <base_test.TestAnalyzeLine object at 0x7f61b09190f0>
[   38s] verified_result = <VerifiedResult.VERIFIED_FALSE: 1>, is_verified = False
[   38s] 
[   38s]     @pytest.mark.parametrize(
[   38s]         'verified_result ,is_verified',
[   38s]         [
[   38s]             (VerifiedResult.UNVERIFIED, False),
[   38s]             (VerifiedResult.VERIFIED_FALSE, False),
[   38s]             (VerifiedResult.VERIFIED_TRUE, True),
[   38s]         ],
[   38s]     )
[   38s]     def test_potential_secret_constructed_correctly(self, verified_result, is_verified):
[   38s]         self._enable_filter()
[   38s]         plugin = MockPlugin(verified_result)
[   38s]         output = plugin.analyze_line(
[   38s] >           filename=self.filename,
[   38s]             line=self.line,
[   38s]             line_number=1,
[   38s]             context=self.context,
[   38s]         )
[   38s] E       AttributeError: 'TestAnalyzeLine' object has no attribute 'filename'
[   38s] 
[   38s] tests/plugins/base_test.py:65: AttributeError
[   38s] _ TestAnalyzeLine.test_potential_secret_constructed_correctly[VerifiedResult.VERIFIED_TRUE-True] _
[   38s] 
[   38s] self = <base_test.TestAnalyzeLine object at 0x7f61b09199c0>
[   38s] verified_result = <VerifiedResult.VERIFIED_TRUE: 3>, is_verified = True
[   38s] 
[   38s]     @pytest.mark.parametrize(
[   38s]         'verified_result ,is_verified',
[   38s]         [
[   38s]             (VerifiedResult.UNVERIFIED, False),
[   38s]             (VerifiedResult.VERIFIED_FALSE, False),
[   38s]             (VerifiedResult.VERIFIED_TRUE, True),
[   38s]         ],
[   38s]     )
[   38s]     def test_potential_secret_constructed_correctly(self, verified_result, is_verified):
[   38s]         self._enable_filter()
[   38s]         plugin = MockPlugin(verified_result)
[   38s]         output = plugin.analyze_line(
[   38s] >           filename=self.filename,
[   38s]             line=self.line,
[   38s]             line_number=1,
[   38s]             context=self.context,
[   38s]         )
[   38s] E       AttributeError: 'TestAnalyzeLine' object has no attribute 'filename'
[   38s] 
[   38s] tests/plugins/base_test.py:65: AttributeError
[   38s] _ TestAnalyzeLine.test_no_verification_call_if_verification_filter_is_disabled _
[   38s] 
[   38s] self = <base_test.TestAnalyzeLine object at 0x7f61b091b790>
[   38s] 
[   38s]     def test_no_verification_call_if_verification_filter_is_disabled(self):
[   38s]         self._disable_filter()
[   38s]         plugin = MockPlugin(VerifiedResult.VERIFIED_TRUE)
[   38s]         output = plugin.analyze_line(
[   38s] >           filename=self.filename,
[   38s]             line=self.line,
[   38s]             line_number=1,
[   38s]             context=self.context,
[   38s]         )
[   38s] E       AttributeError: 'TestAnalyzeLine' object has no attribute 'filename'
[   38s] 
[   38s] tests/plugins/base_test.py:81: AttributeError
[   38s] ___________ TestAnalyzeLine.test_handle_verify_exception_gracefully ____________
[   38s] 
[   38s] self = <base_test.TestAnalyzeLine object at 0x7f61b0919c60>
[   38s] 
[   38s]     def test_handle_verify_exception_gracefully(self):
[   38s]         self._enable_filter()
[   38s]         plugin = MockExceptionRaisingPlugin()
[   38s]         output = plugin.analyze_line(
[   38s] >           filename=self.filename,
[   38s]             line=self.line,
[   38s]             line_number=1,
[   38s]             context=self.context,
[   38s]         )
[   38s] E       AttributeError: 'TestAnalyzeLine' object has no attribute 'filename'
[   38s] 
[   38s] tests/plugins/base_test.py:94: AttributeError
[   38s] =============================== warnings summary ===============================
[   38s] tests/core/baseline_test.py::TestCreate::test_error_when_getting_git_tracked_files
[   38s]   /home/abuild/rpmbuild/BUILD/detect-secrets-1.5.0/detect_secrets/core/scan.py:74: UserWarning: Did not detect git repository. Try scanning all files instead.
[   38s]     log.warning('Did not detect git repository. Try scanning all files instead.')
[   38s] 
[   38s] tests/core/usage/filters_usage_test.py::test_disable_filter
[   38s]   /home/abuild/rpmbuild/BUILD/detect-secrets-1.5.0/detect_secrets/core/usage/filters.py:192: UserWarning: Redundant --disable-filter "blah"
[   38s]     log.warning(f'Redundant --disable-filter "{name}"')
[   38s] 
[   38s] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
[   38s] =========================== short test summary info ============================
[   38s] FAILED tests/plugins/aws_key_test.py::TestAWSKeyDetector::test_verify_no_secret
[   38s] FAILED tests/plugins/aws_key_test.py::TestAWSKeyDetector::test_verify_valid_secret
[   38s] FAILED tests/plugins/aws_key_test.py::TestAWSKeyDetector::test_verify_invalid_secret
[   38s] FAILED tests/plugins/aws_key_test.py::TestAWSKeyDetector::test_verify_keep_trying_until_found_something
[   38s] FAILED tests/plugins/base_test.py::TestAnalyzeLine::test_potential_secret_constructed_correctly[VerifiedResult.UNVERIFIED-False]
[   38s] FAILED tests/plugins/base_test.py::TestAnalyzeLine::test_potential_secret_constructed_correctly[VerifiedResult.VERIFIED_FALSE-False]
[   38s] FAILED tests/plugins/base_test.py::TestAnalyzeLine::test_potential_secret_constructed_correctly[VerifiedResult.VERIFIED_TRUE-True]
[   38s] FAILED tests/plugins/base_test.py::TestAnalyzeLine::test_no_verification_call_if_verification_filter_is_disabled
[   38s] FAILED tests/plugins/base_test.py::TestAnalyzeLine::test_handle_verify_exception_gracefully
[   38s] ============ 9 failed, 1022 passed, 6 xfailed, 2 warnings in 32.24s ============

I am a little confused why the Did not detect git repository warning pops up. The tarball contains the .git directory, i.e. the build directory should be a valid git repository.

  • If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem

The package is built in an offline-environment after preparing the source tarball and installing dependencies from the OS.

The tests are being run using pytest 8.2.2.

  • What is the expected behavior?

Ideally the tests should pass.

  • Please tell us about your environment:
    • detect-secrets Version: 1.5.0
    • Python Version: 3.10 / 3.11 / 3.12
    • OS Version: openSUSE Tumbleweed
    • File type (if applicable):

Any hints are highly appreciated!

Kind Regards Johannes

kastl-ars avatar Aug 09 '24 05:08 kastl-ars