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

[internal] better align test JVM lockfile support with pytest concepts #15804

Merged
merged 2 commits into from
Jun 16, 2022

Conversation

tdyas
Copy link
Contributor

@tdyas tdyas commented Jun 11, 2022

The JVM test lockfile support had a significant limitation where only one jvm_lockfile fixture can be passed into a test function. This is because of a limitation with pytest marks where a mark can only be applied to a test function and not to fixture functions. Thus, the jvm_lockfile fixture was essentially a singleton because it was not possible to declare separate fixtures which were marked individually with the pytest.mark.jvm_lockfile.

This PR rewrites the test lockfile support to operate like regular pytest fixture functions. The main caveat is that the test lockfile definition must be placed in a separate fixture function to allow extracting it easily. Also, the file containing a definition must use from __future__ import annotations so that the type annotations are available to the extractor.

With this PR, there is no longer any need to register JvmLockfilePlugin in a conftest.py file, which further simplifies using the test lockfile support.

Moreover, it allows using multiple lockfiles in the test_compile_with_multiple_scala_versions test which was not possible without this PR.

[ci skip-rust]

[ci skip-build-wheels]

@tdyas tdyas added the category:internal CI, fixes for not-yet-released features, etc. label Jun 11, 2022
@tdyas tdyas force-pushed the jvm_better_test_lockfile_support branch from 4cba77f to 804b574 Compare June 11, 2022 17:45
Copy link
Sponsor Member

@stuhood stuhood left a comment

Choose a reason for hiding this comment

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

Thanks! Not needing the conftest.py is nice.

Tom Dyas added 2 commits June 15, 2022 16:36
[ci skip-rust]

[ci skip-build-wheels]
[ci skip-rust]

[ci skip-build-wheels]
@tdyas tdyas force-pushed the jvm_better_test_lockfile_support branch from 804b574 to 2554939 Compare June 15, 2022 20:53
@tdyas tdyas changed the title internal: better align test JVM lockfile support with pytest concepts [internal] better align test JVM lockfile support with pytest concepts Jun 16, 2022
@tdyas tdyas merged commit 07963b5 into pantsbuild:main Jun 16, 2022
@tdyas tdyas deleted the jvm_better_test_lockfile_support branch June 16, 2022 13:56
illicitonion added a commit to illicitonion/pants that referenced this pull request Jun 17, 2022
Internal changes:

* Add `@alonsodomin` to maintainers ([pantsbuild#15869](pantsbuild#15869))

* Scala parser improvements ([pantsbuild#15839](pantsbuild#15839))

* Refactor valid field aliases calculation for targets into a classmethod for easier re-use. ([pantsbuild#15861](pantsbuild#15861))

* Update Media page with Pycon ([pantsbuild#15852](pantsbuild#15852))

* Use Readme.com's new Markdown syntax ([pantsbuild#15845](pantsbuild#15845))

* [internal] better align test JVM lockfile support with pytest concepts ([pantsbuild#15804](pantsbuild#15804))

* Fix broken `engine_error` testutil decorator. ([pantsbuild#15818](pantsbuild#15818))

* Add `description_of_origin` for Docker address parsing ([pantsbuild#15814](pantsbuild#15814))

* Use `MultiGet` in Go rule ([pantsbuild#15838](pantsbuild#15838))

* Switch from warn to warning ([pantsbuild#15837](pantsbuild#15837))

* Bump clap from 3.1.18 to 3.2.4 in /src/rust/engine ([pantsbuild#15834](pantsbuild#15834))

* Bump reqwest from 0.11.10 to 0.11.11 in /src/rust/engine ([pantsbuild#15831](pantsbuild#15831))

* Bump strum from 0.24.0 to 0.24.1 in /src/rust/engine ([pantsbuild#15833](pantsbuild#15833))

* Bump strum_macros from 0.24.0 to 0.24.1 in /src/rust/engine ([pantsbuild#15835](pantsbuild#15835))

* Remove flake8-pantsbuild plugin ([pantsbuild#15830](pantsbuild#15830))

* go: support third-party package embeds ([pantsbuild#15827](pantsbuild#15827))

* Move `gshuflin` to Maintainers Emeritus ([pantsbuild#15828](pantsbuild#15828))

* Adds current contents of readme.com docs to repo and adds notes on how to sync. ([pantsbuild#15810](pantsbuild#15810))

* Remove unnecessary `WrappedNode` method indirection ([pantsbuild#15813](pantsbuild#15813))

* Handle anchors in doc_url() correctly. ([pantsbuild#15812](pantsbuild#15812))

* Move the macOS ARM64 build job into the existing test workflows. ([pantsbuild#15805](pantsbuild#15805))

* Add Lablup to users list. ([pantsbuild#15807](pantsbuild#15807))

* Add `description_of_origin` for several places finding Addresses ([pantsbuild#15797](pantsbuild#15797))

* [internal] Register `platform_specific_behavior` marker with Pytest ([pantsbuild#12679](pantsbuild#12679))

* Bump http from 0.2.7 to 0.2.8 in /src/rust/engine ([pantsbuild#15780](pantsbuild#15780))

* Update the `notify` crate. ([pantsbuild#15783](pantsbuild#15783))

* Bump tokio-stream from 0.1.8 to 0.1.9 in /src/rust/engine ([pantsbuild#15777](pantsbuild#15777))

* Bump indexmap from 1.8.1 to 1.8.2 in /src/rust/engine ([pantsbuild#15778](pantsbuild#15778))

* Bump uuid from 1.0.0 to 1.1.1 in /src/rust/engine ([pantsbuild#15779](pantsbuild#15779))

* Bump hyper from 0.14.18 to 0.14.19 in /src/rust/engine ([pantsbuild#15781](pantsbuild#15781))

* Update `crossbeam-utils` to `0.8.8`. ([pantsbuild#15782](pantsbuild#15782))
@illicitonion illicitonion mentioned this pull request Jun 17, 2022
illicitonion added a commit that referenced this pull request Jun 17, 2022
Internal changes:

* Add `@alonsodomin` to maintainers ([#15869](#15869))

* Scala parser improvements ([#15839](#15839))

* Refactor valid field aliases calculation for targets into a classmethod for easier re-use. ([#15861](#15861))

* Update Media page with Pycon ([#15852](#15852))

* Use Readme.com's new Markdown syntax ([#15845](#15845))

* [internal] better align test JVM lockfile support with pytest concepts ([#15804](#15804))

* Fix broken `engine_error` testutil decorator. ([#15818](#15818))

* Add `description_of_origin` for Docker address parsing ([#15814](#15814))

* Use `MultiGet` in Go rule ([#15838](#15838))

* Switch from warn to warning ([#15837](#15837))

* Bump clap from 3.1.18 to 3.2.4 in /src/rust/engine ([#15834](#15834))

* Bump reqwest from 0.11.10 to 0.11.11 in /src/rust/engine ([#15831](#15831))

* Bump strum from 0.24.0 to 0.24.1 in /src/rust/engine ([#15833](#15833))

* Bump strum_macros from 0.24.0 to 0.24.1 in /src/rust/engine ([#15835](#15835))

* Remove flake8-pantsbuild plugin ([#15830](#15830))

* go: support third-party package embeds ([#15827](#15827))

* Move `gshuflin` to Maintainers Emeritus ([#15828](#15828))

* Adds current contents of readme.com docs to repo and adds notes on how to sync. ([#15810](#15810))

* Remove unnecessary `WrappedNode` method indirection ([#15813](#15813))

* Handle anchors in doc_url() correctly. ([#15812](#15812))

* Move the macOS ARM64 build job into the existing test workflows. ([#15805](#15805))

* Add Lablup to users list. ([#15807](#15807))

* Add `description_of_origin` for several places finding Addresses ([#15797](#15797))

* [internal] Register `platform_specific_behavior` marker with Pytest ([#12679](#12679))

* Bump http from 0.2.7 to 0.2.8 in /src/rust/engine ([#15780](#15780))

* Update the `notify` crate. ([#15783](#15783))

* Bump tokio-stream from 0.1.8 to 0.1.9 in /src/rust/engine ([#15777](#15777))

* Bump indexmap from 1.8.1 to 1.8.2 in /src/rust/engine ([#15778](#15778))

* Bump uuid from 1.0.0 to 1.1.1 in /src/rust/engine ([#15779](#15779))

* Bump hyper from 0.14.18 to 0.14.19 in /src/rust/engine ([#15781](#15781))

* Update `crossbeam-utils` to `0.8.8`. ([#15782](#15782))
wisechengyi added a commit that referenced this pull request Jun 26, 2022
### Internal (put these in a PR comment for review, not the release notes)

* Bump uuid from 1.1.1 to 1.1.2 in /src/rust/engine ([#15832](#15832))

* Tests for Docker from arg not a upstream target ([#15874](#15874))

* Fix outstanding todo for moved fields defaults support. ([#15923](#15923))

* Move generic debug adapter settings to dedicated subsystem ([#15928](#15928))

* Prepare `2.12.0rc3`. ([#15913](#15913))

* Prepare `2.11.1rc3`. ([#15912](#15912))

* Upgrade default mypy to 0.961 and default pylint to v2.13.9 ([#15886](#15886))

* Bump clap from 3.2.4 to 3.2.6 in /src/rust/engine ([#15909](#15909))

* Bump indexmap from 1.8.2 to 1.9.1 in /src/rust/engine ([#15894](#15894))

* Bump time from 0.3.9 to 0.3.11 in /src/rust/engine ([#15895](#15895))

* Bump tower-service from 0.3.1 to 0.3.2 in /src/rust/engine ([#15896](#15896))

* Bump crossbeam-channel from 0.5.4 to 0.5.5 in /src/rust/engine ([#15893](#15893))

* [internal] remove TestCoursierWrapper ([#15902](#15902))

* Silence `[scala-infer].force_add_siblings_as_dependencies` deprecation. ([#15898](#15898))

* Add unit tests to GraphQL queries ([#15792](#15792))

* Release script fixups ([#15875](#15875))

* [internal] jvm: port remaining tests to use test lockfiles ([#15870](#15870))

* Bump to 2.13.0a0 ([#15871](#15871))

* Add `@alonsodomin` to maintainers ([#15869](#15869))

* Scala parser improvements ([#15839](#15839))

* Refactor valid field aliases calculation for targets into a classmethod for easier re-use. ([#15861](#15861))

* Update Media page with Pycon ([#15852](#15852))

* Use Readme.com's new Markdown syntax ([#15845](#15845))

* [internal] better align test JVM lockfile support with pytest concepts ([#15804](#15804))

* Fix broken `engine_error` testutil decorator. ([#15818](#15818))

* Add `description_of_origin` for Docker address parsing ([#15814](#15814))

* Use `MultiGet` in Go rule ([#15838](#15838))

* Switch from warn to warning ([#15837](#15837))

* Bump clap from 3.1.18 to 3.2.4 in /src/rust/engine ([#15834](#15834))

* Bump reqwest from 0.11.10 to 0.11.11 in /src/rust/engine ([#15831](#15831))

* Bump strum from 0.24.0 to 0.24.1 in /src/rust/engine ([#15833](#15833))

* Bump strum_macros from 0.24.0 to 0.24.1 in /src/rust/engine ([#15835](#15835))

* Remove flake8-pantsbuild plugin ([#15830](#15830))

* go: support third-party package embeds ([#15827](#15827))

* Move `gshuflin` to Maintainers Emeritus ([#15828](#15828))

* Adds current contents of readme.com docs to repo and adds notes on how to sync. ([#15810](#15810))

* Remove unnecessary `WrappedNode` method indirection ([#15813](#15813))

* Handle anchors in doc_url() correctly. ([#15812](#15812))

* Move the macOS ARM64 build job into the existing test workflows. ([#15805](#15805))

* Add Lablup to users list. ([#15807](#15807))

* Add `description_of_origin` for several places finding Addresses ([#15797](#15797))

* [internal] Register `platform_specific_behavior` marker with Pytest ([#12679](#12679))

* Bump http from 0.2.7 to 0.2.8 in /src/rust/engine ([#15780](#15780))

* Update the `notify` crate. ([#15783](#15783))

* Bump tokio-stream from 0.1.8 to 0.1.9 in /src/rust/engine ([#15777](#15777))

* Bump indexmap from 1.8.1 to 1.8.2 in /src/rust/engine ([#15778](#15778))

* Bump uuid from 1.0.0 to 1.1.1 in /src/rust/engine ([#15779](#15779))

* Bump hyper from 0.14.18 to 0.14.19 in /src/rust/engine ([#15781](#15781))

* Update `crossbeam-utils` to `0.8.8`. ([#15782](#15782))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:internal CI, fixes for not-yet-released features, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants