cli_tests.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. #!/usr/bin/env python
  2. import unittest
  3. from unittest import mock
  4. import logging
  5. import io
  6. from click.testing import CliRunner
  7. from mkdocs import __main__ as cli
  8. class CLITests(unittest.TestCase):
  9. def setUp(self):
  10. self.runner = CliRunner()
  11. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  12. def test_serve_default(self, mock_serve):
  13. result = self.runner.invoke(
  14. cli.cli, ["serve"], catch_exceptions=False)
  15. self.assertEqual(result.exit_code, 0)
  16. mock_serve.assert_called_once_with(
  17. dev_addr=None,
  18. livereload='livereload',
  19. config_file=None,
  20. strict=None,
  21. theme=None,
  22. use_directory_urls=None
  23. )
  24. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  25. def test_serve_config_file(self, mock_serve):
  26. result = self.runner.invoke(
  27. cli.cli, ["serve", "--config-file", "mkdocs.yml"], catch_exceptions=False)
  28. self.assertEqual(result.exit_code, 0)
  29. self.assertEqual(mock_serve.call_count, 1)
  30. args, kwargs = mock_serve.call_args
  31. self.assertTrue('config_file' in kwargs)
  32. self.assertIsInstance(kwargs['config_file'], io.BufferedReader)
  33. self.assertEqual(kwargs['config_file'].name, 'mkdocs.yml')
  34. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  35. def test_serve_dev_addr(self, mock_serve):
  36. result = self.runner.invoke(
  37. cli.cli, ["serve", '--dev-addr', '0.0.0.0:80'], catch_exceptions=False)
  38. self.assertEqual(result.exit_code, 0)
  39. mock_serve.assert_called_once_with(
  40. dev_addr='0.0.0.0:80',
  41. livereload='livereload',
  42. config_file=None,
  43. strict=None,
  44. theme=None,
  45. use_directory_urls=None
  46. )
  47. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  48. def test_serve_strict(self, mock_serve):
  49. result = self.runner.invoke(
  50. cli.cli, ["serve", '--strict'], catch_exceptions=False)
  51. self.assertEqual(result.exit_code, 0)
  52. mock_serve.assert_called_once_with(
  53. dev_addr=None,
  54. livereload='livereload',
  55. config_file=None,
  56. strict=True,
  57. theme=None,
  58. use_directory_urls=None
  59. )
  60. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  61. def test_serve_theme(self, mock_serve):
  62. result = self.runner.invoke(
  63. cli.cli, ["serve", '--theme', 'readthedocs'], catch_exceptions=False)
  64. self.assertEqual(result.exit_code, 0)
  65. mock_serve.assert_called_once_with(
  66. dev_addr=None,
  67. livereload='livereload',
  68. config_file=None,
  69. strict=None,
  70. theme='readthedocs',
  71. use_directory_urls=None
  72. )
  73. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  74. def test_serve_use_directory_urls(self, mock_serve):
  75. result = self.runner.invoke(
  76. cli.cli, ["serve", '--use-directory-urls'], catch_exceptions=False)
  77. self.assertEqual(result.exit_code, 0)
  78. mock_serve.assert_called_once_with(
  79. dev_addr=None,
  80. livereload='livereload',
  81. config_file=None,
  82. strict=None,
  83. theme=None,
  84. use_directory_urls=True
  85. )
  86. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  87. def test_serve_no_directory_urls(self, mock_serve):
  88. result = self.runner.invoke(
  89. cli.cli, ["serve", '--no-directory-urls'], catch_exceptions=False)
  90. self.assertEqual(result.exit_code, 0)
  91. mock_serve.assert_called_once_with(
  92. dev_addr=None,
  93. livereload='livereload',
  94. config_file=None,
  95. strict=None,
  96. theme=None,
  97. use_directory_urls=False
  98. )
  99. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  100. def test_serve_livereload(self, mock_serve):
  101. result = self.runner.invoke(
  102. cli.cli, ["serve", '--livereload'], catch_exceptions=False)
  103. self.assertEqual(result.exit_code, 0)
  104. mock_serve.assert_called_once_with(
  105. dev_addr=None,
  106. livereload='livereload',
  107. config_file=None,
  108. strict=None,
  109. theme=None,
  110. use_directory_urls=None
  111. )
  112. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  113. def test_serve_no_livereload(self, mock_serve):
  114. result = self.runner.invoke(
  115. cli.cli, ["serve", '--no-livereload'], catch_exceptions=False)
  116. self.assertEqual(result.exit_code, 0)
  117. mock_serve.assert_called_once_with(
  118. dev_addr=None,
  119. livereload='no-livereload',
  120. config_file=None,
  121. strict=None,
  122. theme=None,
  123. use_directory_urls=None
  124. )
  125. @mock.patch('mkdocs.commands.serve.serve', autospec=True)
  126. def test_serve_dirtyreload(self, mock_serve):
  127. result = self.runner.invoke(
  128. cli.cli, ["serve", '--dirtyreload'], catch_exceptions=False)
  129. self.assertEqual(result.exit_code, 0)
  130. mock_serve.assert_called_once_with(
  131. dev_addr=None,
  132. livereload='dirty',
  133. config_file=None,
  134. strict=None,
  135. theme=None,
  136. use_directory_urls=None
  137. )
  138. @mock.patch('mkdocs.config.load_config', autospec=True)
  139. @mock.patch('mkdocs.commands.build.build', autospec=True)
  140. def test_build_defaults(self, mock_build, mock_load_config):
  141. result = self.runner.invoke(
  142. cli.cli, ['build'], catch_exceptions=False)
  143. self.assertEqual(result.exit_code, 0)
  144. self.assertEqual(mock_build.call_count, 1)
  145. args, kwargs = mock_build.call_args
  146. self.assertTrue('dirty' in kwargs)
  147. self.assertFalse(kwargs['dirty'])
  148. mock_load_config.assert_called_once_with(
  149. config_file=None,
  150. strict=None,
  151. theme=None,
  152. use_directory_urls=None,
  153. site_dir=None
  154. )
  155. logger = logging.getLogger('mkdocs')
  156. self.assertEqual(logger.level, logging.INFO)
  157. @mock.patch('mkdocs.config.load_config', autospec=True)
  158. @mock.patch('mkdocs.commands.build.build', autospec=True)
  159. def test_build_clean(self, mock_build, mock_load_config):
  160. result = self.runner.invoke(
  161. cli.cli, ['build', '--clean'], catch_exceptions=False)
  162. self.assertEqual(result.exit_code, 0)
  163. self.assertEqual(mock_build.call_count, 1)
  164. args, kwargs = mock_build.call_args
  165. self.assertTrue('dirty' in kwargs)
  166. self.assertFalse(kwargs['dirty'])
  167. @mock.patch('mkdocs.config.load_config', autospec=True)
  168. @mock.patch('mkdocs.commands.build.build', autospec=True)
  169. def test_build_dirty(self, mock_build, mock_load_config):
  170. result = self.runner.invoke(
  171. cli.cli, ['build', '--dirty'], catch_exceptions=False)
  172. self.assertEqual(result.exit_code, 0)
  173. self.assertEqual(mock_build.call_count, 1)
  174. args, kwargs = mock_build.call_args
  175. self.assertTrue('dirty' in kwargs)
  176. self.assertTrue(kwargs['dirty'])
  177. @mock.patch('mkdocs.config.load_config', autospec=True)
  178. @mock.patch('mkdocs.commands.build.build', autospec=True)
  179. def test_build_config_file(self, mock_build, mock_load_config):
  180. result = self.runner.invoke(
  181. cli.cli, ['build', '--config-file', 'mkdocs.yml'], catch_exceptions=False)
  182. self.assertEqual(result.exit_code, 0)
  183. self.assertEqual(mock_build.call_count, 1)
  184. self.assertEqual(mock_load_config.call_count, 1)
  185. args, kwargs = mock_load_config.call_args
  186. self.assertTrue('config_file' in kwargs)
  187. self.assertIsInstance(kwargs['config_file'], io.BufferedReader)
  188. self.assertEqual(kwargs['config_file'].name, 'mkdocs.yml')
  189. @mock.patch('mkdocs.config.load_config', autospec=True)
  190. @mock.patch('mkdocs.commands.build.build', autospec=True)
  191. def test_build_strict(self, mock_build, mock_load_config):
  192. result = self.runner.invoke(
  193. cli.cli, ['build', '--strict'], catch_exceptions=False)
  194. self.assertEqual(result.exit_code, 0)
  195. self.assertEqual(mock_build.call_count, 1)
  196. mock_load_config.assert_called_once_with(
  197. config_file=None,
  198. strict=True,
  199. theme=None,
  200. use_directory_urls=None,
  201. site_dir=None
  202. )
  203. @mock.patch('mkdocs.config.load_config', autospec=True)
  204. @mock.patch('mkdocs.commands.build.build', autospec=True)
  205. def test_build_theme(self, mock_build, mock_load_config):
  206. result = self.runner.invoke(
  207. cli.cli, ['build', '--theme', 'readthedocs'], catch_exceptions=False)
  208. self.assertEqual(result.exit_code, 0)
  209. self.assertEqual(mock_build.call_count, 1)
  210. mock_load_config.assert_called_once_with(
  211. config_file=None,
  212. strict=None,
  213. theme='readthedocs',
  214. use_directory_urls=None,
  215. site_dir=None
  216. )
  217. @mock.patch('mkdocs.config.load_config', autospec=True)
  218. @mock.patch('mkdocs.commands.build.build', autospec=True)
  219. def test_build_use_directory_urls(self, mock_build, mock_load_config):
  220. result = self.runner.invoke(
  221. cli.cli, ['build', '--use-directory-urls'], catch_exceptions=False)
  222. self.assertEqual(result.exit_code, 0)
  223. self.assertEqual(mock_build.call_count, 1)
  224. mock_load_config.assert_called_once_with(
  225. config_file=None,
  226. strict=None,
  227. theme=None,
  228. use_directory_urls=True,
  229. site_dir=None
  230. )
  231. @mock.patch('mkdocs.config.load_config', autospec=True)
  232. @mock.patch('mkdocs.commands.build.build', autospec=True)
  233. def test_build_no_directory_urls(self, mock_build, mock_load_config):
  234. result = self.runner.invoke(
  235. cli.cli, ['build', '--no-directory-urls'], catch_exceptions=False)
  236. self.assertEqual(result.exit_code, 0)
  237. self.assertEqual(mock_build.call_count, 1)
  238. mock_load_config.assert_called_once_with(
  239. config_file=None,
  240. strict=None,
  241. theme=None,
  242. use_directory_urls=False,
  243. site_dir=None
  244. )
  245. @mock.patch('mkdocs.config.load_config', autospec=True)
  246. @mock.patch('mkdocs.commands.build.build', autospec=True)
  247. def test_build_site_dir(self, mock_build, mock_load_config):
  248. result = self.runner.invoke(
  249. cli.cli, ['build', '--site-dir', 'custom'], catch_exceptions=False)
  250. self.assertEqual(result.exit_code, 0)
  251. self.assertEqual(mock_build.call_count, 1)
  252. mock_load_config.assert_called_once_with(
  253. config_file=None,
  254. strict=None,
  255. theme=None,
  256. use_directory_urls=None,
  257. site_dir='custom',
  258. )
  259. @mock.patch('mkdocs.config.load_config', autospec=True)
  260. @mock.patch('mkdocs.commands.build.build', autospec=True)
  261. def test_build_verbose(self, mock_build, mock_load_config):
  262. result = self.runner.invoke(
  263. cli.cli, ['build', '--verbose'], catch_exceptions=False)
  264. self.assertEqual(result.exit_code, 0)
  265. self.assertEqual(mock_build.call_count, 1)
  266. logger = logging.getLogger('mkdocs')
  267. self.assertEqual(logger.level, logging.DEBUG)
  268. @mock.patch('mkdocs.config.load_config', autospec=True)
  269. @mock.patch('mkdocs.commands.build.build', autospec=True)
  270. def test_build_quiet(self, mock_build, mock_load_config):
  271. result = self.runner.invoke(
  272. cli.cli, ['build', '--quiet'], catch_exceptions=False)
  273. self.assertEqual(result.exit_code, 0)
  274. self.assertEqual(mock_build.call_count, 1)
  275. logger = logging.getLogger('mkdocs')
  276. self.assertEqual(logger.level, logging.ERROR)
  277. @mock.patch('mkdocs.commands.new.new', autospec=True)
  278. def test_new(self, mock_new):
  279. result = self.runner.invoke(
  280. cli.cli, ["new", "project"], catch_exceptions=False)
  281. self.assertEqual(result.exit_code, 0)
  282. mock_new.assert_called_once_with('project')
  283. @mock.patch('mkdocs.config.load_config', autospec=True)
  284. @mock.patch('mkdocs.commands.build.build', autospec=True)
  285. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  286. def test_gh_deploy_defaults(self, mock_gh_deploy, mock_build, mock_load_config):
  287. result = self.runner.invoke(
  288. cli.cli, ['gh-deploy'], catch_exceptions=False)
  289. self.assertEqual(result.exit_code, 0)
  290. self.assertEqual(mock_gh_deploy.call_count, 1)
  291. g_args, g_kwargs = mock_gh_deploy.call_args
  292. self.assertTrue('message' in g_kwargs)
  293. self.assertEqual(g_kwargs['message'], None)
  294. self.assertTrue('force' in g_kwargs)
  295. self.assertEqual(g_kwargs['force'], False)
  296. self.assertTrue('ignore_version' in g_kwargs)
  297. self.assertEqual(g_kwargs['ignore_version'], False)
  298. self.assertEqual(mock_build.call_count, 1)
  299. b_args, b_kwargs = mock_build.call_args
  300. self.assertTrue('dirty' in b_kwargs)
  301. self.assertFalse(b_kwargs['dirty'])
  302. mock_load_config.assert_called_once_with(
  303. remote_branch=None,
  304. remote_name=None,
  305. config_file=None,
  306. strict=None,
  307. theme=None,
  308. use_directory_urls=None,
  309. site_dir=None
  310. )
  311. @mock.patch('mkdocs.config.load_config', autospec=True)
  312. @mock.patch('mkdocs.commands.build.build', autospec=True)
  313. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  314. def test_gh_deploy_clean(self, mock_gh_deploy, mock_build, mock_load_config):
  315. result = self.runner.invoke(
  316. cli.cli, ['gh-deploy', '--clean'], catch_exceptions=False)
  317. self.assertEqual(result.exit_code, 0)
  318. self.assertEqual(mock_gh_deploy.call_count, 1)
  319. self.assertEqual(mock_build.call_count, 1)
  320. args, kwargs = mock_build.call_args
  321. self.assertTrue('dirty' in kwargs)
  322. self.assertFalse(kwargs['dirty'])
  323. @mock.patch('mkdocs.config.load_config', autospec=True)
  324. @mock.patch('mkdocs.commands.build.build', autospec=True)
  325. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  326. def test_gh_deploy_dirty(self, mock_gh_deploy, mock_build, mock_load_config):
  327. result = self.runner.invoke(
  328. cli.cli, ['gh-deploy', '--dirty'], catch_exceptions=False)
  329. self.assertEqual(result.exit_code, 0)
  330. self.assertEqual(mock_gh_deploy.call_count, 1)
  331. self.assertEqual(mock_build.call_count, 1)
  332. args, kwargs = mock_build.call_args
  333. self.assertTrue('dirty' in kwargs)
  334. self.assertTrue(kwargs['dirty'])
  335. @mock.patch('mkdocs.config.load_config', autospec=True)
  336. @mock.patch('mkdocs.commands.build.build', autospec=True)
  337. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  338. def test_gh_deploy_config_file(self, mock_gh_deploy, mock_build, mock_load_config):
  339. result = self.runner.invoke(
  340. cli.cli, ['gh-deploy', '--config-file', 'mkdocs.yml'], catch_exceptions=False)
  341. self.assertEqual(result.exit_code, 0)
  342. self.assertEqual(mock_gh_deploy.call_count, 1)
  343. self.assertEqual(mock_build.call_count, 1)
  344. self.assertEqual(mock_load_config.call_count, 1)
  345. args, kwargs = mock_load_config.call_args
  346. self.assertTrue('config_file' in kwargs)
  347. self.assertIsInstance(kwargs['config_file'], io.BufferedReader)
  348. self.assertEqual(kwargs['config_file'].name, 'mkdocs.yml')
  349. @mock.patch('mkdocs.config.load_config', autospec=True)
  350. @mock.patch('mkdocs.commands.build.build', autospec=True)
  351. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  352. def test_gh_deploy_message(self, mock_gh_deploy, mock_build, mock_load_config):
  353. result = self.runner.invoke(
  354. cli.cli, ['gh-deploy', '--message', 'A commit message'], catch_exceptions=False)
  355. self.assertEqual(result.exit_code, 0)
  356. self.assertEqual(mock_gh_deploy.call_count, 1)
  357. g_args, g_kwargs = mock_gh_deploy.call_args
  358. self.assertTrue('message' in g_kwargs)
  359. self.assertEqual(g_kwargs['message'], 'A commit message')
  360. self.assertEqual(mock_build.call_count, 1)
  361. self.assertEqual(mock_load_config.call_count, 1)
  362. @mock.patch('mkdocs.config.load_config', autospec=True)
  363. @mock.patch('mkdocs.commands.build.build', autospec=True)
  364. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  365. def test_gh_deploy_remote_branch(self, mock_gh_deploy, mock_build, mock_load_config):
  366. result = self.runner.invoke(
  367. cli.cli, ['gh-deploy', '--remote-branch', 'foo'], catch_exceptions=False)
  368. self.assertEqual(result.exit_code, 0)
  369. self.assertEqual(mock_gh_deploy.call_count, 1)
  370. self.assertEqual(mock_build.call_count, 1)
  371. mock_load_config.assert_called_once_with(
  372. remote_branch='foo',
  373. remote_name=None,
  374. config_file=None,
  375. strict=None,
  376. theme=None,
  377. use_directory_urls=None,
  378. site_dir=None
  379. )
  380. @mock.patch('mkdocs.config.load_config', autospec=True)
  381. @mock.patch('mkdocs.commands.build.build', autospec=True)
  382. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  383. def test_gh_deploy_remote_name(self, mock_gh_deploy, mock_build, mock_load_config):
  384. result = self.runner.invoke(
  385. cli.cli, ['gh-deploy', '--remote-name', 'foo'], catch_exceptions=False)
  386. self.assertEqual(result.exit_code, 0)
  387. self.assertEqual(mock_gh_deploy.call_count, 1)
  388. self.assertEqual(mock_build.call_count, 1)
  389. mock_load_config.assert_called_once_with(
  390. remote_branch=None,
  391. remote_name='foo',
  392. config_file=None,
  393. strict=None,
  394. theme=None,
  395. use_directory_urls=None,
  396. site_dir=None
  397. )
  398. @mock.patch('mkdocs.config.load_config', autospec=True)
  399. @mock.patch('mkdocs.commands.build.build', autospec=True)
  400. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  401. def test_gh_deploy_force(self, mock_gh_deploy, mock_build, mock_load_config):
  402. result = self.runner.invoke(
  403. cli.cli, ['gh-deploy', '--force'], catch_exceptions=False)
  404. self.assertEqual(result.exit_code, 0)
  405. self.assertEqual(mock_gh_deploy.call_count, 1)
  406. g_args, g_kwargs = mock_gh_deploy.call_args
  407. self.assertTrue('force' in g_kwargs)
  408. self.assertEqual(g_kwargs['force'], True)
  409. self.assertEqual(mock_build.call_count, 1)
  410. self.assertEqual(mock_load_config.call_count, 1)
  411. @mock.patch('mkdocs.config.load_config', autospec=True)
  412. @mock.patch('mkdocs.commands.build.build', autospec=True)
  413. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  414. def test_gh_deploy_ignore_version(self, mock_gh_deploy, mock_build, mock_load_config):
  415. result = self.runner.invoke(
  416. cli.cli, ['gh-deploy', '--ignore-version'], catch_exceptions=False)
  417. self.assertEqual(result.exit_code, 0)
  418. self.assertEqual(mock_gh_deploy.call_count, 1)
  419. g_args, g_kwargs = mock_gh_deploy.call_args
  420. self.assertTrue('ignore_version' in g_kwargs)
  421. self.assertEqual(g_kwargs['ignore_version'], True)
  422. self.assertEqual(mock_build.call_count, 1)
  423. self.assertEqual(mock_load_config.call_count, 1)
  424. @mock.patch('mkdocs.config.load_config', autospec=True)
  425. @mock.patch('mkdocs.commands.build.build', autospec=True)
  426. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  427. def test_gh_deploy_strict(self, mock_gh_deploy, mock_build, mock_load_config):
  428. result = self.runner.invoke(
  429. cli.cli, ['gh-deploy', '--strict'], catch_exceptions=False)
  430. self.assertEqual(result.exit_code, 0)
  431. self.assertEqual(mock_gh_deploy.call_count, 1)
  432. self.assertEqual(mock_build.call_count, 1)
  433. mock_load_config.assert_called_once_with(
  434. remote_branch=None,
  435. remote_name=None,
  436. config_file=None,
  437. strict=True,
  438. theme=None,
  439. use_directory_urls=None,
  440. site_dir=None
  441. )
  442. @mock.patch('mkdocs.config.load_config', autospec=True)
  443. @mock.patch('mkdocs.commands.build.build', autospec=True)
  444. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  445. def test_gh_deploy_theme(self, mock_gh_deploy, mock_build, mock_load_config):
  446. result = self.runner.invoke(
  447. cli.cli, ['gh-deploy', '--theme', 'readthedocs'], catch_exceptions=False)
  448. self.assertEqual(result.exit_code, 0)
  449. self.assertEqual(mock_gh_deploy.call_count, 1)
  450. self.assertEqual(mock_build.call_count, 1)
  451. mock_load_config.assert_called_once_with(
  452. remote_branch=None,
  453. remote_name=None,
  454. config_file=None,
  455. strict=None,
  456. theme='readthedocs',
  457. use_directory_urls=None,
  458. site_dir=None
  459. )
  460. @mock.patch('mkdocs.config.load_config', autospec=True)
  461. @mock.patch('mkdocs.commands.build.build', autospec=True)
  462. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  463. def test_gh_deploy_use_directory_urls(self, mock_gh_deploy, mock_build, mock_load_config):
  464. result = self.runner.invoke(
  465. cli.cli, ['gh-deploy', '--use-directory-urls'], catch_exceptions=False)
  466. self.assertEqual(result.exit_code, 0)
  467. self.assertEqual(mock_gh_deploy.call_count, 1)
  468. self.assertEqual(mock_build.call_count, 1)
  469. mock_load_config.assert_called_once_with(
  470. remote_branch=None,
  471. remote_name=None,
  472. config_file=None,
  473. strict=None,
  474. theme=None,
  475. use_directory_urls=True,
  476. site_dir=None
  477. )
  478. @mock.patch('mkdocs.config.load_config', autospec=True)
  479. @mock.patch('mkdocs.commands.build.build', autospec=True)
  480. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  481. def test_gh_deploy_no_directory_urls(self, mock_gh_deploy, mock_build, mock_load_config):
  482. result = self.runner.invoke(
  483. cli.cli, ['gh-deploy', '--no-directory-urls'], catch_exceptions=False)
  484. self.assertEqual(result.exit_code, 0)
  485. self.assertEqual(mock_gh_deploy.call_count, 1)
  486. self.assertEqual(mock_build.call_count, 1)
  487. mock_load_config.assert_called_once_with(
  488. remote_branch=None,
  489. remote_name=None,
  490. config_file=None,
  491. strict=None,
  492. theme=None,
  493. use_directory_urls=False,
  494. site_dir=None
  495. )
  496. @mock.patch('mkdocs.config.load_config', autospec=True)
  497. @mock.patch('mkdocs.commands.build.build', autospec=True)
  498. @mock.patch('mkdocs.commands.gh_deploy.gh_deploy', autospec=True)
  499. def test_gh_deploy_site_dir(self, mock_gh_deploy, mock_build, mock_load_config):
  500. result = self.runner.invoke(
  501. cli.cli, ['gh-deploy', '--site-dir', 'custom'], catch_exceptions=False)
  502. self.assertEqual(result.exit_code, 0)
  503. self.assertEqual(mock_gh_deploy.call_count, 1)
  504. self.assertEqual(mock_build.call_count, 1)
  505. mock_load_config.assert_called_once_with(
  506. remote_branch=None,
  507. remote_name=None,
  508. config_file=None,
  509. strict=None,
  510. theme=None,
  511. use_directory_urls=None,
  512. site_dir='custom'
  513. )