test_release.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import re
  2. import datetime
  3. import unittest
  4. try:
  5. from unittest import mock
  6. except ImportError:
  7. import mock
  8. from qrcode.release import update_manpage
  9. OPEN = '.'.join((open.__module__, open.__name__))
  10. DATA = 'test\n.TH "date" "version" "description"\nthis'
  11. class UpdateManpageTests(unittest.TestCase):
  12. @mock.patch(OPEN, new_callable=mock.mock_open, read_data='.TH invalid')
  13. def test_invalid_data(self, mock_file):
  14. update_manpage({'name': 'qrcode', 'new_version': '1.23'})
  15. mock_file.assert_called()
  16. mock_file().write.assert_not_called()
  17. @mock.patch(OPEN, new_callable=mock.mock_open, read_data=DATA)
  18. def test_not_qrcode(self, mock_file):
  19. update_manpage({'name': 'not-qrcode'})
  20. mock_file.assert_not_called()
  21. @mock.patch(OPEN, new_callable=mock.mock_open, read_data=DATA)
  22. def test_no_change(self, mock_file):
  23. update_manpage({'name': 'qrcode', 'new_version': 'version'})
  24. mock_file.assert_called()
  25. mock_file().write.assert_not_called()
  26. @mock.patch(OPEN, new_callable=mock.mock_open, read_data=DATA)
  27. def test_change(self, mock_file):
  28. update_manpage({'name': 'qrcode', 'new_version': '3.11'})
  29. expected = re.split(r'([^\n]*(?:\n|$))', DATA)[1::2]
  30. expected[1] = expected[1].replace('version', '3.11').replace(
  31. 'date', datetime.datetime.now().strftime('%-d %b %Y'))
  32. mock_file().write.has_calls([mock.call(line) for line in expected])