[TESTS] Allow tx_invalid.json tests to include flag rules for if_unset: [A,B,C] then_unset: [D] #22954

pull JeremyRubin wants to merge 1 commits into bitcoin:master from JeremyRubin:if_unset_then_unset changing 2 files +52 −4
  1. JeremyRubin commented at 11:14 pm on September 11, 2021: contributor

    This allows an optional tx_invalid.json parameter at position 3 with the format:

    0[{"if_unset": ["A", "D"], "then_unset": ["B", "C"]}]
    

    During the one-by-one flag mutation (patched in #22948 to be all combinations, hence the support of multiple) which checks that if disable required flags ["A", "D"] are all unset then the flags ["B", "C"] should become unset as well. The unsetting logic loops until the flags are unset (so rules like if_unset A then_unset B and if_unset B then_unset D end up with B and D unset if A is unset and B is set initially).

    The current use case of this modification is:

    0[{"if_unset": ["DEFAULT_CHECK_TEMPLATE_VERIFY_HASH"], "then_unset": ["DISCOURAGE_UPGRADABLE_NOPS"]}]
    

    This allows us to write use cases wherein we expect DEFAULT_CHECK_TEMPLATE_VERIFY_HASH to be enabled for the tx to be invalid, but desire for it to be valid (and not discouraged) when it is off. After activation of such a soft fork, we can remove such a rule.

    We do not want to do this via a TrimFlags rule as it should not happen across all transactions, only the ones we specify.

    It would also be possible to have a list of allowed unsettable flags (e.g., just DISCOURAGE_UPGRADABLE_NOPS and other standardness rules), but it is not required. While the allowing of multiple rules is perhaps extra, this keeps the format flexible for future needs.

  2. fanquake added the label Tests on Sep 11, 2021
  3. DrahtBot commented at 3:27 pm on September 12, 2021: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    No conflicts as of last run.

  4. DrahtBot added the label Needs rebase on Dec 1, 2021
  5. JeremyRubin commented at 6:14 pm on December 12, 2021: contributor
    @MarcoFalke is their an automated tool to run to fix this PR?
  6. maflcko commented at 7:49 am on December 13, 2021: member

    @JeremyRubin I think git will always consider context, but you can use patch for an automated approach to ignore changes in adjacent lines:

    0$ git show -U0 7f4228566eafd91c3201e794ef2d82ca884db8c6 | patch -p1 --dry-run  
    1checking file src/test/data/tx_invalid.json
    2checking file src/test/transaction_tests.cpp
    3Hunk [#1](/bitcoin-bitcoin/1/) succeeded at 289 (offset 1 line).
    4Hunk [#2](/bitcoin-bitcoin/2/) succeeded at 297 (offset 1 line).
    5Hunk [#3](/bitcoin-bitcoin/3/) succeeded at 391 (offset 1 line).
    6Hunk [#4](/bitcoin-bitcoin/4/) succeeded at 394 (offset 1 line).
    7Hunk [#5](/bitcoin-bitcoin/5/) succeeded at 411 (offset 1 line).
    
  7. JeremyRubin commented at 8:22 am on December 13, 2021: contributor
    i was asking because i think the conflict arose out of a scripted diff PR of yours that was merged, I was curious if you reckon that it will fix these conflicts too…
  8. JeremyRubin force-pushed on Dec 17, 2021
  9. DrahtBot removed the label Needs rebase on Dec 17, 2021
  10. JeremyRubin commented at 8:35 pm on December 17, 2021: contributor
    failure is unrelated; has been rebased
  11. JeremyRubin force-pushed on Jan 5, 2022
  12. [TESTS] Allow tx_invalid.json tests to include flag rules for if_unset: [A,B,C] then_unset: [D] f32c6b7a7c
  13. JeremyRubin force-pushed on Jan 6, 2022
  14. glozow commented at 6:45 pm on October 12, 2022: member
    Concept -0 as this seems to only be useful for #21702, and not otherwise beneficial.
  15. JeremyRubin closed this on Dec 16, 2022

  16. bitcoin locked this on Dec 16, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-07-03 10:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me