test_update.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. # Copyright (c) Twisted Matrix Laboratories.
  2. # See LICENSE for details.
  3. """
  4. Tests for L{incremental.update}.
  5. """
  6. from __future__ import division, absolute_import
  7. import sys
  8. import os
  9. import datetime
  10. from twisted.python.filepath import FilePath
  11. from twisted.python.compat import NativeStringIO
  12. from twisted.trial.unittest import TestCase
  13. from incremental.update import _run, run
  14. class NonCreatedUpdateTests(TestCase):
  15. def setUp(self):
  16. self.srcdir = FilePath(self.mktemp())
  17. self.srcdir.makedirs()
  18. packagedir = self.srcdir.child('inctestpkg')
  19. packagedir.makedirs()
  20. packagedir.child('__init__.py').setContent(b"""
  21. from incremental import Version
  22. introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
  23. next_released_version = "inctestpkg NEXT"
  24. """)
  25. self.getcwd = lambda: self.srcdir.path
  26. self.packagedir = packagedir
  27. class Date(object):
  28. year = 2016
  29. month = 8
  30. self.date = Date()
  31. def test_create(self):
  32. """
  33. `incremental.update package --create` initialises the version.
  34. """
  35. self.assertFalse(self.packagedir.child("_version.py").exists())
  36. out = []
  37. _run('inctestpkg', path=None, newversion=None, patch=False, rc=False,
  38. dev=False, create=True, _date=self.date, _getcwd=self.getcwd,
  39. _print=out.append)
  40. self.assertTrue(self.packagedir.child("_version.py").exists())
  41. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  42. b'''"""
  43. Provides inctestpkg version information.
  44. """
  45. # This file is auto-generated! Do not edit!
  46. # Use `python -m incremental.update inctestpkg` to change this file.
  47. from incremental import Version
  48. __version__ = Version('inctestpkg', 16, 8, 0)
  49. __all__ = ["__version__"]
  50. ''')
  51. class MissingTests(TestCase):
  52. def setUp(self):
  53. self.srcdir = FilePath(self.mktemp())
  54. self.srcdir.makedirs()
  55. self.srcdir.child('srca').makedirs()
  56. packagedir = self.srcdir.child('srca').child('inctestpkg')
  57. packagedir.makedirs()
  58. packagedir.child('__init__.py').setContent(b"""
  59. from incremental import Version
  60. introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
  61. next_released_version = "inctestpkg NEXT"
  62. """)
  63. packagedir.child('_version.py').setContent(b"""
  64. from incremental import Version
  65. __version__ = Version('inctestpkg', 1, 2, 3)
  66. __all__ = ["__version__"]
  67. """)
  68. self.getcwd = lambda: self.srcdir.path
  69. self.packagedir = packagedir
  70. class Date(object):
  71. year = 2016
  72. month = 8
  73. self.date = Date()
  74. def test_path(self):
  75. """
  76. `incremental.update package --dev` raises and quits if it can't find
  77. the package.
  78. """
  79. out = []
  80. with self.assertRaises(ValueError):
  81. _run(u'inctestpkg', path=None, newversion=None,
  82. patch=False, rc=False, dev=True, create=False,
  83. _date=self.date, _getcwd=self.getcwd, _print=out.append)
  84. class CreatedUpdateInSrcTests(TestCase):
  85. def setUp(self):
  86. self.srcdir = FilePath(self.mktemp())
  87. self.srcdir.makedirs()
  88. self.srcdir.child('src').makedirs()
  89. packagedir = self.srcdir.child('src').child('inctestpkg')
  90. packagedir.makedirs()
  91. packagedir.child('__init__.py').setContent(b"""
  92. from incremental import Version
  93. introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
  94. next_released_version = "inctestpkg NEXT"
  95. """)
  96. packagedir.child('_version.py').setContent(b"""
  97. from incremental import Version
  98. __version__ = Version('inctestpkg', 1, 2, 3)
  99. __all__ = ["__version__"]
  100. """)
  101. self.getcwd = lambda: self.srcdir.path
  102. self.packagedir = packagedir
  103. class Date(object):
  104. year = 2016
  105. month = 8
  106. self.date = Date()
  107. def test_path(self):
  108. """
  109. `incremental.update package --path=<path> --dev` increments the dev
  110. version of the package on the given path
  111. """
  112. out = []
  113. _run(u'inctestpkg', path=None, newversion=None,
  114. patch=False, rc=False, dev=True, create=False, _date=self.date,
  115. _getcwd=self.getcwd, _print=out.append)
  116. self.assertTrue(self.packagedir.child("_version.py").exists())
  117. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  118. b'''"""
  119. Provides inctestpkg version information.
  120. """
  121. # This file is auto-generated! Do not edit!
  122. # Use `python -m incremental.update inctestpkg` to change this file.
  123. from incremental import Version
  124. __version__ = Version('inctestpkg', 1, 2, 3, dev=0)
  125. __all__ = ["__version__"]
  126. ''')
  127. _run(u'inctestpkg', path=None, newversion=None,
  128. patch=False, rc=False, dev=True, create=False, _date=self.date,
  129. _getcwd=self.getcwd, _print=out.append)
  130. self.assertTrue(self.packagedir.child("_version.py").exists())
  131. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  132. b'''"""
  133. Provides inctestpkg version information.
  134. """
  135. # This file is auto-generated! Do not edit!
  136. # Use `python -m incremental.update inctestpkg` to change this file.
  137. from incremental import Version
  138. __version__ = Version('inctestpkg', 1, 2, 3, dev=1)
  139. __all__ = ["__version__"]
  140. ''')
  141. class CreatedUpdateTests(TestCase):
  142. maxDiff = None
  143. def setUp(self):
  144. self.srcdir = FilePath(self.mktemp())
  145. self.srcdir.makedirs()
  146. packagedir = self.srcdir.child('inctestpkg')
  147. packagedir.makedirs()
  148. packagedir.child('__init__.py').setContent(b"""
  149. from incremental import Version
  150. introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
  151. next_released_version = "inctestpkg NEXT"
  152. """)
  153. packagedir.child('_version.py').setContent(b"""
  154. from incremental import Version
  155. __version__ = Version('inctestpkg', 1, 2, 3)
  156. __all__ = ["__version__"]
  157. """)
  158. self.getcwd = lambda: self.srcdir.path
  159. self.packagedir = packagedir
  160. class Date(object):
  161. year = 2016
  162. month = 8
  163. self.date = Date()
  164. def test_path(self):
  165. """
  166. `incremental.update package --path=<path> --dev` increments the dev
  167. version of the package on the given path
  168. """
  169. out = []
  170. _run(u'inctestpkg', path=self.packagedir.path, newversion=None,
  171. patch=False, rc=False, dev=True, create=False, _date=self.date,
  172. _print=out.append)
  173. self.assertTrue(self.packagedir.child("_version.py").exists())
  174. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  175. b'''"""
  176. Provides inctestpkg version information.
  177. """
  178. # This file is auto-generated! Do not edit!
  179. # Use `python -m incremental.update inctestpkg` to change this file.
  180. from incremental import Version
  181. __version__ = Version('inctestpkg', 1, 2, 3, dev=0)
  182. __all__ = ["__version__"]
  183. ''')
  184. def test_dev(self):
  185. """
  186. `incremental.update package --dev` increments the dev version.
  187. """
  188. out = []
  189. _run(u'inctestpkg', path=None, newversion=None, patch=False, rc=False,
  190. dev=True, create=False, _date=self.date, _getcwd=self.getcwd,
  191. _print=out.append)
  192. self.assertTrue(self.packagedir.child("_version.py").exists())
  193. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  194. b'''"""
  195. Provides inctestpkg version information.
  196. """
  197. # This file is auto-generated! Do not edit!
  198. # Use `python -m incremental.update inctestpkg` to change this file.
  199. from incremental import Version
  200. __version__ = Version('inctestpkg', 1, 2, 3, dev=0)
  201. __all__ = ["__version__"]
  202. ''')
  203. def test_patch(self):
  204. """
  205. `incremental.update package --patch` increments the patch version.
  206. """
  207. out = []
  208. _run(u'inctestpkg', path=None, newversion=None, patch=True, rc=False,
  209. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  210. _print=out.append)
  211. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  212. b'''"""
  213. Provides inctestpkg version information.
  214. """
  215. # This file is auto-generated! Do not edit!
  216. # Use `python -m incremental.update inctestpkg` to change this file.
  217. from incremental import Version
  218. __version__ = Version('inctestpkg', 1, 2, 4)
  219. __all__ = ["__version__"]
  220. ''')
  221. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  222. b"""
  223. from incremental import Version
  224. introduced_in = Version('inctestpkg', 1, 2, 4).short()
  225. next_released_version = "inctestpkg 1.2.4"
  226. """)
  227. def test_patch_with_prerelease_and_dev(self):
  228. """
  229. `incremental.update package --patch` increments the patch version, and
  230. disregards any old prerelease/dev versions.
  231. """
  232. self.packagedir.child('_version.py').setContent(b"""
  233. from incremental import Version
  234. __version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=2)
  235. __all__ = ["__version__"]
  236. """)
  237. out = []
  238. _run(u'inctestpkg', path=None, newversion=None, patch=True, rc=False,
  239. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  240. _print=out.append)
  241. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  242. b'''"""
  243. Provides inctestpkg version information.
  244. """
  245. # This file is auto-generated! Do not edit!
  246. # Use `python -m incremental.update inctestpkg` to change this file.
  247. from incremental import Version
  248. __version__ = Version('inctestpkg', 1, 2, 4)
  249. __all__ = ["__version__"]
  250. ''')
  251. def test_rc_patch(self):
  252. """
  253. `incremental.update package --patch --rc` increments the patch
  254. version and makes it a release candidate.
  255. """
  256. out = []
  257. _run(u'inctestpkg', path=None, newversion=None, patch=True, rc=True,
  258. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  259. _print=out.append)
  260. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  261. b'''"""
  262. Provides inctestpkg version information.
  263. """
  264. # This file is auto-generated! Do not edit!
  265. # Use `python -m incremental.update inctestpkg` to change this file.
  266. from incremental import Version
  267. __version__ = Version('inctestpkg', 1, 2, 4, release_candidate=1)
  268. __all__ = ["__version__"]
  269. ''')
  270. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  271. b"""
  272. from incremental import Version
  273. introduced_in = Version('inctestpkg', 1, 2, 4, release_candidate=1).short()
  274. next_released_version = "inctestpkg 1.2.4rc1"
  275. """)
  276. def test_rc_with_existing_rc(self):
  277. """
  278. `incremental.update package --rc` increments the rc version if the
  279. existing version is an rc, and discards any dev version.
  280. """
  281. self.packagedir.child('_version.py').setContent(b"""
  282. from incremental import Version
  283. __version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=2)
  284. __all__ = ["__version__"]
  285. """)
  286. out = []
  287. _run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
  288. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  289. _print=out.append)
  290. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  291. b'''"""
  292. Provides inctestpkg version information.
  293. """
  294. # This file is auto-generated! Do not edit!
  295. # Use `python -m incremental.update inctestpkg` to change this file.
  296. from incremental import Version
  297. __version__ = Version('inctestpkg', 1, 2, 3, release_candidate=2)
  298. __all__ = ["__version__"]
  299. ''')
  300. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  301. b"""
  302. from incremental import Version
  303. introduced_in = Version('inctestpkg', 1, 2, 3, release_candidate=2).short()
  304. next_released_version = "inctestpkg 1.2.3rc2"
  305. """)
  306. def test_rc_with_no_rc(self):
  307. """
  308. `incremental.update package --rc`, when the package is not a release
  309. candidate, will issue a new major/minor rc, and disregards the micro
  310. and dev.
  311. """
  312. self.packagedir.child('_version.py').setContent(b"""
  313. from incremental import Version
  314. __version__ = Version('inctestpkg', 1, 2, 3, dev=2)
  315. __all__ = ["__version__"]
  316. """)
  317. out = []
  318. _run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
  319. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  320. _print=out.append)
  321. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  322. b'''"""
  323. Provides inctestpkg version information.
  324. """
  325. # This file is auto-generated! Do not edit!
  326. # Use `python -m incremental.update inctestpkg` to change this file.
  327. from incremental import Version
  328. __version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
  329. __all__ = ["__version__"]
  330. ''')
  331. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  332. b"""
  333. from incremental import Version
  334. introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
  335. next_released_version = "inctestpkg 16.8.0rc1"
  336. """)
  337. def test_full_with_rc(self):
  338. """
  339. `incremental.update package`, when the package is a release
  340. candidate, will issue the major/minor, sans release candidate or dev.
  341. """
  342. out = []
  343. _run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
  344. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  345. _print=out.append)
  346. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  347. b'''"""
  348. Provides inctestpkg version information.
  349. """
  350. # This file is auto-generated! Do not edit!
  351. # Use `python -m incremental.update inctestpkg` to change this file.
  352. from incremental import Version
  353. __version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
  354. __all__ = ["__version__"]
  355. ''')
  356. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  357. b"""
  358. from incremental import Version
  359. introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
  360. next_released_version = "inctestpkg 16.8.0rc1"
  361. """)
  362. _run(u'inctestpkg', path=None, newversion=None, patch=False, rc=False,
  363. dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
  364. _print=out.append)
  365. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  366. b'''"""
  367. Provides inctestpkg version information.
  368. """
  369. # This file is auto-generated! Do not edit!
  370. # Use `python -m incremental.update inctestpkg` to change this file.
  371. from incremental import Version
  372. __version__ = Version('inctestpkg', 16, 8, 0)
  373. __all__ = ["__version__"]
  374. ''')
  375. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  376. b"""
  377. from incremental import Version
  378. introduced_in = Version('inctestpkg', 16, 8, 0).short()
  379. next_released_version = "inctestpkg 16.8.0"
  380. """)
  381. def test_full_without_rc(self):
  382. """
  383. `incremental.update package`, when the package is NOT a release
  384. candidate, will raise an error.
  385. """
  386. out = []
  387. with self.assertRaises(ValueError) as e:
  388. _run(u'inctestpkg', path=None, newversion=None, patch=False,
  389. rc=False, dev=False, create=False, _date=self.date,
  390. _getcwd=self.getcwd, _print=out.append)
  391. self.assertEqual(
  392. e.exception.args[0],
  393. "You need to issue a rc before updating the major/minor")
  394. def test_no_mix_newversion(self):
  395. """
  396. The `--newversion` flag can't be mixed with --patch, --rc, or --dev.
  397. """
  398. out = []
  399. with self.assertRaises(ValueError) as e:
  400. _run(u'inctestpkg', path=None, newversion="1", patch=True,
  401. rc=False, dev=False, create=False, _date=self.date,
  402. _getcwd=self.getcwd, _print=out.append)
  403. self.assertEqual(e.exception.args[0], "Only give --newversion")
  404. with self.assertRaises(ValueError) as e:
  405. _run(u'inctestpkg', path=None, newversion="1", patch=False,
  406. rc=True, dev=False, create=False, _date=self.date,
  407. _getcwd=self.getcwd, _print=out.append)
  408. self.assertEqual(e.exception.args[0], "Only give --newversion")
  409. with self.assertRaises(ValueError) as e:
  410. _run(u'inctestpkg', path=None, newversion="1", patch=False,
  411. rc=False, dev=True, create=False, _date=self.date,
  412. _getcwd=self.getcwd, _print=out.append)
  413. self.assertEqual(e.exception.args[0], "Only give --newversion")
  414. def test_no_mix_dev(self):
  415. """
  416. The `--dev` flag can't be mixed with --patch, or --rc.
  417. """
  418. out = []
  419. with self.assertRaises(ValueError) as e:
  420. _run(u'inctestpkg', path=None, newversion=None, patch=True,
  421. rc=False, dev=True, create=False, _date=self.date,
  422. _getcwd=self.getcwd, _print=out.append)
  423. self.assertEqual(e.exception.args[0], "Only give --dev")
  424. with self.assertRaises(ValueError) as e:
  425. _run(u'inctestpkg', path=None, newversion=None, patch=False,
  426. rc=True, dev=True, create=False, _date=self.date,
  427. _getcwd=self.getcwd, _print=out.append)
  428. self.assertEqual(e.exception.args[0], "Only give --dev")
  429. def test_no_mix_create(self):
  430. """
  431. The `--create` flag can't be mixed with --patch, --rc, --dev, or
  432. --newversion.
  433. """
  434. out = []
  435. with self.assertRaises(ValueError) as e:
  436. _run(u'inctestpkg', path=None, newversion=None, patch=True,
  437. rc=False, dev=False, create=True, _date=self.date,
  438. _getcwd=self.getcwd, _print=out.append)
  439. self.assertEqual(e.exception.args[0], "Only give --create")
  440. with self.assertRaises(ValueError) as e:
  441. _run(u'inctestpkg', path=None, newversion="1", patch=False,
  442. rc=False, dev=False, create=True, _date=self.date,
  443. _getcwd=self.getcwd, _print=out.append)
  444. self.assertEqual(e.exception.args[0], "Only give --create")
  445. with self.assertRaises(ValueError) as e:
  446. _run(u'inctestpkg', path=None, newversion=None, patch=False,
  447. rc=True, dev=False, create=True, _date=self.date,
  448. _getcwd=self.getcwd, _print=out.append)
  449. self.assertEqual(e.exception.args[0], "Only give --create")
  450. with self.assertRaises(ValueError) as e:
  451. _run(u'inctestpkg', path=None, newversion=None, patch=False,
  452. rc=False, dev=True, create=True, _date=self.date,
  453. _getcwd=self.getcwd, _print=out.append)
  454. self.assertEqual(e.exception.args[0], "Only give --create")
  455. def test_newversion(self):
  456. """
  457. `incremental.update package --newversion=1.2.3rc1dev3`, will set that
  458. version in the package.
  459. """
  460. out = []
  461. _run(u'inctestpkg', path=None, newversion="1.2.3rc1dev3", patch=False,
  462. rc=False, dev=False, create=False, _date=self.date,
  463. _getcwd=self.getcwd, _print=out.append)
  464. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  465. b'''"""
  466. Provides inctestpkg version information.
  467. """
  468. # This file is auto-generated! Do not edit!
  469. # Use `python -m incremental.update inctestpkg` to change this file.
  470. from incremental import Version
  471. __version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=3)
  472. __all__ = ["__version__"]
  473. ''')
  474. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  475. (b"""
  476. from incremental import Version
  477. introduced_in = Version('inctestpkg', 1, 2, 3, """
  478. b"""release_candidate=1, dev=3).short()
  479. next_released_version = "inctestpkg 1.2.3rc1dev3"
  480. """))
  481. def test_newversion_bare(self):
  482. """
  483. `incremental.update package --newversion=1`, will set that
  484. version in the package.
  485. """
  486. out = []
  487. _run(u'inctestpkg', path=None, newversion="1", patch=False,
  488. rc=False, dev=False, create=False, _date=self.date,
  489. _getcwd=self.getcwd, _print=out.append)
  490. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  491. b'''"""
  492. Provides inctestpkg version information.
  493. """
  494. # This file is auto-generated! Do not edit!
  495. # Use `python -m incremental.update inctestpkg` to change this file.
  496. from incremental import Version
  497. __version__ = Version('inctestpkg', 1, 0, 0)
  498. __all__ = ["__version__"]
  499. ''')
  500. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  501. b"""
  502. from incremental import Version
  503. introduced_in = Version('inctestpkg', 1, 0, 0).short()
  504. next_released_version = "inctestpkg 1.0.0"
  505. """)
  506. class ScriptTests(TestCase):
  507. def setUp(self):
  508. self.srcdir = FilePath(self.mktemp())
  509. self.srcdir.makedirs()
  510. self.srcdir.child('src').makedirs()
  511. packagedir = self.srcdir.child('src').child('inctestpkg')
  512. packagedir.makedirs()
  513. packagedir.child('__init__.py').setContent(b"""
  514. from incremental import Version
  515. introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
  516. next_released_version = "inctestpkg NEXT"
  517. """)
  518. packagedir.child('_version.py').setContent(b"""
  519. from incremental import Version
  520. __version__ = Version('inctestpkg', 1, 2, 3)
  521. __all__ = ["__version__"]
  522. """)
  523. self.getcwd = lambda: self.srcdir.path
  524. self.packagedir = packagedir
  525. class Date(object):
  526. year = 2016
  527. month = 8
  528. class DateModule(object):
  529. def today(self):
  530. return Date()
  531. self.date = DateModule()
  532. def test_run(self):
  533. """
  534. Calling run() with no args will cause it to print help.
  535. """
  536. stringio = NativeStringIO()
  537. self.patch(sys, 'stdout', stringio)
  538. with self.assertRaises(SystemExit) as e:
  539. run(["--help"])
  540. self.assertEqual(e.exception.args[0], 0)
  541. self.assertIn("Show this message and exit", stringio.getvalue())
  542. def test_insufficient_args(self):
  543. """
  544. Calling run() with no args will cause it to print help.
  545. """
  546. stringio = NativeStringIO()
  547. self.patch(sys, 'stdout', stringio)
  548. self.patch(os, 'getcwd', self.getcwd)
  549. self.patch(datetime, 'date', self.date)
  550. with self.assertRaises(SystemExit) as e:
  551. run(["inctestpkg", "--rc"])
  552. self.assertEqual(e.exception.args[0], 0)
  553. self.assertIn("Updating codebase", stringio.getvalue())
  554. self.assertEqual(self.packagedir.child("_version.py").getContent(),
  555. b'''"""
  556. Provides inctestpkg version information.
  557. """
  558. # This file is auto-generated! Do not edit!
  559. # Use `python -m incremental.update inctestpkg` to change this file.
  560. from incremental import Version
  561. __version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
  562. __all__ = ["__version__"]
  563. ''')
  564. self.assertEqual(self.packagedir.child("__init__.py").getContent(),
  565. b"""
  566. from incremental import Version
  567. introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
  568. next_released_version = "inctestpkg 16.8.0rc1"
  569. """)