Skip to content

Conversation

@AlexD10S
Copy link
Collaborator

@AlexD10S AlexD10S commented Mar 16, 2025

Enables pop test command to run without specifying contract or chain, automatically detecting the project type.
Previously, pop test was limited to pop test contract; now, it runs tests for all Rust projects, including chains.

Changes

  • test_smart_contract(which basically wrapped cargo test) has been renamed to test_project and moved from pop_contracts to pop_common crate for broader use.
  • Handles the deprecation of pop test contract to simple run pop test in your project, keeping pop test contract functional for now but marking them for future removal. Following the same deprecation approach as pop build feat: enable building without project type specification #222 and pop up feat: enable pop up without project type specification #403 recent refactors ).
  • Improved Coverage: Minor changes to have unit tests in the pop-cli test module.

How to test

# In a contract project
pop test
pop test contract
# In a parachain project
pop test

[sc-2512]

@codecov
Copy link

codecov bot commented Mar 16, 2025

Codecov Report

Attention: Patch coverage is 62.96296% with 30 lines in your changes missing coverage. Please review.

Please upload report for BASE (main@16693b4). Learn more about missing BASE report.
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
crates/pop-cli/src/commands/test/mod.rs 71.73% 3 Missing and 10 partials ⚠️
crates/pop-cli/src/commands/test/contract.rs 36.36% 4 Missing and 3 partials ⚠️
crates/pop-common/src/test.rs 70.00% 0 Missing and 6 partials ⚠️
crates/pop-cli/src/commands/mod.rs 0.00% 4 Missing ⚠️
@@           Coverage Diff           @@
##             main     #466   +/-   ##
=======================================
  Coverage        ?   75.11%           
=======================================
  Files           ?       70           
  Lines           ?    14967           
  Branches        ?    14967           
=======================================
  Hits            ?    11243           
  Misses          ?     2253           
  Partials        ?     1471           
Files with missing lines Coverage Δ
crates/pop-common/src/lib.rs 74.50% <ø> (ø)
crates/pop-contracts/src/test.rs 79.41% <ø> (ø)
crates/pop-cli/src/commands/mod.rs 24.61% <0.00%> (ø)
crates/pop-common/src/test.rs 70.00% <70.00%> (ø)
crates/pop-cli/src/commands/test/contract.rs 28.00% <36.36%> (ø)
crates/pop-cli/src/commands/test/mod.rs 71.73% <71.73%> (ø)
🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AlexD10S AlexD10S requested a review from chungquantin March 17, 2025 10:19
Copy link
Contributor

@chungquantin chungquantin left a comment

Choose a reason for hiding this comment

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

PR is clean! I don't have any feedback. Found some minor improvements, mainly in docs

@AlexD10S AlexD10S requested a review from chungquantin March 18, 2025 11:04
@AlexD10S AlexD10S merged commit 1308c69 into main Mar 18, 2025
20 checks passed
@AlexD10S AlexD10S deleted the refactor/pop-test branch March 18, 2025 20:46
chungquantin pushed a commit that referenced this pull request Mar 19, 2025
* refactor: test_project to support testing any rust project

* test: unit tests in test mod

* docs: fix pop_contracts test docs

* docs: fix comment in TestCommand error

* refactor: improve docs and visibility
chungquantin pushed a commit that referenced this pull request Mar 24, 2025
* refactor: test_project to support testing any rust project

* test: unit tests in test mod

* docs: fix pop_contracts test docs

* docs: fix comment in TestCommand error

* refactor: improve docs and visibility
AlexD10S added a commit that referenced this pull request Mar 25, 2025
* refactor: check binary and prompt

* feat: add binary generator

