TimeZoneForTests.swift 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. CFTimeZoneResetSystem()
  11. // Force update the default TimeZone
  12. // This is the critical missing piece
  13. if let timeZone = TimeZone(identifier: identifier) {
  14. TimeZone.ReferenceType.default = timeZone
  15. // For extra assurance, you can log to verify
  16. print("Timezone set to: \(TimeZone.current.identifier)")
  17. } else {
  18. print("Failed to create TimeZone with identifier: \(identifier)")
  19. }
  20. }
  21. // Helper function to reset timezone
  22. func resetTimezone() {
  23. // Restore system timezone from environment
  24. if let originalTZ = originalTZ {
  25. setenv("TZ", originalTZ, 1)
  26. } else {
  27. unsetenv("TZ")
  28. }
  29. tzset()
  30. CFTimeZoneResetSystem()
  31. // Restore original default TimeZone
  32. if let originalTimeZone = originalDefaultTimeZone {
  33. TimeZone.ReferenceType.default = originalTimeZone
  34. }
  35. }
  36. }