Commit graph

1814 commits

Author SHA1 Message Date
Robert Hönig a475077da9 zulip_bots: Use utf-8 when reading fixtures.
This prevents issues with Python using platform
specific encodings, such as CP1252 on Windows.
2017-12-14 05:56:55 -05:00
neiljp (Neil Pilgrim) ced3a97b3f TicTacToe: Extract sanitized_move from TicTacToeGame as coords_from_command. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) c6e9beb2a1 TicTacToe: Rename & simplify some functions.
Rename:
* win_conditions -> contains_winning_move
* check_validity -> is_valid_move
* sanitize_move -> sanitized_move
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) a72764d7b8 TicTacToe: Improve encapsulation of board data in TicTacToeGame. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) aadf639e5e TicTacToe: Remove python2 compatibility imports 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) cff3e30734 TicTacToe: Coalesce & refactor response messages. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) a7f7994302 TicTacToe: Use game objects instead of calling TicTacToeGame with self. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) b1dba0bd30 TicTacToe: Move tictactoe() text from game-logic to handle_message.
Also remove early debugging logic.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 6d4b205595 TicTacToe: Use simple comparison instead of overly-complex first_time(). 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) d10601b554 TicTacToe: Refactor new-game handling into existing section.
Also extend storage-update section; all related storage.put calls
are now together.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 33e8517b87 TicTacToe: Decouple TicTacToeGame.tictactoe() string from move result.
This allows the storage update to be refactored into one block before
sending the result text.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 5843801d13 TicTacToe: Simplify superfluous initial command logic. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 969b984b80 TicTacToe tests: Extend tests to end of game lose condition & quit. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 62d781a53e TicTacToe tests: Extend tests to end of game draw condition & quit. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) d686a3b337 bots (minor): Simplify test_link_shortener.py further.
* Rename test names to be more descriptive.
* Inline messages/response test.
2017-12-12 13:57:55 -06:00
Marco Burstein e9aa94f81c mypy: Add annotations for Link Shortener Bot.
Based on work started by @skunkmb.
2017-12-12 13:57:55 -06:00
Steve Howell c4b42ff599 lint: Prevent __future__ in zulip_bots/zulip_bots/bots.
We should eventually extend this lint rule to all of
zulip_bots.
2017-12-12 07:35:30 -06:00
Steve Howell f69d71c3b1 bots: Remove unneeded __future__ imports. 2017-12-12 07:32:14 -06:00
Steve Howell fd069dff82 lint: Require python3 shebangs.
This commit was originally from @fredfishgames, but it
needed a big rebase due to use letting it sit too long.
Also, we decided not to have shebangs at the top of test
files.
2017-12-12 07:14:16 -06:00
neiljp (Neil Pilgrim) 28687f18ca mypy: Add --disallow-any=generics & extend typing accordingly.
Also reset typing of ExternalBotHandler to Any after discussion.
2017-12-11 20:14:00 -06:00
fredfishgames 424a4bb631 add _ to googletranslate and googlesearch 2017-12-11 13:15:43 -06:00
fredfishgames 657c6d7b9c interactive bots: Create DialogFlow bot. 2017-12-11 13:15:43 -06:00
Sivagiri Visakan 277b384379 bots: Add 100% test coverage to define bot. 2017-12-11 12:49:43 -06:00
Sivagiri Visakan d663dd2f49 bots: Make wikipedia bot return an error message.
Previously the Wikipedia bot was replying with `null` in case of an error.
A change has been made to return an error message if an error occurs.
2017-12-11 12:49:43 -06:00
Rohitt Vashishtha e5e5868414 tests: Add test_helloworld to run-mypy list. 2017-12-11 11:43:44 -06:00
Steve Howell fe3b995590 Fix KeyboardInterrupt handler in terminal.py.
The exception name was wrong before.
2017-12-11 11:07:28 -06:00
Marco Burstein 3c66894aff incrementor: Clean up type annotation/conversion.
This adds mypy annotations, and we also make the type
conversions in `handle_message` be a little more clear.

