TimeZoneForTests.swift 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import Foundation
  2. class TimeZoneForTests {
  3. private var originalTZ: String? = ProcessInfo.processInfo.environment["TZ"]
  4. private var originalDefaultTimeZone: TimeZone? = TimeZone.current
  5. // Helper function to set timezone
  6. func setTimezone(identifier: String) {
  7. // Set environment variable
  8. setenv("TZ", identifier, 1)
  9. tzset() // Make the change take effect
  10. // Force update the default TimeZone
  11. // This is the critical missing piece
  12. if let timeZone = TimeZone(identifier: identifier) {
  13. TimeZone.ReferenceType.default = timeZone
  14. // For extra assurance, you can log to verify
  15. print("Timezone set to: \(TimeZone.current.identifier)")
  16. } else {
  17. print("Failed to create TimeZone with identifier: \(identifier)")
  18. }
  19. }
  20. // Helper function to reset timezone
  21. func resetTimezone() {
  22. // Restore system timezone from environment
  23. if let originalTZ = originalTZ {
  24. setenv("TZ", originalTZ, 1)
  25. } else {
  26. unsetenv("TZ")
  27. }
  28. tzset()
  29. // Restore original default TimeZone
  30. if let originalTimeZone = originalDefaultTimeZone {
  31. TimeZone.ReferenceType.default = originalTimeZone
  32. }
  33. }
  34. }