debian-koji/tests/test_hub/test_write_maven_repo_metadata.py
Yuming Zhu ca05418fb5 unittest: use unittest.mock instead of mock
because the absence of unittest.mock on python2.7, we still fallback to
mock
2024-10-23 16:35:30 +00:00

60 lines
1.8 KiB
Python

from unittest import mock
import os
import datetime
import unittest
from kojihub import _write_maven_repo_metadata
class TestWriteMavenRepoMetadata(unittest.TestCase):
# Show long diffs in error output...
maxDiff = None
@mock.patch('kojihub.kojihub._generate_maven_metadata')
def test_write_maven_repo_metadata(self, gendata_mock):
destdir = '/tmp'
artifacts = set()
# group_id, artifact_id, version
artifacts.add(('0', '1', '1.2'))
artifacts.add(('0', '1', '1.3'))
artifacts.add(('0', '1', '1.1'))
artifacts.add(('0', '1', '1.3.1'))
artifacts.add(('0', '1', '1.3.15'))
artifacts.add(('0', '1', '1.3.3'))
artifacts.add(('0', '1', '1.3.6'))
artifacts.add(('0', '1', '1.3.11'))
now = datetime.datetime.now()
with mock.patch('kojihub.kojihub.open', create=True) as openf_mock:
with mock.patch('datetime.datetime') as datetime_mock:
datetime_mock.now.return_value = now
_write_maven_repo_metadata(destdir, artifacts)
openf_mock.assert_called_with(
os.path.join(destdir, 'maven-metadata.xml'), 'wt', encoding='utf-8')
handle = openf_mock().__enter__()
expected = """\
<?xml version="1.0"?>
<metadata>
<groupId>0</groupId>
<artifactId>1</artifactId>
<versioning>
<latest>1.3.15</latest>
<release>1.3.15</release>
<versions>
<version>1.1</version>
<version>1.2</version>
<version>1.3</version>
<version>1.3.1</version>
<version>1.3.3</version>
<version>1.3.6</version>
<version>1.3.11</version>
<version>1.3.15</version>
</versions>
<lastUpdated>%s</lastUpdated>
</versioning>
</metadata>
""" % now.strftime('%Y%m%d%H%M%S')
handle.write.assert_called_with(expected)