Skip to content

Conversation

@fw-bot
Copy link
Contributor

@fw-bot fw-bot commented Nov 28, 2025

This is a backport of the merged #235565 - with a couple of improvements & adaptations to the test files.

This commit adds helpers and improves on the way we assert XML files in AccountTestInvoicingCommon and all accounting test that extend from it. From now on, all accounting test code that assert an XML tree/string to an XML file should call the assert_xml helper, and design their test file name/location/etc. around this framework.

This approach has a few major benefits:

Assert / Save XML

When testing XML files, we often need to perform create/read/update operations on the asserted XML to make sure it corresponds to the most updated/intended data. Previously, to save something to an XML, a developer would need to write their own local helpers to save the XML in the right directory. This was cumbersome and error-prone, so we decided to design a helper that allows developer to immediately save AND/OR update the asserted XML: to save/update an XML, we can simply add SAVE_XML as an additional test tags.

Better test naming and optional subfolder management

To better organize test files, the assert_xml method allows us to write just the test key name (without .xml), and the framework will automatically get the XML to assert/save from the test_files directory. An optional subfolder parameter is also added to allow writing to specific subfolder within test_files.

Better ___ignore___ management in assertion XMLs

Sometimes, we want to ignore a few XML node that are not relevant, or have content that are not deterministic (changes on every test run). To handle this, previously, developers would need to modify the assertion XML content by hand or write their own local script to do so.

With this new framework, we just need to add an ignore_schema.xml file somewhere in the test_files directory. If put inside a subfolder, it will be applied with more priority towards the XML that are put on that specific subfolder.

Save "pure" XML (before applying ___ignore___) in temporary folder

When calling SAVE_XML, before applying the ignore patches, the XML will be saved in a temporary folder (same folder as the screenshots for tours), so that developers can use them in external tests in the future, and for any other saving reasons.

In addition, this commit also:

  • add extra_tags helper to save all the common tags for EDIs, for a better way to enable EXTERNAL_MODE testing inspired by l10n_mx_edi
  • convert some non-assert XML test helpers into a class method
  • canonicalize the XML to ensure consistency of the generated test files following the C14N Version 2 standard. (Deterministic namespaces location, sorted attributes, etc.)

task-4891206

Forward-Port-Of: #237435
Forward-Port-Of: #237285

This commit adds helpers and improves on the way we assert XML files in
`AccountTestInvoicingCommon` and all accounting test that extend from
it. From now on, all accounting test code that assert an XML tree/string
to an XML file should call the `assert_xml` helper, and design their
test file name/location/etc. around this framework.

This approach has a few major benefits:

Assert / Save XML

When testing XML files, we often need to perform create/read/update
operations on the asserted XML to make sure it corresponds to the most
updated/intended data. Previously, to save something to an XML, a
developer would need to write their own local helpers to save the XML in
the right directory. This was cumbersome and error-prone, so we decided
to design a helper that allows developer to immediately save AND/OR
update the asserted XML: to save/update an XML, we can simply add
`SAVE_XML` as an additional test tags.

Better test naming and optional subfolder management

To better organize test files, the `assert_xml` method allows us to
write just the test key name (without `.xml`), and the framework will
automatically get the XML to assert/save from the `test_files`
directory. An optional `subfolder` parameter is also added to allow
writing to specific subfolder within `test_files`.

Better `___ignore___` management in assertion XMLs

Sometimes, we want to ignore a few XML node that are not relevant, or
have content that are not deterministic (changes on every test run). To
handle this, previously, developers would need to modify the assertion
XML content by hand or write their own local script to do so.

With this new framework, we just need to add an `ignore_schema.xml` file
somewhere in the `test_files` directory. If put inside a subfolder, it
will be applied with more priority towards the XML that are put on that
specific subfolder.

Save "pure" XML (before applying `___ignore___`) in temporary folder

When calling `SAVE_XML`, before applying the ignore patches, the XML
will be saved in a temporary folder (same folder as the screenshots for
tours), so that developers can use them in external tests in the future,
and for any other saving reasons.

In addition, this commit also:

- add `extra_tags` helper to save all the common tags for EDIs, for a
  better way to enable `EXTERNAL_MODE` testing inspired by `l10n_mx_edi`
- convert some non-assert XML test helpers into a class method
- canonicalize the XML to ensure consistency of the generated test files
  following the C14N Version 2 standard. (Deterministic namespaces
  location, sorted attributes, etc.)

task-4891206

X-original-commit: 5fc84f1
@robodoo
Copy link
Contributor

robodoo commented Nov 28, 2025

Pull request status dashboard

@fw-bot
Copy link
Contributor Author

fw-bot commented Nov 28, 2025

This PR targets 19.0 and is part of the forward-port chain. Further PRs will be created up to master.

More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port

@robodoo robodoo added the forwardport This PR was created by @fw-bot label Nov 28, 2025
@fw-bot
Copy link
Contributor Author

fw-bot commented Nov 28, 2025

@yosuanicolaus @smetl ci/runbot failed on this forward-port PR

Copy link
Contributor

@smetl smetl left a comment

Choose a reason for hiding this comment

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

@robodoo
Copy link
Contributor

robodoo commented Nov 28, 2025

@smetl you may want to rebuild or fix this PR as it has failed CI.

@fw-bot
Copy link
Contributor Author

fw-bot commented Nov 29, 2025

@yosuanicolaus @smetl the next pull request (#238043) is in conflict. You can merge the chain up to here by saying

@robodoo r+

More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

forwardport This PR was created by @fw-bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants