Commit graph

1056 commits

Author SHA1 Message Date
Rohitt Vashishtha 5a2412a60b tools: Copy printer.py from zulip server. 2017-07-06 19:58:50 -04:00
Rohitt Vashishtha 56259ae146 tools: Add basic .travis.yml to run tests. 2017-07-06 19:58:50 -04:00
Rohitt Vashishtha 4109ba9eee dependencies: Add requirements file for define bot. 2017-07-06 13:09:08 -07:00
Rohitt Vashishtha 71b43e4d3e tools: Add .gitignore. 2017-07-06 13:09:08 -07:00
neiljp (Neil Pilgrim) 7910d8767a Bots: Adjust Incrementor bot to use StateHandler 2017-07-03 09:50:14 -07:00
Rohitt Vashishtha 2645c97276 bots: Add dependencies management.
Adds the file api/bots_api/provision.py that installs dependencies
for bots using pip. This file is also used by run.py when running
a bot. However, for testing, you need to separately provision the bots.
2017-06-28 12:00:13 -04:00
Daria Phoebe Brashear bafbd3689b zephyr_mirror.py: update zulip server url for zephyr documentation
zulipchat.com hosts the documentation (as well as the server); make the
url reflect it
2017-06-26 14:07:28 -07:00
Shane Kearns c3d99f6613 integrations/perforce: Skip messages for missing streams.
For a large perforce server with many users, this allows projects
to opt-in to zulip notifications by creating the stream for the
branch to be monitored.

Commits to paths for which a stream mapping yields a result,
but no stream exists in Zulip, are simply dropped silently.

This behaviour is opt-in, by setting the configuration key
ZULIP_IGNORE_MISSING_STREAM = True
in the zulip_perforce_config.py file.
2017-06-22 14:27:13 -04:00
Shane Kearns 99b87dd78d integrations/perforce: Display changelist ID as a p4web link.
The general regex-based linkify in zulip does not allow '@' as the
prefix. In any case we know here that it is definitely a changelist
number, which is better.

Adding P4_WEB="https://p4web.example.com" to the config will enable
this behaviour. If P4_WEB is absent from the config, or has the
value None, no link is inserted.
2017-06-22 14:27:13 -04:00
Shane Kearns 680f453834 integrations/perforce: Fix formatting of multiple paragraphs.
This fixes multiple paragraphs in a commit message escaping
from the block quote by using triple-backquote quoting instead
of '>' which only applies to one paragraph.
2017-06-22 14:27:13 -04:00
Rohitt Vashishtha b475258446 bots: Add tests for github_detail bot. 2017-06-22 11:25:31 -04:00
Rohitt Vashishtha b8b38bb1f7 bots: Fix github details bot. 2017-06-22 11:25:31 -04:00
Rohitt Vashishtha 9505778538 bots: Move github issue bot to api/bots. 2017-06-22 11:25:31 -04:00
Zac Pullar-Strecker cf9aa78e3f bots: Add GitHub issue and pr bot 2017-06-22 11:25:31 -04:00
vaibhav b5982794e7 zulip-bot-server: Add test suite for zulip bot server.
Fixes: #5358.
2017-06-22 10:37:05 -04:00
vaibhav 303daf074a zulip-bot-server: Rename and move source file to api/zulip directory and
add support for running the server from any place.
2017-06-22 10:37:05 -04:00
vaibhav 3a3636105c zulip-bot-server: Add optparse for parsing the flaskbotrc file path and
commandline arguments.
2017-06-22 10:37:05 -04:00
vaibhav b6ca6e5393 zulip-bot-server: Add error handling and informative error messages. 2017-06-22 10:37:05 -04:00
Rohitt Vashishtha c1f3544e33 bots: Allow optional config files for bots. 2017-06-21 16:43:58 -04:00
Rohitt Vashishtha ea3dd2bd87 bots: Add HTTP status code support to mock http conversations. 2017-06-21 16:43:58 -04:00
Abhijeet Kaur 400d46a532 bots: Move "EmbeddedBotHandler" class to "zerver/lib/bot_lib.py" file.
This would keep embedded classes for zulip at one place, that is, in
"zerver" directory. This also fixes break in PyPI package for bindings.
2017-06-21 16:01:16 -04:00
Abhijeet Kaur 3c41033d8c bots: Add a separate class "EmbeddedHandlerBots" in bot_lib.py.
Add another class for bot type as embedded bot, for bots that run directly
on Zulip server. This class uses internal 'internal_send_messages' from
actions.py instead of using the 'send_message' function from Zulip Client
class.

We haven't gone ahead with creating an abstract superclass right away.
We just have two versions for now, it would be easier to iterate a little
more on the interfaces, and then only add the superclass when we're ready
to lock down the interface.
2017-06-21 10:22:53 -04:00
Abhijeet Kaur 22cd8a1e7f bots: Remove unnecessary comment from test_giphy file.
This comment was added to explain the functionality of the
method called below it. Some changes in the method have led this
comment to be unnecessary.
2017-06-21 10:22:53 -04:00
Abhijeet Kaur b406150a56 bots: Rename BotHandlerApi class to ExternalBotHandler.
This change is done for better understanding of the class functionality
from its class name. Now there will be 3 different classes for bots,
namely 'ExternalBotHandler', 'FlaskBotHandler' and  'EmbeddedBotHandler'.
2017-06-21 10:22:53 -04:00
neiljp 08b4ebf597 Extend message parameters passed in check_expected_responses 2017-06-20 07:19:12 -04:00
Robert Hönig fcfda08f4d bots: Update yoda bot to use get_config_info(). 2017-06-19 07:11:08 -04:00
Robert Hönig ff015cf7b6 bots: Update weather bot to use get_config_info(). 2017-06-19 07:11:08 -04:00
Robert Hönig a10ee59853 bots: Update foursquare bot to use get_config_info(). 2017-06-19 07:11:08 -04:00
Robert Hönig c4a85b2f74 bots: Update commute bot to use get_config_info(). 2017-06-19 07:11:08 -04:00
Robert Hönig 4ce5521516 bots: tests: Remove superfluous sys.path insertion. 2017-06-19 07:11:08 -04:00
Robert Hönig 94587db657 bots: Correctly set paths to bot modules for testing. 2017-06-19 07:11:08 -04:00
Tim Abbott 107bbff769 mypy: Fix likely typeshed warning with readfp. 2017-06-15 03:42:05 -07:00
Robert Hönig 6e44c1bb88 bots: Check existance of config file in get_config_info(). 2017-06-15 02:17:31 -07:00
Robert Hönig 84c1827291 bots: Test get_config_info with giphy bot.
This involves both using the new `initialize`
method for calling `get_config_info`, and
refactoring the testing framework by adding a
way for mocking this method.
2017-06-14 20:25:07 -07:00
Robert Hönig f4369fe013 bots: tests: Mock bots only once.
This is done by moving the mocking and patching
code to the `setUp` and `tearDown` functions.
2017-06-14 20:25:07 -07:00
Robert Hönig 8fba251b69 bots: Add get_config_info function for bots. 2017-06-14 20:25:07 -07:00
Robert Hönig acd71fb96e bots: Add non-obligatory initialize func for bots.
A bot that implements `initialize(client)` has initial
access to the `client` object, before `handle_message`
is called.
2017-06-14 20:25:07 -07:00
Robert Hönig fcb4cf6721 bots: Rename BotHandlerApi object client to bot_handler. 2017-06-13 11:13:23 -07:00
Robert Hönig c193443541 bots: Move mock http conversations to fixtures. 2017-06-13 09:22:35 -07:00
vaibhav 2d94fd16ba bots: Add simple flask server for running contrib bots. 2017-06-12 22:08:44 -07:00
Robert Hönig 01c363317e bots: tests: Move http mock to context manager.
This commit decouples the http mock conversation
feature from assert_bot_response(), and moves it
to the context manager mock_http_conversation().
This allows a modular design with context managers
that could be added for assert_bot_response().
2017-06-09 05:25:17 -05:00
Tim Abbott a9bb0c9417 test-bots: Fail if a bot is missing __init__.py. 2017-06-08 09:21:12 -07:00
neiljp 225328e3af Switch back to single suite of tests & add --exclude option 2017-06-08 09:18:24 -07:00
Tim Abbott 36329662d0 bots: Add missing __init__.py files. 2017-06-08 09:18:24 -07:00
Tim Abbott f94bfd6de4 test-bots: Fix lint errors. 2017-06-07 14:02:27 -07:00
derAnfaenger 8f2fc6069d bots: Refactor and simplify bot_test_lib.py.
This commit integrates the mock_test function in
check_expected_responses and makes this function usable
for simple tests only by not allowing mock http conversations.

assert_bot_response() is now used for single message-response pairs,
resolving potential issues with multiple messages and a single http
request-response pair.

The giphy bot test file is updated accordingly.
2017-06-06 23:06:40 -07:00
neiljp 894a816618 test-bots: Enable list of bots to test & check for valid bot names. 2017-06-06 22:29:57 -07:00
Tim Abbott 48632752c4 log2zulip: Fix paths to the rest of the project. 2017-06-05 23:48:31 -07:00
Abhijeet Kaur 709a2521a1 bots: Add test file for 'giphy' bot.
This bot replies with different gif for the same query
that is provided. Mocked a definite response from requests.get
function.
2017-06-05 15:11:46 -07:00
Tim Abbott d0e5447cd0 bots: Refactor bot testing library to still support un-mocked HTTP.
Several of our bots haven't been converted to have mock responses for
third-party APIs yet, and we may want that code path for with-network
testing anyway.
2017-06-05 15:11:46 -07:00