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

Replaced FatalErrorUtil with Nimble #2802

Merged
merged 1 commit into from
Jul 13, 2023
Merged

Replaced FatalErrorUtil with Nimble #2802

merged 1 commit into from
Jul 13, 2023

Conversation

NachoSoto
Copy link
Contributor

@NachoSoto NachoSoto commented Jul 13, 2023

Turns out that all the testing issues in CI with #2780 were due to these functions.

Screenshot 2023-07-12 at 16 45 37

Even though I wasn't able to reproduce the slowness, I was able to detect the root cause using Instruments, which detects this "severe hang".
With this commit, all the slow test issues go away 🎉

The benefit is we don't have to maintain that hacky code and instead rely on Nimble with a much better implementation that use this hack:

func unreachable() {
    repeat {
        NSRunLoop.currentRunLoop().run()
    } while (true)
}

Downsides:

  • We lose the ability to verify the assertion message.
  • This does not work in watchOS

@NachoSoto NachoSoto added the test label Jul 13, 2023
@NachoSoto NachoSoto requested a review from a team July 13, 2023 03:43
@@ -25,10 +25,7 @@ final class UserDefaultsDefaultTests: TestCase {
override func setUp() {
super.setUp()

// We don't care if `DeviceCache` detects the modification of `UserDefaults` from this test.
self.ignoreFatalErrors {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

#2407 got rid of this assertion.

Turns out that all the testing issues in CI with #2780 were due to these functions.

/Users/ignacio/Desktop/Screenshot 2023-07-12 at 16.45.37.png
Even though I wasn't able to reproduce the slowness, I was able to detect the root cause using Instruments, which detects this "severe hang".
With this commit, all the slow test issues go away 🎉

The only downside is we lose the ability to verify the assertion message.
The benefit is we don't have to maintain that hacky code and instead rely on `Nimble` with a much better implementation that use this hack:
```swift
func unreachable() {
    repeat {
        NSRunLoop.currentRunLoop().run()
    } while (true)
}
```
@codecov
Copy link

codecov bot commented Jul 13, 2023

Codecov Report

Merging #2802 (85aa524) into main (1e12136) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #2802      +/-   ##
==========================================
- Coverage   86.51%   86.50%   -0.01%     
==========================================
  Files         214      213       -1     
  Lines       15396    15386      -10     
==========================================
- Hits        13320    13310      -10     
  Misses       2076     2076              

see 1 file with indirect coverage changes

Copy link
Member

@aboedo aboedo left a comment

Choose a reason for hiding this comment

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

so long, FatalErrorUtil

@aboedo
Copy link
Member

aboedo commented Jul 13, 2023

amazing find!!

@NachoSoto NachoSoto merged commit 4a0372b into main Jul 13, 2023
2 checks passed
@NachoSoto NachoSoto deleted the remove-fatal-error-uti branch July 13, 2023 12:28
NachoSoto added a commit that referenced this pull request Jul 13, 2023
This reverts commit 0a814ed.

The actual fix for the problem was #2802.
NachoSoto added a commit that referenced this pull request Jul 13, 2023
This reverts commit 0a814ed.

The actual fix for the problem was #2802.
NachoSoto added a commit that referenced this pull request Jul 14, 2023
NachoSoto added a commit that referenced this pull request Jul 14, 2023
NachoSoto added a commit that referenced this pull request Jul 19, 2023
**This is an automatic release.**

### Dependency Updates
* Bump fastlane from 2.213.0 to 2.214.0 (#2824) via dependabot[bot]
(@dependabot[bot])
### Other Changes
* `MainThreadMonitor`: don't crash if there is no test in progress
(#2838) via NachoSoto (@NachoSoto)
* `CI`: fixed Fastlane APITester lanes (#2836) via NachoSoto
(@NachoSoto)
* `Integration Tests`: workaround Swift runtime crash (#2826) via
NachoSoto (@NachoSoto)
* `@EnsureNonEmptyArrayDecodable` (#2831) via NachoSoto (@NachoSoto)
* `iOS 17`: added tests for simulating cancellations (#2597) via
NachoSoto (@NachoSoto)
* `CI`: make all `Codecov` jobs `informational` (#2828) via NachoSoto
(@NachoSoto)
* `MainThreadMonitor`: check deadlocks only ever N seconds (#2820) via
NachoSoto (@NachoSoto)
* New `@NonEmptyStringDecodable` (#2819) via NachoSoto (@NachoSoto)
* `MockDeviceCache`: avoid using real `UserDefaults` (#2814) via
NachoSoto (@NachoSoto)
* `throwAssertion`: fixed Xcode 15 compilation (#2813) via NachoSoto
(@NachoSoto)
* `CustomEntitlementsComputation`: fixed API testers (#2815) via
NachoSoto (@NachoSoto)
* `PackageTypeTests`: fixed iOS 12 (#2807) via NachoSoto (@NachoSoto)
* `Tests`: avoid race-condition in leak detection (#2806) via NachoSoto
(@NachoSoto)
* Revert "`Unit Tests`: removed leak detection" (#2805) via NachoSoto
(@NachoSoto)
* `PackageType: Codable` implementation (#2797) via NachoSoto
(@NachoSoto)
* `SystemInfo.init` no longer `throws` (#2803) via NachoSoto
(@NachoSoto)
* `Trusted Entitlements`: add support for signing `POST` body (#2753)
via NachoSoto (@NachoSoto)
* `Tests`: unified default timeouts (#2801) via NachoSoto (@NachoSoto)
* `Tests`: removed forced-unwrap (#2799) via NachoSoto (@NachoSoto)
* `Tests`: added missing `super.setUp()` (#2804) via NachoSoto
(@NachoSoto)
* Replaced `FatalErrorUtil` with `Nimble` (#2802) via NachoSoto
(@NachoSoto)
* `Tests`: fixed another flaky test (#2795) via NachoSoto (@NachoSoto)
* `TimingUtil`: improved tests by using `Clock` (#2794) via NachoSoto
(@NachoSoto)
* `IgnoreDecodeErrors`: log decoding error (#2778) via NachoSoto
(@NachoSoto)
* `TestLogHandler`: changed all tests to explicitly deinitialize it
(#2784) via NachoSoto (@NachoSoto)
* `LocalReceiptParserStoreKitTests`: fixed flaky test failure (#2785)
via NachoSoto (@NachoSoto)
* `Unit Tests`: removed leak detection (#2792) via NachoSoto
(@NachoSoto)
* `Tests`: fixed another flaky failure with asynchronous check (#2786)
via NachoSoto (@NachoSoto)

---------

Co-authored-by: NachoSoto <ignaciosoto90@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants