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

fix(core): reset tView between tests in Ivy TestBed #38659

Closed

Conversation

AndrewKushnir
Copy link
Contributor

tView that is stored on a component def contains information about directives and pipes that are available in the scope of this component. Patching component scope causes tView to be updated. Prior to this commit, the tView information was not restored/reset in case component class is not declared in the declarations field while calling TestBed.configureTestingModule, thus causing tView to be reused between tests (thus preserving scopes information between tests). This commit updates TestBed logic to preserve tView value before applying scope changes and reset it back to the previous state between tests.

Closes #38600.

PR Type

What kind of change does this PR introduce?

  • Bugfix

Does this PR introduce a breaking change?

  • Yes
  • No

`tView` that is stored on a component def contains information about directives and pipes
that are available in the scope of this component. Patching component scope causes `tView` to be
updated. Prior to this commit, the `tView` information was not restored/reset in case component
class is not declared in the `declarations` field while calling `TestBed.configureTestingModule`,
thus causing `tView` to be reused between tests (thus preserving scopes information between tests).
This commit updates TestBed logic to preserve `tView` value before applying scope changes and
reset it back to the previous state between tests.

Closes angular#38600.
@AndrewKushnir AndrewKushnir added type: bug/fix area: testing Issues related to Angular testing features, such as TestBed action: review The PR is still awaiting reviews from at least one requested reviewer area: core Issues related to the framework runtime target: patch This PR is targeted for the next patch release labels Sep 1, 2020
@ngbot ngbot bot modified the milestone: needsTriage Sep 1, 2020
@AndrewKushnir
Copy link
Contributor Author

AndrewKushnir commented Sep 1, 2020

Presubmit + Global Presubmit.

@AndrewKushnir AndrewKushnir marked this pull request as ready for review September 1, 2020 00:34
@AndrewKushnir AndrewKushnir added action: merge The PR is ready for merge by the caretaker and removed action: review The PR is still awaiting reviews from at least one requested reviewer labels Sep 2, 2020
@AndrewKushnir
Copy link
Contributor Author

Thanks for the review @petebacondarwin and @alxhub!

atscott pushed a commit that referenced this pull request Sep 3, 2020
`tView` that is stored on a component def contains information about directives and pipes
that are available in the scope of this component. Patching component scope causes `tView` to be
updated. Prior to this commit, the `tView` information was not restored/reset in case component
class is not declared in the `declarations` field while calling `TestBed.configureTestingModule`,
thus causing `tView` to be reused between tests (thus preserving scopes information between tests).
This commit updates TestBed logic to preserve `tView` value before applying scope changes and
reset it back to the previous state between tests.

Closes #38600.

PR Close #38659
@atscott atscott closed this in 44bb85a Sep 3, 2020
profanis pushed a commit to profanis/angular that referenced this pull request Sep 5, 2020
`tView` that is stored on a component def contains information about directives and pipes
that are available in the scope of this component. Patching component scope causes `tView` to be
updated. Prior to this commit, the `tView` information was not restored/reset in case component
class is not declared in the `declarations` field while calling `TestBed.configureTestingModule`,
thus causing `tView` to be reused between tests (thus preserving scopes information between tests).
This commit updates TestBed logic to preserve `tView` value before applying scope changes and
reset it back to the previous state between tests.

Closes angular#38600.

PR Close angular#38659
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Oct 4, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker area: core Issues related to the framework runtime area: testing Issues related to Angular testing features, such as TestBed cla: yes target: patch This PR is targeted for the next patch release type: bug/fix
Projects
None yet
Development

Successfully merging this pull request may close these issues.

TestBed passes even without any declarations in NG9 and NG10
4 participants