|  | Commit message (Collapse) | Author | Age | Lines | 
|---|
| | |  | 
| | |  | 
| |\  
| | 
| | 
| | | unittest-migration | 
| | |\  
| | | 
| | | | Migrate `test_constants` to unittest | 
| | |/  
| |   
| |   
| |   
| | | Migrates the `test_constants.py` file to unittest. As with the pytest
version, there is not yet support to test container types. | 
| |/  
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
| | This commit introduces some new Mock-types to the already existing
Mock-types for discord.py objects. The total list is now:
- MockGuild
- MockRole
- MockMember
- MockBot
- MockContext
- MockTextChannel
- MockMessage
In addition, I've added all coroutines in the documentation for these
discord.py objects as `AsyncMock` attributes to ease testing. Tests
ensure that the attributes set for the Mocks exist for the actual
discord.py objects as well. | 
| | |  | 
| |\ |  | 
| | | |  | 
| | | |  | 
| | | |  | 
| |\ \ |  | 
| | | | |  | 
| | |/ |  | 
| | | |  | 
| |\ \ |  | 
| | | | |  | 
| | |/ |  | 
| |\ \ |  | 
| | | | |  | 
| | |/ |  | 
| |\ \ |  | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | | I've added a `self.subTest` to the `name` loop so we still test and
get output for all names in the list if one of them fails the test.
In addition, I've moved it to the `tests/bot/resources` subdirectory. | 
| | |/ |  | 
| |\ \  
| |/  
|/| | Move the `sync` cog tests to `unittest`. | 
| |/ |  | 
| | |  | 
| | 
| 
| 
| 
| | I've made some textual changes to the testing guidelines defined
in README.md. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | I have change the testrunner from `unittest` to `xmlrunner` in the
Azure pipeline to be able to publish our test results on Azure. This
is the same runner as `site` uses to generate XML reports.
In addition, I've cleaned up some small mistakes in docstrings and
`README.md`. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | I forgot to test some aspects of the `tests.base` module, including
some branches of the `self.assertNotLogs` method. I've corrected that
by including a couple of tests.
I also removed the test result publishing from the Azure pipeline,
since I've not configured an XML test runner yet. The coverage report
is still published, of course and test output will be available in
standard out, so information is readily available. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | After a discussion in the core developers channel, we have decided to
migrate from `pytest` to `unittest` as the testing framework. This
commit sets up the repository to use `unittest` and migrates the
first couple of tests files to the new framework.
What I have done to migrate to `unitest`:
- Removed all `pytest` test files, since they are incompatible.
- Removed `pytest`-related dependencies from the Pipfile.
- Added `coverage.py` to the Pipfile dev-packages and relocked.
- Added convenience scripts to Pipfile for running the test suite.
- Adjust to `azure-pipelines.yml` to use `coverage.py` and `unittest`.
- Migrated four test files from `pytest` to `unittest` format.
In addition, I've added five helper Mock subclasses in `helpers.py`
and created a `TestCase` subclass in `base.py` to add an assertion
that asserts that no log records were logged within the context of
the context manager. Obviously, these new utility functions and
classes are fully tested in their respective `test_` files.
Finally, I've started with an introductory guide for writing tests
for our bot in `README.md`. | 
| |\  
| | 
| | | Ensure display name changes are logged to the user-log | 
| | |\  
| |/  
|/| |  | 
| |\ \  
| | | 
| | | | Show  the reason in infraction confirmation message if the actor is the bot | 
| | | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | | | https://github.com/python-discord/bot/issues/476
We recently decided to hide the reason in the confirmation message
the bot sends after applying an infraction. In most situations, this
makes sense, since the message containing the invocation command
already contains the reason.
However, if the infraction was triggered by the bot itself (e.g., an
antispam trigger), this means that we're missing information that
provides context to the infraction.
This commit adds the reason back to the confirmation message, but
only if the actor of the infraction was the bot itself.
Closes #476 | 
| |/ /  
| |   
| |   
| |   
| |   
| |   
| |   
| |   
| |   
| | | As mentioned in #476, the bot currently sets the actor of infractions
applied due to an antispam rule trigger to the offending member. The
reason is that we get a `Context` object from the message that
triggered the antispam rule, which was sent by the offender.
I've changed it by patching both available author attributes,
`Context.author` and `Context.message.author` with the bot user. | 
| |/  
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
|   
| | https://github.com/python-discord/bot/issues/489
Recently, we discovered that not all display name changes were logged
to the #user-log channel. This problem was caused by the `old_value`
or the `new_value` showing up as `None` when a user sets or removes a
guild-specific nickname. Since we ignore changes where one of the two
values is `None`, we did not log these `None->nick` or `nick->None`
events.
Since we are mainly interested in the display name of the user, and
the display name is equal to the user's guild-specific nickname if
they have set one and otherwise their username, I made the following
changes:
- Add logging of changes in the display names of members.
- Ignore nick-specific changes completely, since these changes are
  already captured by the changes in the display name we now log.
This closes #489 | 
| |\  
| | 
| | | Refactors the moderation utilities. | 
| | |\  
| |/  
|/| |  | 
| |\ \  
| | | 
| | | | Feat/attachment spam threshold | 
| |/ / |  | 
| |\ \  
| | | 
| | | | Fix error when symbol_id cannot be found in doc HTML | 
| | |\ \  
| |/ /  
|/| | |  | 
| |\ \ \  
| | | | 
| | | | | Add role info command | 
| | |\ \ \  
| |/ / /  
|/| | | |  | 
| |\ \ \ \  
| | | | | 
| | | | | | Show previous watch reason and total after invoking watch command | 
| | |\ \ \ \  
| |/ / / /  
|/| | | | |  | 
| |\ \ \ \ \  
| | | | | | 
| | | | | | | Add converter for ISO-formatted datetime strings | 
| | |\ \ \ \ \  
| |/ / / / /  
|/| | | | | |  | 
| | | | | | | 
| | | | | | 
| | | | | | 
| | | | | | 
| | | | | | 
| | | | | | 
| | | | | | | As we have decided that the converter should return naive datetime
objects, we should explicitly test that datetime strings with a
timezone offset are still converted to a naive datetime object. I
have done this by adding a `tzinfo is None` assertion. |