Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add socket factory to BaseTestServer #5845

Merged
merged 2 commits into from
Oct 28, 2021
Merged

Conversation

derlih
Copy link
Contributor

@derlih derlih commented Jun 30, 2021

What do these changes do?

Add a socket factory to BaseTestServer. It enables using custom sockets in tests.

Are there changes in behavior for the user?

No

Related issue number

#5844

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • If you provide code modification, please add yourself to CONTRIBUTORS.txt
    • The format is <Name> <Surname>.
    • Please keep alphabetical order, the file is sorted by names.
  • Add a new news fragment into the CHANGES folder
    • name it <issue_id>.<type> for example (588.bugfix)
    • if you don't have an issue_id change it to the pr id after creating the pr
    • ensure type is one of the following:
      • .feature: Signifying a new feature.
      • .bugfix: Signifying a bug fix.
      • .doc: Signifying a documentation improvement.
      • .removal: Signifying a deprecation or removal of public API.
      • .misc: A ticket has been closed, but it is not of interest to users.
    • Make sure to use full sentences with correct case and punctuation, for example: "Fix issue with non-ascii contents in doctest text files."

@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Jun 30, 2021
@derlih derlih linked an issue Jun 30, 2021 that may be closed by this pull request
@codecov
Copy link

codecov bot commented Jun 30, 2021

Codecov Report

Merging #5845 (cc692ca) into master (9a1c862) will increase coverage by 0.00%.
The diff coverage is 100.00%.

❗ Current head cc692ca differs from pull request most recent head 3f9ff48. Consider uploading reports for the commit 3f9ff48 to get more accurate results
Impacted file tree graph

@@           Coverage Diff           @@
##           master    #5845   +/-   ##
=======================================
  Coverage   93.29%   93.29%           
=======================================
  Files         102      102           
  Lines       30218    30230   +12     
  Branches     2710     2711    +1     
=======================================
+ Hits        28192    28204   +12     
  Misses       1849     1849           
  Partials      177      177           
Flag Coverage Δ
unit 93.22% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
aiohttp/test_utils.py 99.06% <100.00%> (+<0.01%) ⬆️
tests/test_test_utils.py 98.29% <100.00%> (+0.08%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9a1c862...3f9ff48. Read the comment docs.

@bmerry
Copy link
Contributor

bmerry commented Jul 1, 2021

Is this functionality accessible from the aiohttp_client pytest fixture?

@derlih
Copy link
Contributor Author

derlih commented Jul 1, 2021

Is this functionality accessible from the aiohttp_client pytest fixture?

Yes.
There is a server_kwargs parameter of aiohttp_client fixture that are passed to the TestServer.

@pytest.fixture
def aiohttp_client(
loop: asyncio.AbstractEventLoop, aiohttp_client_cls: Type[TestClient]
) -> Generator[AiohttpClient, None, None]:
"""Factory to create a TestClient instance.
aiohttp_client(app, **kwargs)
aiohttp_client(server, **kwargs)
aiohttp_client(raw_server, **kwargs)
"""
clients = []
async def go(
__param: Union[Application, BaseTestServer],
*,
server_kwargs: Optional[Dict[str, Any]] = None,
**kwargs: Any
) -> TestClient:
if isinstance(__param, Application):
server_kwargs = server_kwargs or {}
server = TestServer(__param, **server_kwargs)
client = aiohttp_client_cls(server, **kwargs)

Copy link
Member

@asvetlov asvetlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Please feel free to merge.
Backporting is up to you (but recommended).
The simplest backport strategy is adding 3.8 label before merging, a bot should do the rest.
Sometimes the backporting requires manual intervention, the bot adds a comment with instructions in this case.

docs/conf.py Show resolved Hide resolved
Copy link
Member

@webknjaz webknjaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved but plz rebase before merging to pull in the most recent CI changes.

CHANGES/5844.feature Outdated Show resolved Hide resolved
@derlih derlih merged commit 573916f into aio-libs:master Oct 28, 2021
@patchback
Copy link
Contributor

patchback bot commented Oct 28, 2021

Backport to 3.8: 💔 cherry-picking failed — conflicts found

❌ Failed to cleanly apply 573916f on top of patchback/backports/3.8/573916f0ebea517bdb6b162bcf74078acb0dfaf9/pr-5845

Backporting merged PR #5845 into master

  1. Ensure you have a local repo clone of your fork. Unless you cloned it
    from the upstream, this would be your origin remote.
  2. Make sure you have an upstream repo added as a remote too. In these
    instructions you'll refer to it by the name upstream. If you don't
    have it, here's how you can add it:
    $ git remote add upstream https://github.com/aio-libs/aiohttp.git
  3. Ensure you have the latest copy of upstream and prepare a branch
    that will hold the backported code:
    $ git fetch upstream
    $ git checkout -b patchback/backports/3.8/573916f0ebea517bdb6b162bcf74078acb0dfaf9/pr-5845 upstream/3.8
  4. Now, cherry-pick PR Add socket factory to BaseTestServer #5845 contents into that branch:
    $ git cherry-pick -x 573916f0ebea517bdb6b162bcf74078acb0dfaf9
    If it'll yell at you with something like fatal: Commit 573916f0ebea517bdb6b162bcf74078acb0dfaf9 is a merge but no -m option was given., add -m 1 as follows intead:
    $ git cherry-pick -m1 -x 573916f0ebea517bdb6b162bcf74078acb0dfaf9
  5. At this point, you'll probably encounter some merge conflicts. You must
    resolve them in to preserve the patch from PR Add socket factory to BaseTestServer #5845 as close to the
    original as possible.
  6. Push this branch to your fork on GitHub:
    $ git push origin patchback/backports/3.8/573916f0ebea517bdb6b162bcf74078acb0dfaf9/pr-5845
  7. Create a PR, ensure that the CI is green. If it's not — update it so that
    the tests and any other checks pass. This is it!
    Now relax and wait for the maintainers to process your pull request
    when they have some cycles to do reviews. Don't worry — they'll tell you if
    any improvements are necessary when the time comes!

🤖 @patchback
I'm built with octomachinery and
my source is open — https://github.com/sanitizers/patchback-github-app.

@derlih derlih deleted the issue_5844 branch October 28, 2021 12:58
@aio-libs-github-bot
Copy link
Contributor

💔 Backport was not successful

The PR was attempted backported to the following branches:

  • ❌ 3.8: Commit could not be cherrypicked due to conflicts

@asvetlov
Copy link
Member

Failure. @derlih would you backport it manually?

derlih added a commit to derlih/aiohttp that referenced this pull request Oct 28, 2021
* Add socket factory to BaseTestServer

* Fix the change note style

Co-authored-by: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua>
(cherry picked from commit 573916f)
derlih added a commit to derlih/aiohttp that referenced this pull request Oct 28, 2021
* Add socket factory to BaseTestServer

* Fix the change note style

Co-authored-by: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua>
(cherry picked from commit 573916f)
derlih added a commit to derlih/aiohttp that referenced this pull request Oct 28, 2021
* Add socket factory to BaseTestServer

* Fix the change note style

Co-authored-by: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua>
(cherry picked from commit 573916f)
asvetlov pushed a commit that referenced this pull request Oct 28, 2021
* Add socket factory to BaseTestServer

* Fix the change note style

Co-authored-by: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua>
(cherry picked from commit 573916f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot:chronographer:provided There is a change note present in this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow custom sockets for testing
4 participants