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

[Issue] Added null check in DataFixtureSetup for the scope #39427

Open
3 of 5 tasks
m2-assistant bot opened this issue Dec 3, 2024 · 9 comments · May be fixed by #39423
Open
3 of 5 tasks

[Issue] Added null check in DataFixtureSetup for the scope #39427

m2-assistant bot opened this issue Dec 3, 2024 · 9 comments · May be fixed by #39423
Assignees
Labels
Area: Test framework Component: TestFramework Issue: Confirmed Gate 3 Passed. Manual verification of the issue completed. Issue is confirmed Priority: P2 A defect with this priority could have functionality issues which are not to expectations. Progress: PR in progress Reproduced on 2.4.x The issue has been reproduced on latest 2.4-develop branch Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it

Comments

@m2-assistant
Copy link

m2-assistant bot commented Dec 3, 2024

This issue is automatically created based on existing pull request: #39423: Added null check in DataFixtureSetup for the scope


Description (*)

The scope defined in a data fixture could be an arbitrary string. If there is no corresponding value in the storage manager null is returned.

In this case null is passed to the scope switcher which leads to a TypeError, because it requires an object of type ScopeInterface.

The TypeError is now prevented by throwing a RuntimeException with a more specific message.

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • All automated tests passed successfully (all builds are green)
@m2-assistant m2-assistant bot linked a pull request Dec 3, 2024 that will close this issue
6 tasks
@github-project-automation github-project-automation bot moved this to Ready for Confirmation in Issue Confirmation and Triage Board Dec 3, 2024
@m2-community-project m2-community-project bot added the Priority: P2 A defect with this priority could have functionality issues which are not to expectations. label Dec 3, 2024
@engcom-Bravo engcom-Bravo added the Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it label Dec 3, 2024
@engcom-Hotel engcom-Hotel self-assigned this Dec 4, 2024
Copy link
Author

m2-assistant bot commented Dec 4, 2024

Hi @engcom-Hotel. Thank you for working on this issue.
In order to make sure that issue has enough information and ready for development, please read and check the following instruction: 👇

  • 1. Verify that issue has all the required information. (Preconditions, Steps to reproduce, Expected result, Actual result).
  • 2. Verify that issue has a meaningful description and provides enough information to reproduce the issue.
  • 3. Add Area: XXXXX label to the ticket, indicating the functional areas it may be related to.
  • 4. Verify that the issue is reproducible on 2.4-develop branch
    Details- If the issue is reproducible on 2.4-develop branch, please, add the label Reproduced on 2.4.x.
    - If the issue is not reproducible, add your comment that issue is not reproducible and close the issue and stop verification process here!
  • 5. Add label Issue: Confirmed once verification is complete.
  • 6. Make sure that automatic system confirms that report has been added to the backlog.

@engcom-Hotel
Copy link
Contributor

Hello @stollr,

Thanks for the report and collaboration!

We request you please provide us with more details on the fix provided in the PR as below:

  • Summary of the issue
  • Information on your environment
  • Steps to reproduce
  • Expected and actual results

Thanks

@engcom-Hotel engcom-Hotel added Issue: needs update Additional information is require, waiting for response and removed Issue: ready for confirmation labels Dec 4, 2024
@engcom-Hotel engcom-Hotel moved this from Ready for Confirmation to Needs Update in Issue Confirmation and Triage Board Dec 4, 2024
@stollr
Copy link
Contributor

stollr commented Dec 5, 2024

Sorry for not providing all required information.

Magento's integration test framework offers a way to create data fixtures with the Magento\TestFramework\Fixture\DataFixture attribute. The DataFixture's fourth argument in the constructor is $scope. If a value is passed, that does not exist in the DataFixtureStorageManager it will lead to TypeError in this line.

How to reproduce

Add an integration test to your own test suite that uses a data fixture with an invalid config. For example:

<?php

namespace MyVendor\MyModule\Test\Integration;

use Magento\Catalog\Test\Fixture\Product as ProductFixture;
use Magento\TestFramework\Fixture\DataFixture;
use Magento\TestFramework\Fixture\DbIsolation;
use PHPUnit\Framework\TestCase;

class SynchronizerTest extends TestCase
{
    #[DbIsolation(true)]
    #[DataFixture(
        ProductFixture::class,
        ['sku' => 'test', 'name' => 'Test', 'price' => '7.77'],
        'test',
        'invalid_scope_key' // this line results in an error
    )]
    public function testSynchronize(): void
    { }
}

If you'll run the test now, you'll see that an error appears, because the DataFixtureStorageManager does not have an item with the key invalid_scope_key.

@engcom-Hotel
Copy link
Contributor

Hello @stollr,

Thanks for the reply!

We have tried to reproduce the issue by making a custom module, but we are getting the below error:
image

Please let us know if we missed anything. We are attaching the custom module as well.
Magz.zip

Thanks

@stollr
Copy link
Contributor

stollr commented Dec 10, 2024

Yes, this is another issue that happens in the 2.4-develop branch. This line is responsible for the error:

In the 2.4-develop branch phpunit was upgraded to v10.5, where the getTestResultObject method was removed from the TestCase class.

So there's another bug in the test framework. The error is not triggered by my PR ;-)

@stollr
Copy link
Contributor

stollr commented Dec 10, 2024

I have added a new issue for the error you have mentioned, @engcom-Hotel.

But to proceed with this issue, can you add a breakpoint to this line, during execution of the test. Then you should see the TypeError mentioned in my comment above.

@engcom-Hotel
Copy link
Contributor

Thanks @stollr for the information!

We have tried to reproduce the issue by adding the breakpoint mentioned in the above comment and we are able to reproduce the issue. Please refer to the below error we are getting:

Unable to apply fixture: Magento\Catalog\Test\Fixture\Product (test)
#0 app/code/Magz/Issue39427/Test/Integration/SynchronizerTest.php(19): Magz\Issue39427\Test\Integration\SynchronizerTest->testSynchronize()

Caused By: Magento\TestFramework\Store\ScopeSwitcher::switch(): Argument #1 ($scope) must be of type Magento\Framework\App\ScopeInterface, null given, called in dev/tests/integration/framework/Magento/TestFramework/Annotation/DataFixtureSetup.php on line 49

Hence confirming the issue. Thanks for the contribution.

@engcom-Hotel engcom-Hotel added Issue: Confirmed Gate 3 Passed. Manual verification of the issue completed. Issue is confirmed Component: TestFramework Reproduced on 2.4.x The issue has been reproduced on latest 2.4-develop branch Area: Test framework and removed Issue: needs update Additional information is require, waiting for response labels Dec 11, 2024
@github-jira-sync-bot
Copy link

✅ Jira issue https://jira.corp.adobe.com/browse/AC-13503 is successfully created for this GitHub issue.

Copy link
Author

m2-assistant bot commented Dec 11, 2024

✅ Confirmed by @engcom-Hotel. Thank you for verifying the issue.
Issue Available: @engcom-Hotel, You will be automatically unassigned. Contributors/Maintainers can claim this issue to continue. To reclaim and continue work, reassign the ticket to yourself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Test framework Component: TestFramework Issue: Confirmed Gate 3 Passed. Manual verification of the issue completed. Issue is confirmed Priority: P2 A defect with this priority could have functionality issues which are not to expectations. Progress: PR in progress Reproduced on 2.4.x The issue has been reproduced on latest 2.4-develop branch Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants