| 12345678910111213141516171819202122232425262728293031 |
- """Browser-address hints for the service launcher."""
- from contextlib import redirect_stdout
- from io import StringIO
- import unittest
- from unittest.mock import patch
- from scripts.start_service import access_urls, print_access_urls
- class StartServiceAddressTests(unittest.TestCase):
- def test_wildcard_bind_becomes_loopback_and_lan_urls(self):
- with patch('scripts.start_service.socket.gethostname', return_value='server'), \
- patch('scripts.start_service.socket.gethostbyname_ex',
- return_value=('server', [], ['127.0.0.1', '169.254.2.3', '192.168.2.49'])):
- self.assertEqual(access_urls('0.0.0.0', 8000), [
- 'http://127.0.0.1:8000/', 'http://192.168.2.49:8000/'])
- def test_specific_bind_is_the_browser_url(self):
- self.assertEqual(access_urls('127.0.0.1', 8123), ['http://127.0.0.1:8123/'])
- def test_resolution_failure_still_prints_working_local_url(self):
- with patch('scripts.start_service.socket.gethostbyname_ex', side_effect=OSError):
- output = StringIO()
- with redirect_stdout(output):
- print_access_urls('0.0.0.0', 8000)
- self.assertIn('本机访问: http://127.0.0.1:8000/', output.getvalue())
- self.assertIn('0.0.0.0 仅用于服务监听', output.getvalue())
- if __name__ == '__main__':
- unittest.main()
|