tree bd50f7514cd84ad943289d0d7be234f343bb7a97
parent 3fbabb89f6b2c1c2fd59d9f01b02159610ae28a0
author Chris Bracken <chris@bracken.jp> 1736465762 -0800
committer GitHub <noreply@github.com> 1736465762 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJngF1yCRC1aQ7uu5UhlAAAEBcQADLyrpN65nATgVFribxBYt4D
 yGRYttnUbeotRoGPWj1qa+kxgpYvcTzoB8ure6dehH3Awg2oTs+9hBTlKJdGj2+I
 JBDhKKckpt3arnpplNjya+goEWcEBUS351QT4MahVZYylqTjZCFEq7l6OyP+h3+O
 bxVKdgSh64r7Q2P5W+NDj+4MDptsppmZW4/EtnxIicxVxKiZknD9arL2hx8JevVY
 W8vCWhv+czalnh+Z59R1MMFIjDircqhDbiAzD9kDKLHpwzrjPiD9RwB4jbs8Hr0M
 ppkhP0HewXR/kYqC0vjzkQxHWqORjWHkOR9MNvuXIop29E2PGpSxPnvXXph5LuEi
 sEaO2fr+jXhf1EVUZpWTQuCHGo334kgAD1xho8EO7ngU0ozS/VUlzfQpWEFpj4ei
 IEGXo6KQeFNWaLt3Wjw7kfVgskCKDnXEP+2XEo7vD54ABRRiQ2L9hc78+B49PPIu
 X7mGXXJnLMNsapcdwgjfAcJi4DQ+DCnJPwNe3Nm5H9Gtg0MMGqscDsR0rbCjM46x
 vQgDGJHlJ0ymHI1Hw1MOYS+fQyCOvPIfnBgeIdTOWPsYWpmnz41UY1s9lY4vXX1k
 V42tBUILAyMeyzWRlrGcIzFokrN7fZ0rd0O4M+1IBJjjKD6eL1tt5kVcHUGFP+m4
 0I+aU5XsABiVRi29sToM
 =xeg8
 -----END PGP SIGNATURE-----
 

integration_test: Add gitignore of golden image (#161404)

Ignore the golden file associated with

packages/integration_test/example/integration_test/integration_test_matches_golden_file.png

Test (and functionality) introduced in #160484.

Related issues:
* https://github.com/flutter/flutter/issues/143299.
* https://github.com/flutter/flutter/issues/160043.

## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md