* feat: update parachain templates (#297)

* feat: include new parachain template and remove old one for Parity

* fix: tests

* fix: order in test

* fix: export PATH

* chore: bump zombienet-sdk version

* fix: remove parity evm

* fix: missing changes

* fix: parse collator and parachain-template-node without path for spawn

* chore: remove set PATH

* refactor: functionality and test

* refactor: prefix for external templates

* fix: deprecate old command for generating parity contracts template

* test: update configure_works test to test new functionality

* test: fix unit tests templates

* fix: show deprecation message and fixes

* docs: improve comments

* refactor: nitpicks in parachain description

* fix: logic for substrate-contracts-node without path in config file

* feat: support v3.0.0 of OpenZeppelin templates

* docs: improve template docs and comments

* test: improve comments for clarity

* fix: support different profiles when path is not specified

* refactor: code improvements

* refactor: improve import

* fix: remove onboard.rs empty file (#433)

* chore: update cargo-deny-action@v2 (#439)

* chore: update cargo-deny-action@v2

* chore: revert cargo.lock and add more ignore

* fix: docker missing toolchain

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* fix: hardcoded test failing in the CI (#448)

* fix: remove hardcoded node name in test

* fix: bump versions in Cargo.lock to fix deny

* chore: ignore unmantained vulnerability

* fix: cargo deny unmaintained crate

---------

Co-authored-by: chungquantin <[email protected]>

* feat: add the filter mode and password to `Cli` (#435)

* feat: add the filter mode to cli

* chore: rebase

* chore: revert cargo.lock and add more ignore

* chore: update cargo-deny-action@v2

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* chore: rebase

* chore: clippy warning

* chore: revert not relevant changes

* chore: add password to the Cli (#449)

* chore: add password input in cli module

* chore: format

---------

Co-authored-by: Alex Bean <[email protected]>

* chore: resolve unmaintained crate & clippy warnings (#454)

* chore: resolve clippy warnings

* fix: unmantained crate

* chore: hard-coded the version of pop-node binary

* chore: fix pop-node CI issue

* feat: register parachain (#404)

* test: detects_project_type_correctly

* feat: parachain deployment in pop up

* fix: parachain feature

* docs: improve comments

* feat: replace index.html with summary costs in ui (#430)

* refactor: rename parachain to rollup

* docs: improve deprecation message

* refactor: rename parachain to rollup in up help

* feat: logic for parachain registration (#410)

* feat: deploy a parachain commands

* feat: build specs in pop up

* feat: logic to interact with a chain

* feat: register parachain

* refactor: clean code and improve docs

* test: unit tests for pop up methods

* refactor: small fixes with visibility and removing logs

* feat: return events in submit_signed_extrinsic

* feat: get para_id from event

* test: fix detects_parachain_correctly

* refactor: improve docs and code

* test: fix change_working_directory_works

* fix: clippy warnings

* refactor: move submit_extrinsic_with_wallet in a common file

* refactor: remove unnecesary code

* refactor: UpChainCommand structure

* test: adjust tests to refactored struct

* refactor: renaming prepare_register_parachain_call_data and prepare_rerve_parachain_call_data

* refactor: move events module

* fix: submit_extrinsic_with_wallet under parachain feature

* refactor: remove unnecesary code

* test: increase coverage with reserve_parachain_id_fails_wrong_chain and resolve_genesis_files_fails_wrong_path

* refactor: remove unnecesary clones

* refactor: minor improvements

* test: refactor tests and include comments

* refactor: map errors in submit_extrinsic_with_wallet

* test: fix prepare_register_parachain_call_data_works

* refactor: move configure_chain into a common folder

* refactor: function visibility

* fix: error message and include test for it

* refactor: build specs removing repetitive code

* refactor: use prepare_extrinsic from Call module to prepare a call

* docs: improve comments and messages

* refactor: rename variables and structs

* refactor: relay_chain_url

* refactor: rename prepare_reserve_call_data and prepare_register_call_data

* test: remove unnecesary test

* refactor: remove events module

* refactor: rename parachain to rollup

* chore: improve succesful message

* chore: change intro title to use rollup

* docs: comments for Reserved event

* refactor: improve readability with chain::configure

* refactor: improve message and clean code

* feat: build deterministic runtime (#425)

* test: detects_project_type_correctly

* feat: parachain deployment in pop up

* fix: parachain feature

* docs: improve comments

* feat: deploy a parachain commands

* feat: build specs in pop up

* feat: logic to interact with a chain

* feat: register parachain

* refactor: clean code and improve docs

* test: unit tests for pop up methods

* refactor: small fixes with visibility and removing logs

* feat: return events in submit_signed_extrinsic

* feat: get para_id from event

* test: fix detects_parachain_correctly

* refactor: improve docs and code

* test: fix change_working_directory_works

* fix: clippy warnings

* refactor: move submit_extrinsic_with_wallet in a common file

* refactor: remove unnecesary code

* refactor: UpChainCommand structure

* test: adjust tests to refactored struct

* refactor: renaming prepare_register_parachain_call_data and prepare_rerve_parachain_call_data

* refactor: move events module

* fix: submit_extrinsic_with_wallet under parachain feature

* refactor: remove unnecesary code

* test: increase coverage with reserve_parachain_id_fails_wrong_chain and resolve_genesis_files_fails_wrong_path

* refactor: remove unnecesary clones

* refactor: minor improvements

* test: refactor tests and include comments

* refactor: map errors in submit_extrinsic_with_wallet

* test: fix prepare_register_parachain_call_data_works

* feat: container_engine to detect container to use

* feat: generate_deterministic_runtime logic

* feat: srtool logic

* feat: build deterministic runtime in build spec command

* feat: update_runtime_code

* test: include tests for updateing code

* refactor: clean unnecesary code

* test: in container_engine

* refactor: docker warning in container_engine

* chore: improve screen messaging

* refactor: use profile picked by the user

* refactor: docs in ContainerEngine and clean prints

* fix: generate_deterministic_runtime parameter

* refactor: rename, improve messages and clean empty lines

* feat: extract package name automatically from runtime dir

* docs: change broken link

* refactor: update srtool_lib crate and remove unnecesary code

* docs: include srtool in Acknowledgements

* refactor: remove unnecesary Error

* test: detects_project_type_correctly

* feat: parachain deployment in pop up

* fix: parachain feature

* docs: improve comments

* feat: replace index.html with summary costs in ui (#430)

* refactor: rename parachain to rollup

* docs: improve deprecation message

* refactor: rename parachain to rollup in up help

* feat: deploy a parachain commands

* feat: build specs in pop up

* feat: logic to interact with a chain

* feat: register parachain

* refactor: clean code and improve docs

* test: unit tests for pop up methods

* refactor: small fixes with visibility and removing logs

* feat: return events in submit_signed_extrinsic

* feat: get para_id from event

* test: fix detects_parachain_correctly

* refactor: improve docs and code

* test: fix change_working_directory_works

* fix: clippy warnings

* refactor: move submit_extrinsic_with_wallet in a common file

* refactor: remove unnecesary code

* refactor: UpChainCommand structure

* test: adjust tests to refactored struct

* refactor: renaming prepare_register_parachain_call_data and prepare_rerve_parachain_call_data

* refactor: move events module

* fix: submit_extrinsic_with_wallet under parachain feature

* refactor: remove unnecesary code

* test: increase coverage with reserve_parachain_id_fails_wrong_chain and resolve_genesis_files_fails_wrong_path

* refactor: remove unnecesary clones

* refactor: minor improvements

* test: refactor tests and include comments

* refactor: map errors in submit_extrinsic_with_wallet

* test: fix prepare_register_parachain_call_data_works

* refactor: move configure_chain into a common folder

* refactor: function visibility

* fix: error message and include test for it

* refactor: build specs removing repetitive code

* refactor: use prepare_extrinsic from Call module to prepare a call

* docs: improve comments and messages

* refactor: rename variables and structs

* refactor: relay_chain_url

* refactor: rename prepare_reserve_call_data and prepare_register_call_data

* test: remove unnecesary test

* refactor: remove events module

* refactor: rename parachain to rollup

* chore: improve succesful message

* chore: change intro title to use rollup

* docs: comments for Reserved event

* chore: always prompt the user to build runtime deterministacally and improve message

* docs: improve and add missing comments

* refactor: clean code to prompt for the package and runtime dir

* docs: improve warning message

* refactor: rename variables and structs

* fix: throw error message when build deterministic runtime fail

* feat: include skip_deterministic_build flag to avoid prompting the user

* docs: improve comments

* feat: use a proxy for the registration (#427)

* test: detects_project_type_correctly

* feat: parachain deployment in pop up

* fix: parachain feature

* docs: improve comments

* feat: deploy a parachain commands

* feat: build specs in pop up

* feat: logic to interact with a chain

* feat: register parachain

* refactor: clean code and improve docs

* test: unit tests for pop up methods

* refactor: small fixes with visibility and removing logs

* feat: return events in submit_signed_extrinsic

* feat: get para_id from event

* test: fix detects_parachain_correctly

* refactor: improve docs and code

* test: fix change_working_directory_works

* fix: clippy warnings

* refactor: move submit_extrinsic_with_wallet in a common file

* refactor: remove unnecesary code

* refactor: UpChainCommand structure

* test: adjust tests to refactored struct

* refactor: renaming prepare_register_parachain_call_data and prepare_rerve_parachain_call_data

* refactor: move events module

* fix: submit_extrinsic_with_wallet under parachain feature

* refactor: remove unnecesary code

* test: increase coverage with reserve_parachain_id_fails_wrong_chain and resolve_genesis_files_fails_wrong_path

* refactor: remove unnecesary clones

* refactor: minor improvements

* test: refactor tests and include comments

* refactor: map errors in submit_extrinsic_with_wallet

* test: fix prepare_register_parachain_call_data_works

* refactor: move configure_chain into a common folder

* refactor: function visibility

* fix: error message and include test for it

* feat: construct_proxy_extrinsic

* feat: prompt for proxy address in the UI

* docs: improve flag description and display command to be executed

* docs: improve prompt to the user message for proxy

* feat: replace index.html with costs for calls with proxy in ui

* refactor: remove display command information (separate PR)

* test: fix resolve_proxy_address_works

* refactor: rename and more clear messages for the user to prompt proxied account

* chore: update index.html with latest changes

* test: fix format

* test: detects_project_type_correctly

* feat: parachain deployment in pop up

* fix: parachain feature

* docs: improve comments

* feat: replace index.html with summary costs in ui (#430)

* refactor: rename parachain to rollup

* docs: improve deprecation message

* refactor: rename parachain to rollup in up help

* feat: deploy a parachain commands

* feat: build specs in pop up

* feat: logic to interact with a chain

* feat: register parachain

* refactor: clean code and improve docs

* test: unit tests for pop up methods

* refactor: small fixes with visibility and removing logs

* feat: return events in submit_signed_extrinsic

* feat: get para_id from event

* test: fix detects_parachain_correctly

* refactor: improve docs and code

* test: fix change_working_directory_works

* fix: clippy warnings

* refactor: move submit_extrinsic_with_wallet in a common file

* refactor: remove unnecesary code

* refactor: UpChainCommand structure

* test: adjust tests to refactored struct

* refactor: renaming prepare_register_parachain_call_data and prepare_rerve_parachain_call_data

* refactor: move events module

* fix: submit_extrinsic_with_wallet under parachain feature

* refactor: remove unnecesary code

* test: increase coverage with reserve_parachain_id_fails_wrong_chain and resolve_genesis_files_fails_wrong_path

* refactor: remove unnecesary clones

* refactor: minor improvements

* test: refactor tests and include comments

* refactor: map errors in submit_extrinsic_with_wallet

* test: fix prepare_register_parachain_call_data_works

* refactor: move configure_chain into a common folder

* refactor: function visibility

* fix: error message and include test for it

* refactor: build specs removing repetitive code

* refactor: use prepare_extrinsic from Call module to prepare a call

* docs: improve comments and messages

* refactor: rename variables and structs

* refactor: relay_chain_url

* refactor: rename prepare_reserve_call_data and prepare_register_call_data

* test: remove unnecesary test

* refactor: remove events module

* refactor: rename parachain to rollup

* chore: improve succesful message

* chore: change intro title to use rollup

* docs: comments for Reserved event

* refactor: clean code to avoid unnecesary clone

* feat: wrap Id by default in the proxy address and improve comment

* refactor: remove ProxyConfig and use Proxy

* refactor: resolve_proxied_address

* fix: change visibility for prompt_for_param

* refactor: more clarity in code variables and comments

* refactor: custom message to prompt for proxy address

* refactor: support only Account Id type for proxied_address

* test: remove unnecesary async in resolve_proxied_address_works

* fix: clippy warnings

* chore: improve deterministic runtime flow (#460)

* chore: hide srtool logs

* chore: include runtime file in the Generated files message

* chore: update with latest index.html

* refactor: small improvements

* refactor: improve the building runtime message

* fix: display events when wallet-signing (#463)

* feat: enable `pop test` without project type specification (#466)

* refactor: test_project to support testing any rust project

* test: unit tests in test mod

* docs: fix pop_contracts test docs

* docs: fix comment in TestCommand error

* refactor: improve docs and visibility

* chore: add doc for macro and test for contracts

* fix: executable permission

---------

Co-authored-by: Alex Bean <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants