google / gtm-session-fetcher

Google Toolbox for Mac - Session Fetcher
Apache License 2.0
238 stars 148 forks source link

[UnitTests] Fix order-dependent synchronous decorator tests #369

Closed bhamiltoncx closed 8 months ago

bhamiltoncx commented 8 months ago

The decorator tests which used synchronous decorators started failing if they were run alone (before any of the other tests).

This broke in https://github.com/google/gtm-session-fetcher/commit/d469daaafc456f2fc4625918987c0345761a2648 , when I enabled GTMStandardUserAgentProvider by default in fetchers which don't otherwise specify a user-agent provider.

The issue is that GTMStandardUserAgentProvider itself is asynchronous, but only the first time it's ever invoked (after that, it caches its result in a process-wide cache).

The synchronous decorator tests assumed they'd always stay synchronous, but this wasn't the case if they used GTMStandardUserAgentProvider and were the first tests to run in the process.

This fixes the issue by always providing a GTMUserAgentStringProvider for the synchronous decorator tests.

Tested: swift test passes (except known failure in #368, which is already failing in upstream on macOS 14.2.1). Also ran test -[GTMSessionFetcherServiceTest testMultipleDecoratorsSynchronous] by itself and ensured it failed before this change and passed after this change.

Fixes: #367

thomasvl commented 8 months ago

Thanks for the fix!