(@showell helped clean up this commit a bit)
2017-12-11 10:59:40 -06:00
Steve Howell b4ff5230a9 mypy: Fix StateHandler annotations.
`get` and `put` deal with arbitrary JSON-serializable types,
so `Text` was an innacurate annotation.
2017-12-11 10:35:03 -06:00
Steve Howell 7bc79a8911 Extract StubBotTestCase.make_request_message().
This de-duplicates some code and also makes it a bit
easier in the future to override how we create messages.
2017-12-11 09:39:48 -06:00
Steve Howell 5686d603ef minor: Clean up test_lib imports. 2017-12-11 09:34:11 -06:00
Steve Howell 971b48cbfc Decouple mock_request_exception from StubBotTestCase.
Tests that need mock_request_exception can just import it
directly now.
2017-12-11 09:26:36 -06:00
Steve Howell 1dbb73a1c8 Extract test_file_utils.py.
This isolates all the code that depends on our current
directory structure, and it de-clutters test_lib.py a bit.
2017-12-11 09:23:24 -06:00
Steve Howell 5034220829 bots: Extract request_test_lib.py.
The new module mocks out calls to the requests library, which
is used by many of our bots that use third party services.

Mocking of requests.py is mostly orthogonal to our other
testing concerns.
2017-12-11 09:05:06 -06:00
Steve Howell fb8ee29bc1 zulip_bots/test_lib.py: Remove unneeded imports/shebang. 2017-12-11 08:26:50 -06:00
Steve Howell b4705c2343 bot tests: Remove BotTestCase.
All of the functionality of BotTestCase was either directly
moved to StubBotTestCase or replaced by similar functions,
and all bots have been ported to StubBotTestCase.
2017-12-11 08:26:50 -06:00
sColin16 6109bd198a interactive bots: Improve wikipedia bot. 2017-12-11 08:05:09 -06:00
sColin16 1221c7107f test_lib.py: Add mock_request_exception. 2017-12-11 08:05:09 -06:00
Steve Howell 0a05a28e34 test_virtual_fs.py: Use StubBotTestCase.
We use verify_dialog() now, and we also have a different
default email.
2017-12-11 08:00:02 -06:00
Steve Howell a7f6c0f142 Add display_recipient to StubBotTestCase.verify_dialog. 2017-12-11 07:57:36 -06:00
Marco Burstein 3c794b384b mypy: Add annotations for Yoda Bot. 2017-12-11 07:33:16 -06:00
Marco Burstein 8f64405bae mypy: Add annotations for Wikipedia Bot. 2017-12-11 07:26:43 -06:00
Marco Burstein 0467f83314 mypy: Add annotations for xkcd Bot. 2017-12-11 07:26:43 -06:00
neiljp (Neil Pilgrim) e01ecc9fde test_virtual_fs.py: Remove unneeded imports and shebang. 2017-12-11 07:16:54 -06:00
neiljp (Neil Pilgrim) 060211a131 bots: Simplify test_yoda.py. 2017-12-10 18:16:40 -08:00
neiljp (Neil Pilgrim) 20cb236fdd bots: Simplify test_weather.py. 2017-12-10 18:16:27 -08:00
neiljp (Neil Pilgrim) 84d92337be bots: Simplify test_googletranslate.py.
Also add sender_full_name parameter in StubBotTestCase.verify_reply().
2017-12-10 16:26:03 -08:00
neiljp (Neil Pilgrim) c8824cb2e5 bots: Simplify test_link_shortener.py. 2017-12-10 14:04:00 -08:00
Steve Howell f8cefc5352 minor: Fix imports in test_xkcd.py.
We no longer need the `future` imports and we can
use `StubBotTestCase` now.
2017-12-10 09:25:12 -06:00
Marco Burstein 700ce6a673 bots: Create Chess Bot.
Chess Bot is a bot that allows you to play chess against either another
user or the computer. Use `start with other user` or
`start as <color> with computer` to start a game.

In order to play against a computer, `chess.conf` must be set with the
key `stockfish_location` set to the location of the Stockfish program on
this computer.

Use `bot_handler.storage` to preserve game state across messages.

(@showell also did minor work here to have the test use verify_dialog()
and have the bot respond to empty messages)
2017-12-10 09:14:32 -06:00
Steve Howell 2fa677a3e0 bot tests: Extract StubBotTestCase._get_handlers().
This is mostly a pure refactoring, but it also ensures
that `initialize` is called in a consistent way by most
of our test helpers.  (This didn't cause problems before,
since some bots don't require initialization.)
2017-12-10 06:35:51 -08:00