commands.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # -*- coding: utf-8 -*-
  2. """
  3. plan.testsuite.commands
  4. ~~~~~~~~~~~~~~~~~~~~~~~
  5. Tests the command line tools for Plan.
  6. :copyright: (c) 2014 by Shipeng Feng.
  7. :license: BSD, see LICENSE for more details.
  8. """
  9. import unittest
  10. import click
  11. from click.testing import CliRunner
  12. from plan.commands import Echo
  13. from plan.testsuite import BaseTestCase
  14. class EchoTestRunner(object):
  15. def __init__(self):
  16. self.runner = CliRunner()
  17. def invoke(self, echo_method, message):
  18. @click.command()
  19. @click.argument('message')
  20. def command(message):
  21. echo_method(message)
  22. return self.runner.invoke(command, [message])
  23. class EchoTestCase(BaseTestCase):
  24. def setup(self):
  25. self.runner = EchoTestRunner()
  26. def teardown(self):
  27. self.runner = None
  28. def test_echo(self):
  29. result = self.runner.invoke(Echo.echo, 'echo')
  30. self.assert_true(result.exit_code == 0)
  31. self.assert_equal(result.output, 'echo\n')
  32. def test_secho(self):
  33. result = self.runner.invoke(Echo.secho, 'secho')
  34. self.assert_true(result.exit_code == 0)
  35. self.assert_equal(result.output, 'secho\n')
  36. def test_message(self):
  37. result = self.runner.invoke(Echo.message, 'message')
  38. self.assert_true(result.exit_code == 0)
  39. self.assert_equal(result.output, '[message] message\n')
  40. def test_write(self):
  41. result = self.runner.invoke(Echo.write, 'write')
  42. self.assert_true(result.exit_code == 0)
  43. self.assert_equal(result.output, '[write] write\n')
  44. def test_fail(self):
  45. result = self.runner.invoke(Echo.fail, 'fail')
  46. self.assert_true(result.exit_code == 0)
  47. self.assert_equal(result.output, '[fail] fail\n')
  48. def test_add(self):
  49. result = self.runner.invoke(Echo.add, 'add')
  50. self.assert_true(result.exit_code == 0)
  51. self.assert_equal(result.output, '[add] add\n')
  52. def test_done_with_message(self):
  53. result = self.runner.invoke(Echo.done, 'done')
  54. self.assert_true(result.exit_code == 0)
  55. self.assert_equal(result.output, '[done] done\n')
  56. def test_done_without_message(self):
  57. result = self.runner.invoke(Echo.done, '')
  58. self.assert_true(result.exit_code == 0)
  59. self.assert_equal(result.output, '[done]!\n')
  60. def suite():
  61. suite = unittest.TestSuite()
  62. suite.addTest(unittest.makeSuite(EchoTestCase))
  63. return suite