blob: 8e65b5eb599e30804e73a9fc3b7cc5f732de5c2f [file]
import contextlib
import io
import sys
import tempfile
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
import sync_distribution_mirrors as mirrors
class SyncDistributionMirrorsTest(unittest.TestCase):
def setUp(self):
self.temporary_directory = tempfile.TemporaryDirectory()
self.root = Path(self.temporary_directory.name)
(self.root / "distribution.properties").write_text(
"camel.main.version=4.22.0\nresolver.version=2.0.0\n", encoding="utf-8"
)
self.original_pom = """<project>
<properties>
<!-- BEGIN distribution property mirrors
distribution.properties is authoritative. -->
<camel.main.version>4.21.0</camel.main.version>
<resolver.version>2.0.0</resolver.version>
<!-- END distribution property mirrors -->
</properties>
</project>
"""
(self.root / "pom.xml").write_text(self.original_pom, encoding="utf-8")
def tearDown(self):
self.temporary_directory.cleanup()
def test_synchronizes_all_marked_properties_idempotently(self):
self.assertEqual(["camel.main.version"], mirrors.synchronize(self.root))
updated = (self.root / "pom.xml").read_text(encoding="utf-8")
self.assertIn("<camel.main.version>4.22.0</camel.main.version>", updated)
self.assertEqual([], mirrors.synchronize(self.root))
self.assertEqual(updated, (self.root / "pom.xml").read_text(encoding="utf-8"))
def test_check_reports_drift_without_writing(self):
errors = io.StringIO()
with contextlib.redirect_stderr(errors):
result = mirrors.main(["--check"], self.root)
self.assertEqual(1, result)
self.assertIn("camel.main.version", errors.getvalue())
self.assertEqual(self.original_pom, (self.root / "pom.xml").read_text(encoding="utf-8"))
def test_rejects_a_mirror_without_an_authoritative_property(self):
(self.root / "distribution.properties").write_text(
"camel.main.version=4.22.0\n", encoding="utf-8"
)
with self.assertRaisesRegex(ValueError, "missing mirrored property resolver.version"):
mirrors.synchronize(self.root)
if __name__ == "__main__":
unittest.main()