diff --git a/Example/Podfile b/Example/Podfile index e8dcfbb..8753e00 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -18,7 +18,7 @@ target 'GradientLoadingBar_Example' do inherit! :search_paths # Pods for snapshot testing. - pod 'SnapshotTesting', '~> 1.6' + pod 'SnapshotTesting', '~> 1.7', :inhibit_warnings => true end post_install do |installer| diff --git a/Example/Podfile.lock b/Example/Podfile.lock index de6add4..cce5466 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -2,13 +2,13 @@ PODS: - GradientLoadingBar (2.1.0): - LightweightObservable (~> 2.1) - LightweightObservable (2.1.1) - - SnapshotTesting (1.7.2) - - SwiftFormat/CLI (0.44.9) + - SnapshotTesting (1.8.1) + - SwiftFormat/CLI (0.44.17) - SwiftLint (0.39.2) DEPENDENCIES: - GradientLoadingBar (from `../`) - - SnapshotTesting (~> 1.6) + - SnapshotTesting (~> 1.7) - SwiftFormat/CLI (~> 0.40) - SwiftLint (~> 0.36) @@ -26,10 +26,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: GradientLoadingBar: 9992888de03a77c1e9364c087aefa1d9c3860ef7 LightweightObservable: 52abe2a01c8273921b1f66cd66526eb3328ca35a - SnapshotTesting: 8caa6661fea7c8019d5b46de77c16bab99c36c5c - SwiftFormat: e415b539c50e7a956a44b023544c9846c0c037d7 + SnapshotTesting: 0bf562bd74d3e9d053cd8f1123bd7b8913304df4 + SwiftFormat: 3b5caa6389b2b9adbc00e133b3ccc8c6e687a6a4 SwiftLint: 22ccbbe3b8008684be5955693bab135e0ed6a447 -PODFILE CHECKSUM: f56a08d884831d712155be32578b7364270d0af0 +PODFILE CHECKSUM: b55c1a12e9b2403a48a53c11f3f8659e36a20449 COCOAPODS: 1.9.3 diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index de6add4..cce5466 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -2,13 +2,13 @@ PODS: - GradientLoadingBar (2.1.0): - LightweightObservable (~> 2.1) - LightweightObservable (2.1.1) - - SnapshotTesting (1.7.2) - - SwiftFormat/CLI (0.44.9) + - SnapshotTesting (1.8.1) + - SwiftFormat/CLI (0.44.17) - SwiftLint (0.39.2) DEPENDENCIES: - GradientLoadingBar (from `../`) - - SnapshotTesting (~> 1.6) + - SnapshotTesting (~> 1.7) - SwiftFormat/CLI (~> 0.40) - SwiftLint (~> 0.36) @@ -26,10 +26,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: GradientLoadingBar: 9992888de03a77c1e9364c087aefa1d9c3860ef7 LightweightObservable: 52abe2a01c8273921b1f66cd66526eb3328ca35a - SnapshotTesting: 8caa6661fea7c8019d5b46de77c16bab99c36c5c - SwiftFormat: e415b539c50e7a956a44b023544c9846c0c037d7 + SnapshotTesting: 0bf562bd74d3e9d053cd8f1123bd7b8913304df4 + SwiftFormat: 3b5caa6389b2b9adbc00e133b3ccc8c6e687a6a4 SwiftLint: 22ccbbe3b8008684be5955693bab135e0ed6a447 -PODFILE CHECKSUM: f56a08d884831d712155be32578b7364270d0af0 +PODFILE CHECKSUM: b55c1a12e9b2403a48a53c11f3f8659e36a20449 COCOAPODS: 1.9.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index a33bb33..2cb8595 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -28,66 +28,70 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 01757E29DF92738C1D5D0528F1EB4824 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC1FD5A53165BF4293473D170AD9995E /* View.swift */; }; - 0FB8760A1D5B307CF301AD647F301823 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648F93ECED9C2684CDB6A60E6BE8DEDF /* Disposable.swift */; }; - 10A212D203E4E77F85BF70F9B14BAA19 /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CE49E78400E3A6E986194452C2A1611 /* LightweightObservable-dummy.m */; }; - 11F2134521037184F745C9010217B501 /* Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C7044ABF6219E06138EBA038827408 /* Description.swift */; }; - 14CC16A84D0558FF9DC6927E1BA82F02 /* Any.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7497F950FEA4E6B772B2F6042432723A /* Any.swift */; }; + 02EEAFC471B5BFF3DA9CA724B77ADAD2 /* SpriteKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2F50C5C54E7399F17909BE225B4138 /* SpriteKit.swift */; }; + 07BCE427364C14A3924FA6E5821BDFE9 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB9F808A784ECD647D041584F3BAA5CE /* CALayer.swift */; }; + 0CA33262BEBA6D7236BAC24028199D0E /* CaseIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF7FC13E714D014C72F1F9E6DE7D638 /* CaseIterable.swift */; }; + 0FB8760A1D5B307CF301AD647F301823 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C79828C9BB99118F3A15AA46899BB2C /* Disposable.swift */; }; + 10A212D203E4E77F85BF70F9B14BAA19 /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 263236C693550DBBEF6397B3FDA0D45E /* LightweightObservable-dummy.m */; }; + 10B99D1C93DD69D92FE05AAC7CB287F8 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16BF13A00E8108482D617C075B3D818E /* UIView.swift */; }; + 10D5D6DB215978A01F67896D0FFF68A2 /* SnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19955C276F98759888D7BDA3A77853F6 /* SnapshotTestCase.swift */; }; 186A5E5FEDE8A21A9ED58AFC7FF9F447 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ED406C1723EE2AB785C72BF3A291751 /* GradientLoadingBar-dummy.m */; }; - 18ED84EFAF015095FCCF61A8E494F325 /* AssertSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E46234BCB7A6CF5AE3ECC8C30C3786B /* AssertSnapshot.swift */; }; - 1A1F20E176923FF03A0EAEA886703719 /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 743840C93216AFDAE6E14647264F5538 /* NSView.swift */; }; - 2371CFDF095282B1D6935C36C81E46FC /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4748F84A87672B2B8A2332EBFAB30E20 /* UIImage.swift */; }; - 23B3D1B39D273F7B43BA45F255EDE5C5 /* CaseIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5F5BFF05569BBDD6EF0224F0E21090A /* CaseIterable.swift */; }; + 21E34ED04696645D47BC124C8457D643 /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C056D069A391AAB52B9DE80ACAC9A16A /* SnapshotTesting-dummy.m */; }; 23ED8630B019A004BC2A54C98AB1399C /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8194C4CB9E683FC366F48513ED1B1A9A /* Pods-GradientLoadingBar_Example-dummy.m */; }; - 29F37DB8A1899894CA87E8E8381E2C11 /* NSViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88FB982EE7911E38255A291A79DB742F /* NSViewController.swift */; }; - 3042C7F54B8C405DC85737D720333314 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D95A77154276FCFD49025721CF9191 /* Observable+Equatable.swift */; }; - 33432CD4B8F83F0C678B5C67CAF13414 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B174D68683E03CEB909A118CABC01E /* String+SpecialCharacters.swift */; }; + 2569FB9BC55B0028DB8A0217666BD384 /* UIBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C062ECECBEBFE0A98DCEB165BD9E3B7 /* UIBezierPath.swift */; }; + 2617BFC93AAED6FFAC6C298D2F4D97AE /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6C72CD77EA1E1E09526DAF3BF9031B /* UIViewController.swift */; }; + 2D0C0DD04AA4F9C170A4FBF0D3FD9626 /* Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF123D0A3E653F02DCEB06FFA07E753 /* Wait.swift */; }; + 2DF2678C2AACDF82CB67532E7737AFA6 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC7DE873CD81C2A6FE42262C00452A04 /* Diff.swift */; }; + 3042C7F54B8C405DC85737D720333314 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 490274B00B3D32108B7DE40C5ACA9AAC /* Observable+Equatable.swift */; }; 3995CE4B1EB94A759B5B4E8C4BEEFC67 /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B57292CF383AEF209D4710AC1B19FF4 /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 399CC742C4114C01FD1C883B9F6EC7D3 /* GradientActivityIndicatorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D25A3B900085A32A5C7D3F385452EF0 /* GradientActivityIndicatorViewModel.swift */; }; 3CB9028E156C3D9B3D83045793C3C39B /* NotchGradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F160F9FC6E13D4D1784FAAF102A897 /* NotchGradientLoadingBarController.swift */; }; - 440314FEC8EC90F865D8D20910989A69 /* Diffing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 485FFC9380094A5DB42D7366AEBF4780 /* Diffing.swift */; }; - 45E08C558558663C5FD79ABFF093501C /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE3F100C4CDD54473EA2C6C753CE3F8 /* Observable+KeyPath.swift */; }; + 40AAD537046D8467746A0306A7D7DF94 /* SceneKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9917FE3936F34E3EF7BC9DA0C3761B65 /* SceneKit.swift */; }; + 45B49E668D4E0DF1D905F71246A30121 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AEC5FCC695B6A6E608B8371AA56C0CA /* Async.swift */; }; + 45E08C558558663C5FD79ABFF093501C /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62FE7DCB58464A147A5F3106011B6B3D /* Observable+KeyPath.swift */; }; 467861AB1D5B059E9FF3610407ECCED4 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F17E189033503650D8A495ADF1F369D /* Constants.swift */; }; - 46B2A4686C72C29C24576FC6FF56A7BE /* AssertInlineSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5FB89A60C9EF49D259A87FD0D200D3 /* AssertInlineSnapshot.swift */; }; 4B5A5EBA97A912894C10D040B5A1225D /* Pods-GradientLoadingBar_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 132C18988D60EF85736C043D43C19E57 /* Pods-GradientLoadingBar_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4CDC105622C39458E5795C079A7DA4ED /* Pods-GradientLoadingBar_SnapshotTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 172DF8516EF6D5757C3FBEF1C0CB52DC /* Pods-GradientLoadingBar_SnapshotTests-dummy.m */; }; - 4E5AA162D02372A80FABE033AD6BFFE6 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0D466687F25CFEC98F95EC624033C2F /* Diff.swift */; }; - 4F03BBCA0FCF5903B46F72BE0BADDF34 /* SceneKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E508BF65994F167606FC9180BE8059FC /* SceneKit.swift */; }; - 509FAAD85506B9E1BCCA50505B8C93DB /* SpriteKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = A70E7C9947EB80BF9BB160DBD905E4D1 /* SpriteKit.swift */; }; - 56B2D76BD27EAA69A1BED0113B7F9F51 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B23DE3822DAC1D50D1BB94E49D51CAC1 /* UIView.swift */; }; - 57244463125C60529B7391F9FA3052AD /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0AC5F9D0359F62D9B6CFA7E28C270C /* Snapshotting.swift */; }; - 5C646D4C61F7CDC27DBCBD7960C48BB4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; + 51D28EADB4924A8096EDCEFC3D74CAB8 /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839E953D87FD49848D29CC63C8C5F825 /* Snapshotting.swift */; }; + 56BC6C7B5E248296BAA214504F2AC607 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0965FCF94C6751E5F873995C0CC05032 /* XCTest.framework */; }; + 56CD2FF07A0AFE121A7512FB49FCEDE7 /* Diffing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1079CC494384561174A3C21ABA81E55 /* Diffing.swift */; }; + 59B265CDC0345DA9D541A2D6A1A81361 /* Any.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9059C2290087AA23773A107EEAF2780C /* Any.swift */; }; 604C51928D4CFDAE15A6CAB6327B68D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; - 6466CB6250CBD3F61D35E1132618C759 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0965FCF94C6751E5F873995C0CC05032 /* XCTest.framework */; }; - 6658F9FE5EEFD579907F946DD9FDD8E3 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 655D196DB461A65E1D8D6C38F3ACF62D /* URLRequest.swift */; }; - 67C39A754A360A5EFC7FE0037CECE5C3 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAFAFBF669302034A4D6BEDD683F06D /* CALayer.swift */; }; + 62C4188A8DB5CA43231DE8D64E72BD1D /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54DAB11E00E3D63CC2A323A3CE988E73 /* View.swift */; }; 681130A53798D8143A2C972C3351D165 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; + 6A5C798F3DC6B29E72E741AC83C7203D /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91D90321BBF367FE8F8B64CF43974858 /* URLRequest.swift */; }; + 6AFC185192FD16011F63776037110EED /* SnapshotTesting-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C0357289574364DE36EC0534E47D210B /* SnapshotTesting-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 74463B44B8B2D754F999098ED76E55ED /* Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D91BC6888831D2E13620306E2CD9E9 /* Description.swift */; }; 757352462D522BDB0B228DE9880106ED /* Pods-GradientLoadingBar_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9107CAA27BA0679345F24910903133 /* Pods-GradientLoadingBar_Tests-dummy.m */; }; - 8003323F07F7A6F822902979CE092B88 /* Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = F952B84395F604678559569DA34F74D2 /* Wait.swift */; }; - 84432746DEB076256002FB7BABDAAAA5 /* SnapshotTesting-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E503602B2F6C5B0D3DD0B08982C1E017 /* SnapshotTesting-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CD5CB3FDF05526DBF034B61F696BA93 /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87FA564458DD7C259A55CC2F083CBF97 /* PlistEncoder.swift */; }; - 8E1FBD13A74F689CFC06054841BFC596 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5557B095A3BB320B3238CBA59402742 /* UIViewController.swift */; }; + 7A910B1EE5D070CB301AC51C2E035C91 /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF2204C430A0BC52D7FCF4FFFD07515D /* NSImage.swift */; }; + 7F496FC075C99F8B35BB6A2B2991BE4A /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0426AE1E75E69C5BDA20A5964A116F57 /* Data.swift */; }; + 8A01A0DEFA212DCAA14250DF50293363 /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B25DC9DFF59BF10729E579A6798933 /* NSView.swift */; }; + 952DF5160B7A5F339C603FCFBC7BA3ED /* AssertInlineSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA242BBF8BBEB7323622998228D907E /* AssertInlineSnapshot.swift */; }; 97D4B62D9EEEFE2B493AA25E7E1764A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; + 9E0237BBCDF5E22C8C70CA299BA989B3 /* AssertSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD44150088F0B1519DDF518A23D5F74A /* AssertSnapshot.swift */; }; A32DD5DF0D5C9A1DF6A45C34ABE16FB2 /* GradientActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 838FFB89D1674B1F662F419BA3E5EA91 /* GradientActivityIndicatorView.swift */; }; - A455E5B77A019CEAEEA0F9D26B1B74E6 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B6436CA49E05FD0F26235D5008843F3 /* Codable.swift */; }; A46F1CB493251F84297943B5B60C8D5C /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4371A74F9A6D74628527A30E755EFF25 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AA6612CD34134596239652A299AC0F76 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9C3128EB6965EA592CD63B38170D57B /* Async.swift */; }; - AB5489F67B851092ABABCF65190015A0 /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D5B2A1C4D6360C6D91F1483048511530 /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B04CA17471143BEDA50779BE9660BD2A /* SnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1224C54074A146D75B2762DEE7B60CE /* SnapshotTestCase.swift */; }; + A7911111D9E22FFCEB046C48BD26CD03 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5869027FA34D756BF5705CE123E78403 /* String.swift */; }; + AA8458701AD53DA38ECC607024FD4286 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04F8C07BB2BD290285C29C757B0C156 /* Codable.swift */; }; + AB5489F67B851092ABABCF65190015A0 /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE38892FFE579C6B8915FCB274BDF6F /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B1B3C3B19CBD78FB949FDAB120FAFA81 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110FBB49DC08278A7EE52562088F5563 /* String+SpecialCharacters.swift */; }; + B2224D30919A1849CCB2F495EC1EC6CE /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6F42E17D889A7841E21B372D54662C /* PlistEncoder.swift */; }; B35254B6E48761D71D1F0217E7361ABF /* GradientActivityIndicatorView+AnimateIsHidden.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBA867972D9A24CB4A3459B60E3AF14 /* GradientActivityIndicatorView+AnimateIsHidden.swift */; }; + B4A0E7DE8263B28AC4D433D2AB0BD101 /* CGPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = E49466D561F51DB58D30D2DE137407F4 /* CGPath.swift */; }; BC0737141F5186D65C436B7CABC5C0F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; - BDFAF00F9FE360EAFD864F290030A2D0 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABB33081F3543E93409B82653F5C8999 /* Data.swift */; }; - BE068F001E2344449F6E193DFB12B1D1 /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622DE03EE214A93E48D3A4CC05B88A2C /* NSImage.swift */; }; - C2B818BE2E57EF9A8CE51775FCB33C2B /* Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0DE2DCC80295626C430F2B47550ECE5 /* Internal.swift */; }; + BEDA3BD4A21DD52829573D6AB7E3887A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; + C2E28779774BF76EBD7492257160E727 /* NSViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA67DBC6A3A9B1FAE0A77E1AF1D70C5D /* NSViewController.swift */; }; + C5B200336D2113D3C9081DF38FA71EFD /* NSBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C182D91D03AEAFB62DEEDE3CEB9A13 /* NSBezierPath.swift */; }; + C903A253A697DCF3ABA3EE46B5DCD105 /* Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4834CAC48D838D6B238E27BF7BFB747F /* Internal.swift */; }; CA1FEEEDF0E737D2B3BB0E90C749A3E5 /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07D86CBFE6D514D79D74AB257CD5408 /* GradientLoadingBarController.swift */; }; CF4330020B5DE2F6AD592D7B836396A0 /* LightweightObservable.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 834918404C77B6D44D53C01B3D12C581 /* LightweightObservable.framework */; }; - D56563764E24224FB95BC77EC18F7D9E /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FE4FE8F00C724C9593C6DEFB4CE2286 /* String.swift */; }; - D6A43851802E3E81CF23D65CA9A81E4E /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D1B84171C66B510644D7EFFDC5B3E475 /* SnapshotTesting-dummy.m */; }; - DCB4C8B6FACCEA4F92EAD1DF41AFA20E /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79AF6D809DE93FF8CDFAEFD4AF8B2C76 /* Observable.swift */; }; + D5CF78CD0117EBB47C0F4CF5B69F021A /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = E112B09F960A755C3152A1612E3AF37B /* XCTAttachment.swift */; }; + D858C353CC2F564E42446D4E6E360668 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BFF42E97B209FD50665E080953499DA /* SwiftUIView.swift */; }; + DCB4C8B6FACCEA4F92EAD1DF41AFA20E /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ACED4FA1FA9DD8A07DB99BEFDAF743B /* Observable.swift */; }; E04AD5B984CAB8F2421274F5366446E7 /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8224E37407CEAAEBC6A6BF5B09960E84 /* GradientLoadingBarViewModel.swift */; }; E8945D07A466F2FA6A965D3AA13F41EF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */; }; F56FA75EA015F922C46B949B40394B3E /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A900E1CFF1D76CF61DDF7358F5C8863 /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDAD70506FFFD578C1327E64876A08E3 /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6C45FD2B6DBF67E9CA08571D980F9C7 /* XCTAttachment.swift */; }; + F58CC71DED68C325B5EF5EAC30C8070F /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C947E6F38D8D0A3257589741B61C1E9 /* UIImage.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -150,110 +154,114 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0426AE1E75E69C5BDA20A5964A116F57 /* Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Data.swift; path = Sources/SnapshotTesting/Snapshotting/Data.swift; sourceTree = ""; }; 08CF014A05CEBA3625CDE9DA9129B9A8 /* GradientLoadingBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-prefix.pch"; sourceTree = ""; }; 0965FCF94C6751E5F873995C0CC05032 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 0AC379D97F2A93184FF0C394113C0A62 /* SwiftLint.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.debug.xcconfig; sourceTree = ""; }; 0B57292CF383AEF209D4710AC1B19FF4 /* GradientLoadingBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-umbrella.h"; sourceTree = ""; }; 108AACC96F7DBC089B0840E09F19C698 /* Pods-GradientLoadingBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.release.xcconfig"; sourceTree = ""; }; + 110FBB49DC08278A7EE52562088F5563 /* String+SpecialCharacters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SpecialCharacters.swift"; path = "Sources/SnapshotTesting/Common/String+SpecialCharacters.swift"; sourceTree = ""; }; 132C18988D60EF85736C043D43C19E57 /* Pods-GradientLoadingBar_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Tests-umbrella.h"; sourceTree = ""; }; 13520AB8B3790CE3CEDCBBEEE1EF237A /* Pods_GradientLoadingBar_SnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_SnapshotTests.framework; path = "Pods-GradientLoadingBar_SnapshotTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 1679A4CF92D4ADFB15F8200201EC3AE5 /* Pods-GradientLoadingBar_SnapshotTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_SnapshotTests-frameworks.sh"; sourceTree = ""; }; + 16BF13A00E8108482D617C075B3D818E /* UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView.swift; path = Sources/SnapshotTesting/Snapshotting/UIView.swift; sourceTree = ""; }; 1711FC18263D47D46851F0433A93F110 /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Tests.framework; path = "Pods-GradientLoadingBar_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 172DF8516EF6D5757C3FBEF1C0CB52DC /* Pods-GradientLoadingBar_SnapshotTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_SnapshotTests-dummy.m"; sourceTree = ""; }; + 19955C276F98759888D7BDA3A77853F6 /* SnapshotTestCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapshotTestCase.swift; path = Sources/SnapshotTesting/SnapshotTestCase.swift; sourceTree = ""; }; 1A9107CAA27BA0679345F24910903133 /* Pods-GradientLoadingBar_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Tests-dummy.m"; sourceTree = ""; }; + 1ACED4FA1FA9DD8A07DB99BEFDAF743B /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Classes/Observable.swift; sourceTree = ""; }; 1B664F0A7F5E59140F761C16069995E9 /* Pods-GradientLoadingBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.release.xcconfig"; sourceTree = ""; }; + 1B6F42E17D889A7841E21B372D54662C /* PlistEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlistEncoder.swift; path = Sources/SnapshotTesting/Common/PlistEncoder.swift; sourceTree = ""; }; + 1BE38892FFE579C6B8915FCB274BDF6F /* LightweightObservable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-umbrella.h"; sourceTree = ""; }; 1CA5ADE67427DB590BC5414E8E4498BA /* Pods-GradientLoadingBar_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-acknowledgements.plist"; sourceTree = ""; }; 1ED406C1723EE2AB785C72BF3A291751 /* GradientLoadingBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientLoadingBar-dummy.m"; sourceTree = ""; }; - 1FE4FE8F00C724C9593C6DEFB4CE2286 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/SnapshotTesting/Snapshotting/String.swift; sourceTree = ""; }; 219D91F90F2D4E48019FF8920700C17F /* Pods-GradientLoadingBar_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 2B6436CA49E05FD0F26235D5008843F3 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/SnapshotTesting/Snapshotting/Codable.swift; sourceTree = ""; }; + 263236C693550DBBEF6397B3FDA0D45E /* LightweightObservable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LightweightObservable-dummy.m"; sourceTree = ""; }; 2CBA867972D9A24CB4A3459B60E3AF14 /* GradientActivityIndicatorView+AnimateIsHidden.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "GradientActivityIndicatorView+AnimateIsHidden.swift"; sourceTree = ""; }; + 2CF7FC13E714D014C72F1F9E6DE7D638 /* CaseIterable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaseIterable.swift; path = Sources/SnapshotTesting/Snapshotting/CaseIterable.swift; sourceTree = ""; }; 2D246858B1E28690CC1921F1EC8328E1 /* Pods-GradientLoadingBar_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Example-frameworks.sh"; sourceTree = ""; }; 2E16A843354D5BC8D4DA54D9AEFEAAB2 /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_SnapshotTests-acknowledgements.plist"; sourceTree = ""; }; + 393A2EB9C57F6740D90A63725B4539AB /* SnapshotTesting.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.release.xcconfig; sourceTree = ""; }; 3A900E1CFF1D76CF61DDF7358F5C8863 /* Pods-GradientLoadingBar_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Example-umbrella.h"; sourceTree = ""; }; - 3B644D77B6DA2AE767C93222955C0195 /* SnapshotTesting.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.release.xcconfig; sourceTree = ""; }; + 3C062ECECBEBFE0A98DCEB165BD9E3B7 /* UIBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift; sourceTree = ""; }; 3C6A379C135C84644F189B8056CCBA04 /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Example.framework; path = "Pods-GradientLoadingBar_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3CE49E78400E3A6E986194452C2A1611 /* LightweightObservable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LightweightObservable-dummy.m"; sourceTree = ""; }; + 3C79828C9BB99118F3A15AA46899BB2C /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Classes/Disposable.swift; sourceTree = ""; }; 3D25A3B900085A32A5C7D3F385452EF0 /* GradientActivityIndicatorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewModel.swift; sourceTree = ""; }; + 3FF123D0A3E653F02DCEB06FFA07E753 /* Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Wait.swift; path = Sources/SnapshotTesting/Extensions/Wait.swift; sourceTree = ""; }; 42D87AB9459267458201EBFBB68848C1 /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; sourceTree = ""; }; 4371A74F9A6D74628527A30E755EFF25 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_SnapshotTests-umbrella.h"; sourceTree = ""; }; - 4748F84A87672B2B8A2332EBFAB30E20 /* UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImage.swift; path = Sources/SnapshotTesting/Snapshotting/UIImage.swift; sourceTree = ""; }; - 47AF808C977A1F54C41301EE10EFED69 /* SwiftFormat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.release.xcconfig; sourceTree = ""; }; - 485FFC9380094A5DB42D7366AEBF4780 /* Diffing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diffing.swift; path = Sources/SnapshotTesting/Diffing.swift; sourceTree = ""; }; - 51265E01B15BDF30B0C2CBDF6A151BC4 /* LightweightObservable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.debug.xcconfig; sourceTree = ""; }; - 5E0ED20F03F3062DB47BF2E306FF9049 /* LightweightObservable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LightweightObservable-Info.plist"; sourceTree = ""; }; - 622DE03EE214A93E48D3A4CC05B88A2C /* NSImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSImage.swift; path = Sources/SnapshotTesting/Snapshotting/NSImage.swift; sourceTree = ""; }; - 62B150B8D8FC0F8D9D80F21F33BA2B6B /* SnapshotTesting-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-prefix.pch"; sourceTree = ""; }; - 648F93ECED9C2684CDB6A60E6BE8DEDF /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Classes/Disposable.swift; sourceTree = ""; }; + 4834CAC48D838D6B238E27BF7BFB747F /* Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Internal.swift; path = Sources/SnapshotTesting/Common/Internal.swift; sourceTree = ""; }; + 490274B00B3D32108B7DE40C5ACA9AAC /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Classes/Extensions/Observable+Equatable.swift"; sourceTree = ""; }; + 5257A01502362763E1F6E250104CB1EA /* SwiftLint.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.release.xcconfig; sourceTree = ""; }; + 54DAB11E00E3D63CC2A323A3CE988E73 /* View.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = View.swift; path = Sources/SnapshotTesting/Common/View.swift; sourceTree = ""; }; + 5869027FA34D756BF5705CE123E78403 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/SnapshotTesting/Snapshotting/String.swift; sourceTree = ""; }; + 5C2F50C5C54E7399F17909BE225B4138 /* SpriteKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SpriteKit.swift; path = Sources/SnapshotTesting/Snapshotting/SpriteKit.swift; sourceTree = ""; }; + 613007635DAC9F649E5D50030E081A62 /* SnapshotTesting.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapshotTesting.modulemap; sourceTree = ""; }; + 620E7B2310D43EF3013A90BE1D624B3D /* LightweightObservable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LightweightObservable.modulemap; sourceTree = ""; }; + 62FE7DCB58464A147A5F3106011B6B3D /* Observable+KeyPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+KeyPath.swift"; path = "LightweightObservable/Classes/Extensions/Observable+KeyPath.swift"; sourceTree = ""; }; 652D9AA358DBDB2DBA1CFB02CCBA8DC4 /* Pods-GradientLoadingBar_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-Info.plist"; sourceTree = ""; }; - 655D196DB461A65E1D8D6C38F3ACF62D /* URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLRequest.swift; path = Sources/SnapshotTesting/Snapshotting/URLRequest.swift; sourceTree = ""; }; - 66C7044ABF6219E06138EBA038827408 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Sources/SnapshotTesting/Snapshotting/Description.swift; sourceTree = ""; }; 67873E92210DD4E777C49C6E8AEDC108 /* GradientLoadingBar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GradientLoadingBar.framework; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 69838A921E83418B945E72EB342809F5 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - 6A0AC5F9D0359F62D9B6CFA7E28C270C /* Snapshotting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Snapshotting.swift; path = Sources/SnapshotTesting/Snapshotting.swift; sourceTree = ""; }; + 6BFF42E97B209FD50665E080953499DA /* SwiftUIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftUIView.swift; path = Sources/SnapshotTesting/Snapshotting/SwiftUIView.swift; sourceTree = ""; }; + 6CB3BE93AA36A67000795C17C2D94032 /* LightweightObservable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LightweightObservable-Info.plist"; sourceTree = ""; }; 6FFACAC9C12AF6B7E1E6144C8EDE02A4 /* GradientLoadingBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientLoadingBar-Info.plist"; sourceTree = ""; }; - 71B174D68683E03CEB909A118CABC01E /* String+SpecialCharacters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SpecialCharacters.swift"; path = "Sources/SnapshotTesting/Common/String+SpecialCharacters.swift"; sourceTree = ""; }; - 743840C93216AFDAE6E14647264F5538 /* NSView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSView.swift; path = Sources/SnapshotTesting/Snapshotting/NSView.swift; sourceTree = ""; }; - 7497F950FEA4E6B772B2F6042432723A /* Any.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Any.swift; path = Sources/SnapshotTesting/Snapshotting/Any.swift; sourceTree = ""; }; + 7019702436A62794D49920AA204E3FA8 /* SwiftFormat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.release.xcconfig; sourceTree = ""; }; + 75B25DC9DFF59BF10729E579A6798933 /* NSView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSView.swift; path = Sources/SnapshotTesting/Snapshotting/NSView.swift; sourceTree = ""; }; 75F160F9FC6E13D4D1784FAAF102A897 /* NotchGradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotchGradientLoadingBarController.swift; path = GradientLoadingBar/Classes/NotchGradientLoadingBarController.swift; sourceTree = ""; }; 77B5CE7191F5B0B041149F2190ECF5EA /* GradientLoadingBar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.release.xcconfig; sourceTree = ""; }; - 79AF6D809DE93FF8CDFAEFD4AF8B2C76 /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Classes/Observable.swift; sourceTree = ""; }; - 7D3DDA4D26F734FE0934A65A9DF701DF /* LightweightObservable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LightweightObservable.modulemap; sourceTree = ""; }; 8194C4CB9E683FC366F48513ED1B1A9A /* Pods-GradientLoadingBar_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Example-dummy.m"; sourceTree = ""; }; 8224E37407CEAAEBC6A6BF5B09960E84 /* GradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModel.swift; sourceTree = ""; }; 831F8084AF52F32E37D95A4C19E85D26 /* GradientLoadingBar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.debug.xcconfig; sourceTree = ""; }; 834918404C77B6D44D53C01B3D12C581 /* LightweightObservable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LightweightObservable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 838FFB89D1674B1F662F419BA3E5EA91 /* GradientActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorView.swift; sourceTree = ""; }; - 87FA564458DD7C259A55CC2F083CBF97 /* PlistEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlistEncoder.swift; path = Sources/SnapshotTesting/Common/PlistEncoder.swift; sourceTree = ""; }; - 88FB982EE7911E38255A291A79DB742F /* NSViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSViewController.swift; path = Sources/SnapshotTesting/Snapshotting/NSViewController.swift; sourceTree = ""; }; + 839E953D87FD49848D29CC63C8C5F825 /* Snapshotting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Snapshotting.swift; path = Sources/SnapshotTesting/Snapshotting.swift; sourceTree = ""; }; + 8473B7101AE244EEF7BEDCED20A9BA92 /* LightweightObservable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.debug.xcconfig; sourceTree = ""; }; + 8578E96FEC106136644EA07C96AA109E /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; + 87C182D91D03AEAFB62DEEDE3CEB9A13 /* NSBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift; sourceTree = ""; }; + 8AEC5FCC695B6A6E608B8371AA56C0CA /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/SnapshotTesting/Async.swift; sourceTree = ""; }; 8F17E189033503650D8A495ADF1F369D /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - 93233819B16746A4C1D1A32DFCEC1752 /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; + 9059C2290087AA23773A107EEAF2780C /* Any.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Any.swift; path = Sources/SnapshotTesting/Snapshotting/Any.swift; sourceTree = ""; }; + 91D90321BBF367FE8F8B64CF43974858 /* URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLRequest.swift; path = Sources/SnapshotTesting/Snapshotting/URLRequest.swift; sourceTree = ""; }; 95A4CD5CAEDCA57994965B76430C1FBE /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientLoadingBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9917FE3936F34E3EF7BC9DA0C3761B65 /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; sourceTree = ""; }; + 9C947E6F38D8D0A3257589741B61C1E9 /* UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImage.swift; path = Sources/SnapshotTesting/Snapshotting/UIImage.swift; sourceTree = ""; }; 9D184645A643B40E94DA5BC70B5C6F2B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9DD32929B122D2561D1E99468EECDBF7 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; - 9E46234BCB7A6CF5AE3ECC8C30C3786B /* AssertSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertSnapshot.swift; path = Sources/SnapshotTesting/AssertSnapshot.swift; sourceTree = ""; }; - 9EFE8B971DF98A48094E8121DA5F22BE /* LightweightObservable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.release.xcconfig; sourceTree = ""; }; - 9FAFAFBF669302034A4D6BEDD683F06D /* CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CALayer.swift; path = Sources/SnapshotTesting/Snapshotting/CALayer.swift; sourceTree = ""; }; A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapshotTesting.framework; path = SnapshotTesting.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A1224C54074A146D75B2762DEE7B60CE /* SnapshotTestCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapshotTestCase.swift; path = Sources/SnapshotTesting/SnapshotTestCase.swift; sourceTree = ""; }; - A2BEFE77478CF65195FEA6A6C36027C2 /* SwiftLint.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.release.xcconfig; sourceTree = ""; }; + A37D5195BA402F028C3765D44BB0A28D /* LightweightObservable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.release.xcconfig; sourceTree = ""; }; A652F20CE7EE44E64565C2120B651665 /* Pods-GradientLoadingBar_SnapshotTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_SnapshotTests.modulemap"; sourceTree = ""; }; - A6C45FD2B6DBF67E9CA08571D980F9C7 /* XCTAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCTAttachment.swift; path = Sources/SnapshotTesting/Common/XCTAttachment.swift; sourceTree = ""; }; A6F9A1BAFFBBC246C94565120C2B671A /* GradientLoadingBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientLoadingBar.modulemap; sourceTree = ""; }; - A70E7C9947EB80BF9BB160DBD905E4D1 /* SpriteKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SpriteKit.swift; path = Sources/SnapshotTesting/Snapshotting/SpriteKit.swift; sourceTree = ""; }; A95E7032DE35DF972EF7FEC8A884303B /* Pods-GradientLoadingBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.debug.xcconfig"; sourceTree = ""; }; - ABB33081F3543E93409B82653F5C8999 /* Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Data.swift; path = Sources/SnapshotTesting/Snapshotting/Data.swift; sourceTree = ""; }; - AC5FB89A60C9EF49D259A87FD0D200D3 /* AssertInlineSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertInlineSnapshot.swift; path = Sources/SnapshotTesting/AssertInlineSnapshot.swift; sourceTree = ""; }; - B0D466687F25CFEC98F95EC624033C2F /* Diff.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diff.swift; path = Sources/SnapshotTesting/Diff.swift; sourceTree = ""; }; - B0DE2DCC80295626C430F2B47550ECE5 /* Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Internal.swift; path = Sources/SnapshotTesting/Common/Internal.swift; sourceTree = ""; }; + B1079CC494384561174A3C21ABA81E55 /* Diffing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diffing.swift; path = Sources/SnapshotTesting/Diffing.swift; sourceTree = ""; }; B1518F0564D9405495037F4713C4F143 /* Pods-GradientLoadingBar_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Tests.modulemap"; sourceTree = ""; }; - B23DE3822DAC1D50D1BB94E49D51CAC1 /* UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView.swift; path = Sources/SnapshotTesting/Snapshotting/UIView.swift; sourceTree = ""; }; B27AAA41B1DEF56C8059867126A15A38 /* Pods-GradientLoadingBar_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-Info.plist"; sourceTree = ""; }; + B29B2057FFAA955F4F8223BDAAAF8B56 /* SwiftFormat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.debug.xcconfig; sourceTree = ""; }; + B4D91BC6888831D2E13620306E2CD9E9 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Sources/SnapshotTesting/Snapshotting/Description.swift; sourceTree = ""; }; + B533ECCC769063846CEC71B060C04EAF /* SnapshotTesting-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-prefix.pch"; sourceTree = ""; }; B7FF35F32E5C06204CAF8183AC101D53 /* Pods-GradientLoadingBar_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-acknowledgements.plist"; sourceTree = ""; }; + BC7DE873CD81C2A6FE42262C00452A04 /* Diff.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diff.swift; path = Sources/SnapshotTesting/Diff.swift; sourceTree = ""; }; + BD44150088F0B1519DDF518A23D5F74A /* AssertSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertSnapshot.swift; path = Sources/SnapshotTesting/AssertSnapshot.swift; sourceTree = ""; }; BEBA37204701F79F631433A8EEF190E7 /* Pods-GradientLoadingBar_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Example-acknowledgements.markdown"; sourceTree = ""; }; - C478F41E1D29E73C340C46510C963758 /* SnapshotTesting.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapshotTesting.modulemap; sourceTree = ""; }; - CEE3F100C4CDD54473EA2C6C753CE3F8 /* Observable+KeyPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+KeyPath.swift"; path = "LightweightObservable/Classes/Extensions/Observable+KeyPath.swift"; sourceTree = ""; }; + C0357289574364DE36EC0534E47D210B /* SnapshotTesting-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-umbrella.h"; sourceTree = ""; }; + C056D069A391AAB52B9DE80ACAC9A16A /* SnapshotTesting-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapshotTesting-dummy.m"; sourceTree = ""; }; + CC661FA820380145669722D4895E8BA6 /* SnapshotTesting.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.debug.xcconfig; sourceTree = ""; }; + CF8CDB1CDD05B1C5C47641B6250FC75A /* SnapshotTesting-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapshotTesting-Info.plist"; sourceTree = ""; }; + D04F8C07BB2BD290285C29C757B0C156 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/SnapshotTesting/Snapshotting/Codable.swift; sourceTree = ""; }; D07D86CBFE6D514D79D74AB257CD5408 /* GradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientLoadingBarController.swift; path = GradientLoadingBar/Classes/GradientLoadingBarController.swift; sourceTree = ""; }; - D1B84171C66B510644D7EFFDC5B3E475 /* SnapshotTesting-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapshotTesting-dummy.m"; sourceTree = ""; }; - D20C54CBF964A3FE43CE7FE20719F6AD /* SwiftLint.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.debug.xcconfig; sourceTree = ""; }; - D5B2A1C4D6360C6D91F1483048511530 /* LightweightObservable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-umbrella.h"; sourceTree = ""; }; - DC1FD5A53165BF4293473D170AD9995E /* View.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = View.swift; path = Sources/SnapshotTesting/Common/View.swift; sourceTree = ""; }; - E06A1816AB01D090FDC9EEC02261A14E /* SnapshotTesting-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapshotTesting-Info.plist"; sourceTree = ""; }; + DDA242BBF8BBEB7323622998228D907E /* AssertInlineSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertInlineSnapshot.swift; path = Sources/SnapshotTesting/AssertInlineSnapshot.swift; sourceTree = ""; }; E0D90990792D653F523A884442305989 /* Pods-GradientLoadingBar_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Example.modulemap"; sourceTree = ""; }; - E503602B2F6C5B0D3DD0B08982C1E017 /* SnapshotTesting-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-umbrella.h"; sourceTree = ""; }; - E508BF65994F167606FC9180BE8059FC /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; sourceTree = ""; }; - E5557B095A3BB320B3238CBA59402742 /* UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewController.swift; path = Sources/SnapshotTesting/Snapshotting/UIViewController.swift; sourceTree = ""; }; + E112B09F960A755C3152A1612E3AF37B /* XCTAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCTAttachment.swift; path = Sources/SnapshotTesting/Common/XCTAttachment.swift; sourceTree = ""; }; + E49466D561F51DB58D30D2DE137407F4 /* CGPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CGPath.swift; path = Sources/SnapshotTesting/Snapshotting/CGPath.swift; sourceTree = ""; }; E59CE2F9522AE21F97AA29799051F00E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - E5F5BFF05569BBDD6EF0224F0E21090A /* CaseIterable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaseIterable.swift; path = Sources/SnapshotTesting/Snapshotting/CaseIterable.swift; sourceTree = ""; }; - E9C3128EB6965EA592CD63B38170D57B /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/SnapshotTesting/Async.swift; sourceTree = ""; }; - ED80020D57E60A2BDBE6BE1EB9333D0A /* SwiftFormat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.debug.xcconfig; sourceTree = ""; }; + EA6C72CD77EA1E1E09526DAF3BF9031B /* UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewController.swift; path = Sources/SnapshotTesting/Snapshotting/UIViewController.swift; sourceTree = ""; }; F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LightweightObservable.framework; path = LightweightObservable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F2B4FFBC82EA6CAE84B65AE1835AF25A /* SnapshotTesting.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.debug.xcconfig; sourceTree = ""; }; - F2D95A77154276FCFD49025721CF9191 /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Classes/Extensions/Observable+Equatable.swift"; sourceTree = ""; }; F7B1750DE470F045803DE2094D5F7264 /* Pods-GradientLoadingBar_SnapshotTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_SnapshotTests-Info.plist"; sourceTree = ""; }; - F952B84395F604678559569DA34F74D2 /* Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Wait.swift; path = Sources/SnapshotTesting/Extensions/Wait.swift; sourceTree = ""; }; + FA67DBC6A3A9B1FAE0A77E1AF1D70C5D /* NSViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSViewController.swift; path = Sources/SnapshotTesting/Snapshotting/NSViewController.swift; sourceTree = ""; }; + FB9F808A784ECD647D041584F3BAA5CE /* CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CALayer.swift; path = Sources/SnapshotTesting/Snapshotting/CALayer.swift; sourceTree = ""; }; FBAEAE91BB9B77006558E537894C33C5 /* Pods-GradientLoadingBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.debug.xcconfig"; sourceTree = ""; }; FF135E1D23F08BE7F1D7FFC86260EF9B /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_SnapshotTests-acknowledgements.markdown"; sourceTree = ""; }; + FF2204C430A0BC52D7FCF4FFFD07515D /* NSImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSImage.swift; path = Sources/SnapshotTesting/Snapshotting/NSImage.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -281,15 +289,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A3753966D6558AC3D7EB88C394F87259 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C646D4C61F7CDC27DBCBD7960C48BB4 /* Foundation.framework in Frameworks */, - 6466CB6250CBD3F61D35E1132618C759 /* XCTest.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B5CF0D7BDF3DB308D262F74EA1829D66 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -299,6 +298,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C623AFDACDDFAF3DA4E8AA5F997EE889 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BEDA3BD4A21DD52829573D6AB7E3887A /* Foundation.framework in Frameworks */, + 56BC6C7B5E248296BAA214504F2AC607 /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E7729C4FB021E464F1BB3C7B3AAFC13D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -325,6 +333,19 @@ path = "Example/Pods/Target Support Files/GradientLoadingBar"; sourceTree = ""; }; + 0C9122EDC083344F050F55D841C534AC /* LightweightObservable */ = { + isa = PBXGroup; + children = ( + 3C79828C9BB99118F3A15AA46899BB2C /* Disposable.swift */, + 1ACED4FA1FA9DD8A07DB99BEFDAF743B /* Observable.swift */, + 490274B00B3D32108B7DE40C5ACA9AAC /* Observable+Equatable.swift */, + 62FE7DCB58464A147A5F3106011B6B3D /* Observable+KeyPath.swift */, + 9E4258F5F77E219E243535CE9F2C2D37 /* Support Files */, + ); + name = LightweightObservable; + path = LightweightObservable; + sourceTree = ""; + }; 182051F58B71F1C24E92C50B91E729E9 /* Pods-GradientLoadingBar_Tests */ = { isa = PBXGroup; children = ( @@ -341,31 +362,6 @@ path = "Target Support Files/Pods-GradientLoadingBar_Tests"; sourceTree = ""; }; - 2CE89AADFFFE95E8003FB250177B1CD1 /* Support Files */ = { - isa = PBXGroup; - children = ( - ED80020D57E60A2BDBE6BE1EB9333D0A /* SwiftFormat.debug.xcconfig */, - 47AF808C977A1F54C41301EE10EFED69 /* SwiftFormat.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftFormat"; - sourceTree = ""; - }; - 434289011F6712E755970F1074781EA5 /* Support Files */ = { - isa = PBXGroup; - children = ( - C478F41E1D29E73C340C46510C963758 /* SnapshotTesting.modulemap */, - D1B84171C66B510644D7EFFDC5B3E475 /* SnapshotTesting-dummy.m */, - E06A1816AB01D090FDC9EEC02261A14E /* SnapshotTesting-Info.plist */, - 62B150B8D8FC0F8D9D80F21F33BA2B6B /* SnapshotTesting-prefix.pch */, - E503602B2F6C5B0D3DD0B08982C1E017 /* SnapshotTesting-umbrella.h */, - F2B4FFBC82EA6CAE84B65AE1835AF25A /* SnapshotTesting.debug.xcconfig */, - 3B644D77B6DA2AE767C93222955C0195 /* SnapshotTesting.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SnapshotTesting"; - sourceTree = ""; - }; 43B10757738539C40D5ED2A1ECDB8ADE /* Products */ = { isa = PBXGroup; children = ( @@ -379,26 +375,29 @@ name = Products; sourceTree = ""; }; - 4458C6A8A7D0FCBBF849801F48D81D88 /* LightweightObservable */ = { + 49DEFA1CB55B8209421AA4E4171272D0 /* Support Files */ = { isa = PBXGroup; children = ( - 648F93ECED9C2684CDB6A60E6BE8DEDF /* Disposable.swift */, - 79AF6D809DE93FF8CDFAEFD4AF8B2C76 /* Observable.swift */, - F2D95A77154276FCFD49025721CF9191 /* Observable+Equatable.swift */, - CEE3F100C4CDD54473EA2C6C753CE3F8 /* Observable+KeyPath.swift */, - 7A7C6C3CD90BB6F1A79FCFA9E9F6C9F5 /* Support Files */, + 613007635DAC9F649E5D50030E081A62 /* SnapshotTesting.modulemap */, + C056D069A391AAB52B9DE80ACAC9A16A /* SnapshotTesting-dummy.m */, + CF8CDB1CDD05B1C5C47641B6250FC75A /* SnapshotTesting-Info.plist */, + B533ECCC769063846CEC71B060C04EAF /* SnapshotTesting-prefix.pch */, + C0357289574364DE36EC0534E47D210B /* SnapshotTesting-umbrella.h */, + CC661FA820380145669722D4895E8BA6 /* SnapshotTesting.debug.xcconfig */, + 393A2EB9C57F6740D90A63725B4539AB /* SnapshotTesting.release.xcconfig */, ); - name = LightweightObservable; - path = LightweightObservable; + name = "Support Files"; + path = "../Target Support Files/SnapshotTesting"; sourceTree = ""; }; - 526CBF44DE280D803C90DB47909A5AA3 /* SwiftLint */ = { + 56F64175C0B26ABB2C429260A44D7879 /* Support Files */ = { isa = PBXGroup; children = ( - E2CCD1A55C9A485E976F71F7C7CF3366 /* Support Files */, + B29B2057FFAA955F4F8223BDAAAF8B56 /* SwiftFormat.debug.xcconfig */, + 7019702436A62794D49920AA204E3FA8 /* SwiftFormat.release.xcconfig */, ); - name = SwiftLint; - path = SwiftLint; + name = "Support Files"; + path = "../Target Support Files/SwiftFormat"; sourceTree = ""; }; 62272D672011B46F4728E4A5536D444F /* Views */ = { @@ -411,19 +410,13 @@ path = GradientLoadingBar/Classes/Views; sourceTree = ""; }; - 7A7C6C3CD90BB6F1A79FCFA9E9F6C9F5 /* Support Files */ = { + 7C55C62C3F1789A0071466AA2D2BD385 /* SwiftLint */ = { isa = PBXGroup; children = ( - 7D3DDA4D26F734FE0934A65A9DF701DF /* LightweightObservable.modulemap */, - 3CE49E78400E3A6E986194452C2A1611 /* LightweightObservable-dummy.m */, - 5E0ED20F03F3062DB47BF2E306FF9049 /* LightweightObservable-Info.plist */, - 93233819B16746A4C1D1A32DFCEC1752 /* LightweightObservable-prefix.pch */, - D5B2A1C4D6360C6D91F1483048511530 /* LightweightObservable-umbrella.h */, - 51265E01B15BDF30B0C2CBDF6A151BC4 /* LightweightObservable.debug.xcconfig */, - 9EFE8B971DF98A48094E8121DA5F22BE /* LightweightObservable.release.xcconfig */, + 8B1EE0BC4468C4A98CA7BE8538B7ECB0 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/LightweightObservable"; + name = SwiftLint; + path = SwiftLint; sourceTree = ""; }; 810FDB3212C2E1BF5CEB60C53A119039 /* Pods-GradientLoadingBar_SnapshotTests */ = { @@ -453,6 +446,25 @@ path = GradientLoadingBar/Classes/ViewModel; sourceTree = ""; }; + 8B1EE0BC4468C4A98CA7BE8538B7ECB0 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0AC379D97F2A93184FF0C394113C0A62 /* SwiftLint.debug.xcconfig */, + 5257A01502362763E1F6E250104CB1EA /* SwiftLint.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; + sourceTree = ""; + }; + 93A36387CFAF0A0EA680A9CB330B016C /* SwiftFormat */ = { + isa = PBXGroup; + children = ( + 56F64175C0B26ABB2C429260A44D7879 /* Support Files */, + ); + name = SwiftFormat; + path = SwiftFormat; + sourceTree = ""; + }; 9DA2A07C8C5316172DA2CA4B59E1C82A /* Pod */ = { isa = PBXGroup; children = ( @@ -463,6 +475,21 @@ name = Pod; sourceTree = ""; }; + 9E4258F5F77E219E243535CE9F2C2D37 /* Support Files */ = { + isa = PBXGroup; + children = ( + 620E7B2310D43EF3013A90BE1D624B3D /* LightweightObservable.modulemap */, + 263236C693550DBBEF6397B3FDA0D45E /* LightweightObservable-dummy.m */, + 6CB3BE93AA36A67000795C17C2D94032 /* LightweightObservable-Info.plist */, + 8578E96FEC106136644EA07C96AA109E /* LightweightObservable-prefix.pch */, + 1BE38892FFE579C6B8915FCB274BDF6F /* LightweightObservable-umbrella.h */, + 8473B7101AE244EEF7BEDCED20A9BA92 /* LightweightObservable.debug.xcconfig */, + A37D5195BA402F028C3765D44BB0A28D /* LightweightObservable.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LightweightObservable"; + sourceTree = ""; + }; AD9DAFA98C524BF76082D2B10AEC6E6E /* Misc */ = { isa = PBXGroup; children = ( @@ -489,44 +516,6 @@ path = "Target Support Files/Pods-GradientLoadingBar_Example"; sourceTree = ""; }; - B86CB465A3A251813B55AF621083BA18 /* SnapshotTesting */ = { - isa = PBXGroup; - children = ( - 7497F950FEA4E6B772B2F6042432723A /* Any.swift */, - AC5FB89A60C9EF49D259A87FD0D200D3 /* AssertInlineSnapshot.swift */, - 9E46234BCB7A6CF5AE3ECC8C30C3786B /* AssertSnapshot.swift */, - E9C3128EB6965EA592CD63B38170D57B /* Async.swift */, - 9FAFAFBF669302034A4D6BEDD683F06D /* CALayer.swift */, - E5F5BFF05569BBDD6EF0224F0E21090A /* CaseIterable.swift */, - 2B6436CA49E05FD0F26235D5008843F3 /* Codable.swift */, - ABB33081F3543E93409B82653F5C8999 /* Data.swift */, - 66C7044ABF6219E06138EBA038827408 /* Description.swift */, - B0D466687F25CFEC98F95EC624033C2F /* Diff.swift */, - 485FFC9380094A5DB42D7366AEBF4780 /* Diffing.swift */, - B0DE2DCC80295626C430F2B47550ECE5 /* Internal.swift */, - 622DE03EE214A93E48D3A4CC05B88A2C /* NSImage.swift */, - 743840C93216AFDAE6E14647264F5538 /* NSView.swift */, - 88FB982EE7911E38255A291A79DB742F /* NSViewController.swift */, - 87FA564458DD7C259A55CC2F083CBF97 /* PlistEncoder.swift */, - E508BF65994F167606FC9180BE8059FC /* SceneKit.swift */, - A1224C54074A146D75B2762DEE7B60CE /* SnapshotTestCase.swift */, - 6A0AC5F9D0359F62D9B6CFA7E28C270C /* Snapshotting.swift */, - A70E7C9947EB80BF9BB160DBD905E4D1 /* SpriteKit.swift */, - 1FE4FE8F00C724C9593C6DEFB4CE2286 /* String.swift */, - 71B174D68683E03CEB909A118CABC01E /* String+SpecialCharacters.swift */, - 4748F84A87672B2B8A2332EBFAB30E20 /* UIImage.swift */, - B23DE3822DAC1D50D1BB94E49D51CAC1 /* UIView.swift */, - E5557B095A3BB320B3238CBA59402742 /* UIViewController.swift */, - 655D196DB461A65E1D8D6C38F3ACF62D /* URLRequest.swift */, - DC1FD5A53165BF4293473D170AD9995E /* View.swift */, - F952B84395F604678559569DA34F74D2 /* Wait.swift */, - A6C45FD2B6DBF67E9CA08571D980F9C7 /* XCTAttachment.swift */, - 434289011F6712E755970F1074781EA5 /* Support Files */, - ); - name = SnapshotTesting; - path = SnapshotTesting; - sourceTree = ""; - }; BA25E9C542CB3AA3EFD012ED3933A9C9 /* iOS */ = { isa = PBXGroup; children = ( @@ -536,6 +525,17 @@ name = iOS; sourceTree = ""; }; + C8B2230A747DDE259145DDF4A41E3CF9 /* Pods */ = { + isa = PBXGroup; + children = ( + 0C9122EDC083344F050F55D841C534AC /* LightweightObservable */, + E579E6770CDAEFA7E6CF09E88C1A7AB8 /* SnapshotTesting */, + 93A36387CFAF0A0EA680A9CB330B016C /* SwiftFormat */, + 7C55C62C3F1789A0071466AA2D2BD385 /* SwiftLint */, + ); + name = Pods; + sourceTree = ""; + }; CE6272E67A33588A9F25C079BF5BB051 /* Development Pods */ = { isa = PBXGroup; children = ( @@ -550,29 +550,52 @@ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, CE6272E67A33588A9F25C079BF5BB051 /* Development Pods */, ED635EACC8572F31376B6F8762793E86 /* Frameworks */, - FE5B5656A9C615AEA4FA2FD452F27E0B /* Pods */, + C8B2230A747DDE259145DDF4A41E3CF9 /* Pods */, 43B10757738539C40D5ED2A1ECDB8ADE /* Products */, F35D8C7C6DA5C631C17C6CAC2AECDFEA /* Targets Support Files */, ); sourceTree = ""; }; - E2CCD1A55C9A485E976F71F7C7CF3366 /* Support Files */ = { + E579E6770CDAEFA7E6CF09E88C1A7AB8 /* SnapshotTesting */ = { isa = PBXGroup; children = ( - D20C54CBF964A3FE43CE7FE20719F6AD /* SwiftLint.debug.xcconfig */, - A2BEFE77478CF65195FEA6A6C36027C2 /* SwiftLint.release.xcconfig */, + 9059C2290087AA23773A107EEAF2780C /* Any.swift */, + DDA242BBF8BBEB7323622998228D907E /* AssertInlineSnapshot.swift */, + BD44150088F0B1519DDF518A23D5F74A /* AssertSnapshot.swift */, + 8AEC5FCC695B6A6E608B8371AA56C0CA /* Async.swift */, + FB9F808A784ECD647D041584F3BAA5CE /* CALayer.swift */, + 2CF7FC13E714D014C72F1F9E6DE7D638 /* CaseIterable.swift */, + E49466D561F51DB58D30D2DE137407F4 /* CGPath.swift */, + D04F8C07BB2BD290285C29C757B0C156 /* Codable.swift */, + 0426AE1E75E69C5BDA20A5964A116F57 /* Data.swift */, + B4D91BC6888831D2E13620306E2CD9E9 /* Description.swift */, + BC7DE873CD81C2A6FE42262C00452A04 /* Diff.swift */, + B1079CC494384561174A3C21ABA81E55 /* Diffing.swift */, + 4834CAC48D838D6B238E27BF7BFB747F /* Internal.swift */, + 87C182D91D03AEAFB62DEEDE3CEB9A13 /* NSBezierPath.swift */, + FF2204C430A0BC52D7FCF4FFFD07515D /* NSImage.swift */, + 75B25DC9DFF59BF10729E579A6798933 /* NSView.swift */, + FA67DBC6A3A9B1FAE0A77E1AF1D70C5D /* NSViewController.swift */, + 1B6F42E17D889A7841E21B372D54662C /* PlistEncoder.swift */, + 9917FE3936F34E3EF7BC9DA0C3761B65 /* SceneKit.swift */, + 19955C276F98759888D7BDA3A77853F6 /* SnapshotTestCase.swift */, + 839E953D87FD49848D29CC63C8C5F825 /* Snapshotting.swift */, + 5C2F50C5C54E7399F17909BE225B4138 /* SpriteKit.swift */, + 5869027FA34D756BF5705CE123E78403 /* String.swift */, + 110FBB49DC08278A7EE52562088F5563 /* String+SpecialCharacters.swift */, + 6BFF42E97B209FD50665E080953499DA /* SwiftUIView.swift */, + 3C062ECECBEBFE0A98DCEB165BD9E3B7 /* UIBezierPath.swift */, + 9C947E6F38D8D0A3257589741B61C1E9 /* UIImage.swift */, + 16BF13A00E8108482D617C075B3D818E /* UIView.swift */, + EA6C72CD77EA1E1E09526DAF3BF9031B /* UIViewController.swift */, + 91D90321BBF367FE8F8B64CF43974858 /* URLRequest.swift */, + 54DAB11E00E3D63CC2A323A3CE988E73 /* View.swift */, + 3FF123D0A3E653F02DCEB06FFA07E753 /* Wait.swift */, + E112B09F960A755C3152A1612E3AF37B /* XCTAttachment.swift */, + 49DEFA1CB55B8209421AA4E4171272D0 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftLint"; - sourceTree = ""; - }; - E753B32551AFA44D4355DCEE19413F17 /* SwiftFormat */ = { - isa = PBXGroup; - children = ( - 2CE89AADFFFE95E8003FB250177B1CD1 /* Support Files */, - ); - name = SwiftFormat; - path = SwiftFormat; + name = SnapshotTesting; + path = SnapshotTesting; sourceTree = ""; }; ED635EACC8572F31376B6F8762793E86 /* Frameworks */ = { @@ -609,20 +632,17 @@ path = ../..; sourceTree = ""; }; - FE5B5656A9C615AEA4FA2FD452F27E0B /* Pods */ = { - isa = PBXGroup; - children = ( - 4458C6A8A7D0FCBBF849801F48D81D88 /* LightweightObservable */, - B86CB465A3A251813B55AF621083BA18 /* SnapshotTesting */, - E753B32551AFA44D4355DCEE19413F17 /* SwiftFormat */, - 526CBF44DE280D803C90DB47909A5AA3 /* SwiftLint */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 08C742623912B7A2D85724F893919627 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6AFC185192FD16011F63776037110EED /* SnapshotTesting-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 2EC41A99D64F1B8CCBE55541BA49C39B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -647,14 +667,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 7C4D551FBC1B918D4E57BE13BD42B087 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 84432746DEB076256002FB7BABDAAAA5 /* SnapshotTesting-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B574F28AEC902F5DF903621F9079B43A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -752,12 +764,12 @@ }; ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */ = { isa = PBXNativeTarget; - buildConfigurationList = 32867542F50A9BE9FCBEA5DBF1117399 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */; + buildConfigurationList = 7F9B732C8F399A22A0B629A8BFFB52D5 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */; buildPhases = ( - 7C4D551FBC1B918D4E57BE13BD42B087 /* Headers */, - 986B2299F460A09ADA1304C267ED03D8 /* Sources */, - A3753966D6558AC3D7EB88C394F87259 /* Frameworks */, - 1905CD6CFCB44CBB91511667E74D0AFB /* Resources */, + 08C742623912B7A2D85724F893919627 /* Headers */, + 9C880811BAF460ED87BEA333DBB5C7D6 /* Sources */, + C623AFDACDDFAF3DA4E8AA5F997EE889 /* Frameworks */, + A8F2D5EB06EDA23EAA9B2EF353782A4A /* Resources */, ); buildRules = ( ); @@ -825,13 +837,6 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 1905CD6CFCB44CBB91511667E74D0AFB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2D7C6EBC51117D967BAA7B346494F9B0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -867,6 +872,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A8F2D5EB06EDA23EAA9B2EF353782A4A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -906,40 +918,44 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 986B2299F460A09ADA1304C267ED03D8 /* Sources */ = { + 9C880811BAF460ED87BEA333DBB5C7D6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 14CC16A84D0558FF9DC6927E1BA82F02 /* Any.swift in Sources */, - 46B2A4686C72C29C24576FC6FF56A7BE /* AssertInlineSnapshot.swift in Sources */, - 18ED84EFAF015095FCCF61A8E494F325 /* AssertSnapshot.swift in Sources */, - AA6612CD34134596239652A299AC0F76 /* Async.swift in Sources */, - 67C39A754A360A5EFC7FE0037CECE5C3 /* CALayer.swift in Sources */, - 23B3D1B39D273F7B43BA45F255EDE5C5 /* CaseIterable.swift in Sources */, - A455E5B77A019CEAEEA0F9D26B1B74E6 /* Codable.swift in Sources */, - BDFAF00F9FE360EAFD864F290030A2D0 /* Data.swift in Sources */, - 11F2134521037184F745C9010217B501 /* Description.swift in Sources */, - 4E5AA162D02372A80FABE033AD6BFFE6 /* Diff.swift in Sources */, - 440314FEC8EC90F865D8D20910989A69 /* Diffing.swift in Sources */, - C2B818BE2E57EF9A8CE51775FCB33C2B /* Internal.swift in Sources */, - BE068F001E2344449F6E193DFB12B1D1 /* NSImage.swift in Sources */, - 1A1F20E176923FF03A0EAEA886703719 /* NSView.swift in Sources */, - 29F37DB8A1899894CA87E8E8381E2C11 /* NSViewController.swift in Sources */, - 8CD5CB3FDF05526DBF034B61F696BA93 /* PlistEncoder.swift in Sources */, - 4F03BBCA0FCF5903B46F72BE0BADDF34 /* SceneKit.swift in Sources */, - B04CA17471143BEDA50779BE9660BD2A /* SnapshotTestCase.swift in Sources */, - D6A43851802E3E81CF23D65CA9A81E4E /* SnapshotTesting-dummy.m in Sources */, - 57244463125C60529B7391F9FA3052AD /* Snapshotting.swift in Sources */, - 509FAAD85506B9E1BCCA50505B8C93DB /* SpriteKit.swift in Sources */, - 33432CD4B8F83F0C678B5C67CAF13414 /* String+SpecialCharacters.swift in Sources */, - D56563764E24224FB95BC77EC18F7D9E /* String.swift in Sources */, - 2371CFDF095282B1D6935C36C81E46FC /* UIImage.swift in Sources */, - 56B2D76BD27EAA69A1BED0113B7F9F51 /* UIView.swift in Sources */, - 8E1FBD13A74F689CFC06054841BFC596 /* UIViewController.swift in Sources */, - 6658F9FE5EEFD579907F946DD9FDD8E3 /* URLRequest.swift in Sources */, - 01757E29DF92738C1D5D0528F1EB4824 /* View.swift in Sources */, - 8003323F07F7A6F822902979CE092B88 /* Wait.swift in Sources */, - FDAD70506FFFD578C1327E64876A08E3 /* XCTAttachment.swift in Sources */, + 59B265CDC0345DA9D541A2D6A1A81361 /* Any.swift in Sources */, + 952DF5160B7A5F339C603FCFBC7BA3ED /* AssertInlineSnapshot.swift in Sources */, + 9E0237BBCDF5E22C8C70CA299BA989B3 /* AssertSnapshot.swift in Sources */, + 45B49E668D4E0DF1D905F71246A30121 /* Async.swift in Sources */, + 07BCE427364C14A3924FA6E5821BDFE9 /* CALayer.swift in Sources */, + 0CA33262BEBA6D7236BAC24028199D0E /* CaseIterable.swift in Sources */, + B4A0E7DE8263B28AC4D433D2AB0BD101 /* CGPath.swift in Sources */, + AA8458701AD53DA38ECC607024FD4286 /* Codable.swift in Sources */, + 7F496FC075C99F8B35BB6A2B2991BE4A /* Data.swift in Sources */, + 74463B44B8B2D754F999098ED76E55ED /* Description.swift in Sources */, + 2DF2678C2AACDF82CB67532E7737AFA6 /* Diff.swift in Sources */, + 56CD2FF07A0AFE121A7512FB49FCEDE7 /* Diffing.swift in Sources */, + C903A253A697DCF3ABA3EE46B5DCD105 /* Internal.swift in Sources */, + C5B200336D2113D3C9081DF38FA71EFD /* NSBezierPath.swift in Sources */, + 7A910B1EE5D070CB301AC51C2E035C91 /* NSImage.swift in Sources */, + 8A01A0DEFA212DCAA14250DF50293363 /* NSView.swift in Sources */, + C2E28779774BF76EBD7492257160E727 /* NSViewController.swift in Sources */, + B2224D30919A1849CCB2F495EC1EC6CE /* PlistEncoder.swift in Sources */, + 40AAD537046D8467746A0306A7D7DF94 /* SceneKit.swift in Sources */, + 10D5D6DB215978A01F67896D0FFF68A2 /* SnapshotTestCase.swift in Sources */, + 21E34ED04696645D47BC124C8457D643 /* SnapshotTesting-dummy.m in Sources */, + 51D28EADB4924A8096EDCEFC3D74CAB8 /* Snapshotting.swift in Sources */, + 02EEAFC471B5BFF3DA9CA724B77ADAD2 /* SpriteKit.swift in Sources */, + B1B3C3B19CBD78FB949FDAB120FAFA81 /* String+SpecialCharacters.swift in Sources */, + A7911111D9E22FFCEB046C48BD26CD03 /* String.swift in Sources */, + D858C353CC2F564E42446D4E6E360668 /* SwiftUIView.swift in Sources */, + 2569FB9BC55B0028DB8A0217666BD384 /* UIBezierPath.swift in Sources */, + F58CC71DED68C325B5EF5EAC30C8070F /* UIImage.swift in Sources */, + 10B99D1C93DD69D92FE05AAC7CB287F8 /* UIView.swift in Sources */, + 2617BFC93AAED6FFAC6C298D2F4D97AE /* UIViewController.swift in Sources */, + 6A5C798F3DC6B29E72E741AC83C7203D /* URLRequest.swift in Sources */, + 62C4188A8DB5CA43231DE8D64E72BD1D /* View.swift in Sources */, + 2D0C0DD04AA4F9C170A4FBF0D3FD9626 /* Wait.swift in Sources */, + D5CF78CD0117EBB47C0F4CF5B69F021A /* XCTAttachment.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1146,7 +1162,7 @@ }; 17CA3FA3AE34431A344A39057819E5E7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D20C54CBF964A3FE43CE7FE20719F6AD /* SwiftLint.debug.xcconfig */; + baseConfigurationReference = 0AC379D97F2A93184FF0C394113C0A62 /* SwiftLint.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1196,7 +1212,7 @@ }; 1FCC4085AE75E6EE6949867655DABCA3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9EFE8B971DF98A48094E8121DA5F22BE /* LightweightObservable.release.xcconfig */; + baseConfigurationReference = A37D5195BA402F028C3765D44BB0A28D /* LightweightObservable.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = ""; @@ -1294,39 +1310,6 @@ }; name = Debug; }; - 5DCF0058EDB786290640C7E69AC788CD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F2B4FFBC82EA6CAE84B65AE1835AF25A /* SnapshotTesting.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; - PRODUCT_MODULE_NAME = SnapshotTesting; - PRODUCT_NAME = SnapshotTesting; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 80E22FC8391D193F17430BF26FFFB242 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A95E7032DE35DF972EF7FEC8A884303B /* Pods-GradientLoadingBar_Example.debug.xcconfig */; @@ -1362,9 +1345,42 @@ }; name = Debug; }; + 8125FC061B36D7D28B8B294171D9725B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CC661FA820380145669722D4895E8BA6 /* SnapshotTesting.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; + PRODUCT_MODULE_NAME = SnapshotTesting; + PRODUCT_NAME = SnapshotTesting; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 9327269EFED6EE74812D299A62B1A903 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 47AF808C977A1F54C41301EE10EFED69 /* SwiftFormat.release.xcconfig */; + baseConfigurationReference = 7019702436A62794D49920AA204E3FA8 /* SwiftFormat.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1377,9 +1393,43 @@ }; name = Release; }; + A1CB03FC2AAE37182BFDFB359F8D1815 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 393A2EB9C57F6740D90A63725B4539AB /* SnapshotTesting.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; + PRODUCT_MODULE_NAME = SnapshotTesting; + PRODUCT_NAME = SnapshotTesting; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; BC39C4F2B46BAA1105315ED909AD59A5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51265E01B15BDF30B0C2CBDF6A151BC4 /* LightweightObservable.debug.xcconfig */; + baseConfigurationReference = 8473B7101AE244EEF7BEDCED20A9BA92 /* LightweightObservable.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = ""; @@ -1409,43 +1459,9 @@ }; name = Debug; }; - C6D05A2DD3815BA9E9944D4A6774FA2B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B644D77B6DA2AE767C93222955C0195 /* SnapshotTesting.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; - PRODUCT_MODULE_NAME = SnapshotTesting; - PRODUCT_NAME = SnapshotTesting; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; CD1EFF489191A6C2906F500586741B2A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A2BEFE77478CF65195FEA6A6C36027C2 /* SwiftLint.release.xcconfig */; + baseConfigurationReference = 5257A01502362763E1F6E250104CB1EA /* SwiftLint.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1593,7 +1609,7 @@ }; FAD77FF0D4D14006175039F7BFA6150B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ED80020D57E60A2BDBE6BE1EB9333D0A /* SwiftFormat.debug.xcconfig */; + baseConfigurationReference = B29B2057FFAA955F4F8223BDAAAF8B56 /* SwiftFormat.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1608,15 +1624,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 32867542F50A9BE9FCBEA5DBF1117399 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5DCF0058EDB786290640C7E69AC788CD /* Debug */, - C6D05A2DD3815BA9E9944D4A6774FA2B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1662,6 +1669,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 7F9B732C8F399A22A0B629A8BFFB52D5 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8125FC061B36D7D28B8B294171D9725B /* Debug */, + A1CB03FC2AAE37182BFDFB359F8D1815 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Example/Pods/SnapshotTesting/README.md b/Example/Pods/SnapshotTesting/README.md index 95a200b..f50911f 100644 --- a/Example/Pods/SnapshotTesting/README.md +++ b/Example/Pods/SnapshotTesting/README.md @@ -1,7 +1,7 @@ # 📸 SnapshotTesting [![Swift 5.1](https://img.shields.io/badge/swift-5.1-ED523F.svg?style=flat)](https://swift.org/download/) -[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fpointfreeco%2Fswift-snapshot-testing%2Fbadge&style=flat)](https://actions-badge.atrox.dev/pointfreeco/swift-snapshot-testing/goto) +[![CI](https://github.com/pointfreeco/swift-snapshot-testing/workflows/CI/badge.svg)](https://actions-badge.atrox.dev/pointfreeco/swift-snapshot-testing/goto) [![@pointfreeco](https://img.shields.io/badge/contact-@pointfreeco-5AA9E7.svg?style=flat)](https://twitter.com/pointfreeco) Delightful Swift snapshot testing. @@ -35,7 +35,7 @@ When an assertion first runs, a snapshot is automatically recorded to disk and t > > Re-run "testMyViewController" to test against the newly-recorded snapshot. -Repeat test runs will load this reference and compare it with the runtime value. If they don't match, the test will fail and describe the difference. +Repeat test runs will load this reference and compare it with the runtime value. If they don't match, the test will fail and describe the difference. Failures can be inspected from Xcode's Report Navigator or by inspecting the file URLs of the failure. You can record a new reference by setting the `record` mode to `true` on the assertion or globally. @@ -130,12 +130,12 @@ If your data can be represented as an image, text, or data, you can write a snap ### Xcode 11 -> ⚠️ Warning: By default, Xcode will try to add the SnapshotTesting package to your project's targets. Please _uncheck_ SnapshotTesting in the final step of adding a Swift package to your target, as documented below. +> ⚠️ Warning: By default, Xcode will try to add the SnapshotTesting package to your project's main application/framework target. Please ensure that SnapshotTesting is added to a _test_ target instead, as documented in the last step, below. 1. From the **File** menu, navigate through **Swift Packages** and select **Add Package Dependency…**. - 2. Enter package respository URL: `https://github.com/pointfreeco/swift-snapshot-testing.git` + 2. Enter package repository URL: `https://github.com/pointfreeco/swift-snapshot-testing.git` 3. Confirm the version and let Xcode resolve the package - 4. On the final dialog, _uncheck_ any box that adds the SnapshotTesting package to any target + 4. On the final dialog, update SnapshotTesting's **Add to Target** column to a test target that will contain snapshot tests (if you have more than one test target, you can later add SnapshotTesting to them by manually linking the library in its build phase) ### Swift Package Manager @@ -143,7 +143,7 @@ If you want to use SnapshotTesting in any other project that uses [SwiftPM](http ```swift dependencies: [ - .package(url: "https://github.com/pointfreeco/swift-snapshot-testing.git", from: "1.7.2"), + .package(name: "SnapshotTesting", url: "https://github.com/pointfreeco/swift-snapshot-testing.git", from: "1.8.0"), ] ``` @@ -161,7 +161,7 @@ targets: [ If you use [Carthage](https://github.com/Carthage/Carthage), you can add the following dependency to your `Cartfile`: ``` ruby -github "pointfreeco/swift-snapshot-testing" ~> 1.7.2 +github "pointfreeco/swift-snapshot-testing" ~> 1.8.0 ``` > ⚠️ Warning: Carthage instructs you to drag frameworks into your Xcode project. Xcode may automatically attempt to link these frameworks to your app target. `SnapshotTesting.framework` is only compatible with test targets, so when you first add it to your project: @@ -179,7 +179,7 @@ If your project uses [CocoaPods](https://cocoapods.org), add the pod to any appl ```ruby target 'MyAppTests' do - pod 'SnapshotTesting', '~> 1.7.2' + pod 'SnapshotTesting', '~> 1.8.0' end ``` @@ -204,6 +204,8 @@ end - [swift-html](https://github.com/pointfreeco/swift-html) is a Swift DSL for type-safe, extensible, and transformable HTML documents and includes an `HtmlSnapshotTesting` module to snapshot test its HTML documents. - [GRDBSnapshotTesting](https://github.com/SebastianOsinski/GRDBSnapshotTesting) adds snapshot strategy for testing SQLite database migrations made with [GRDB](https://github.com/groue/GRDB.swift). + + - [AccessibilitySnapshot+SnapshotTesting](https://github.com/Sherlouk/AccessibilitySnapshot-SnapshotTesting) adds [AccessibilitySnapshot](https://github.com/cashapp/AccessibilitySnapshot) support for SnapshotTesting. Have you written your own SnapshotTesting plug-in? [Add it here](https://github.com/pointfreeco/swift-snapshot-testing/edit/master/README.md) and submit a pull request! @@ -217,7 +219,7 @@ Have you written your own SnapshotTesting plug-in? [Add it here](https://github. SnapshotTesting was designed with [witness-oriented programming](https://www.pointfree.co/episodes/ep39-witness-oriented-library-design). -This concept (and more) are explored thoroughly in a series of episodes on [Point-Free](https://www.pointfree.co), a video series exploring functional programming and Swift hosted by [Brandon Williams](https://github.com/mbrandonw) and [Stephen Celis](https://github.com/stephencelis). +This concept (and more) are explored thoroughly in a series of episodes on [Point-Free](https://www.pointfree.co), a video series exploring functional programming and Swift hosted by [Brandon Williams](https://twitter.com/mbrandonw) and [Stephen Celis](https://twitter.com/stephencelis). Witness-oriented programming and the design of this library was explored in the following [Point-Free](https://www.pointfree.co) episodes: diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertInlineSnapshot.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertInlineSnapshot.swift index 86642df..8c19e6e 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertInlineSnapshot.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertInlineSnapshot.swift @@ -83,7 +83,14 @@ public func _verifyInlineSnapshot( case .completed: break case .timedOut: - return "Exceeded timeout of \(timeout) seconds waiting for snapshot" + return """ + Exceeded timeout of \(timeout) seconds waiting for snapshot. + + This can happen when an asynchronously rendered view (like a web view) has not loaded. \ + Ensure that every subview of the view hierarchy has loaded to avoid timeouts, or, if a \ + timeout is unavoidable, consider setting the "timeout" parameter of "assertSnapshot" to \ + a higher value. + """ case .incorrectOrder, .invertedFulfillment, .interrupted: return "Couldn't snapshot value" @unknown default: diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertSnapshot.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertSnapshot.swift index 39e1337..52b9a09 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertSnapshot.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/AssertSnapshot.swift @@ -48,7 +48,7 @@ public func assertSnapshot( /// /// - Parameters: /// - value: A value to compare against a reference. -/// - snapshotting: An dictionnay of names and strategies for serializing, deserializing, and comparing values. +/// - snapshotting: A dictionary of names and strategies for serializing, deserializing, and comparing values. /// - recording: Whether or not to record a new reference. /// - timeout: The amount of time a snapshot must be generated in. /// - file: The file in which failure occurred. Defaults to the file name of the test case in which this function was called. @@ -207,17 +207,24 @@ public func verifySnapshot( case .completed: break case .timedOut: - return "Exceeded timeout of \(timeout) seconds waiting for snapshot" + return """ + Exceeded timeout of \(timeout) seconds waiting for snapshot. + + This can happen when an asynchronously rendered view (like a web view) has not loaded. \ + Ensure that every subview of the view hierarchy has loaded to avoid timeouts, or, if a \ + timeout is unavoidable, consider setting the "timeout" parameter of "assertSnapshot" to \ + a higher value. + """ case .incorrectOrder, .invertedFulfillment, .interrupted: return "Couldn't snapshot value" @unknown default: return "Couldn't snapshot value" } - guard let diffable = optionalDiffable else { + guard var diffable = optionalDiffable else { return "Couldn't snapshot value" } - + guard !recording, fileManager.fileExists(atPath: snapshotFileUrl.path) else { try snapshotting.diffing.toData(diffable).write(to: snapshotFileUrl) return recording @@ -240,6 +247,13 @@ public func verifySnapshot( let data = try Data(contentsOf: snapshotFileUrl) let reference = snapshotting.diffing.fromData(data) + #if os(iOS) || os(tvOS) + // If the image generation fails for the diffable part use the reference + if let localDiff = diffable as? UIImage, localDiff.size == .zero { + diffable = reference + } + #endif + guard let (failure, attachments) = snapshotting.diffing.diff(reference, diffable) else { return nil } diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Common/View.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Common/View.swift index 908a39f..42be4d1 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Common/View.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Common/View.swift @@ -337,6 +337,11 @@ public struct ViewImageConfig { size: .init(width: 1920, height: 1080), traits: .init() ) + public static let tv4K = ViewImageConfig( + safeArea: .init(top: 120, left: 180, bottom: 120, right: 180), + size: .init(width: 3840, height: 2160), + traits: .init() + ) #endif } @@ -576,7 +581,7 @@ extension View { #endif return perform() } - #if os(iOS) || os(tvOS) + #if (os(iOS) && !targetEnvironment(macCatalyst)) || os(tvOS) if let glkView = self as? GLKView { return Async(value: inWindow { glkView.snapshot }) } @@ -603,6 +608,10 @@ extension View { let work = { if #available(iOS 11.0, macOS 10.13, *) { inWindow { + guard wkWebView.frame.width != 0, wkWebView.frame.height != 0 else { + callback(Image()) + return + } wkWebView.takeSnapshot(with: nil) { image, _ in _ = delegate callback(image!) @@ -628,6 +637,14 @@ extension View { #endif return nil } + #if os(iOS) || os(tvOS) + func asImage() -> Image { + let renderer = UIGraphicsImageRenderer(bounds: bounds) + return renderer.image { rendererContext in + layer.render(in: rendererContext.cgContext) + } + } + #endif } #if os(iOS) || os(macOS) @@ -647,13 +664,25 @@ private final class NavigationDelegate: NSObject, WKNavigationDelegate { #endif #if os(iOS) || os(tvOS) +extension UIApplication { + static var sharedIfAvailable: UIApplication? { + let sharedSelector = NSSelectorFromString("shared") + guard UIApplication.responds(to: sharedSelector) else { + return nil + } + + let shared = UIApplication.perform(sharedSelector) + return shared?.takeUnretainedValue() as! UIApplication? + } +} + func prepareView( config: ViewImageConfig, drawHierarchyInKeyWindow: Bool, traits: UITraitCollection, view: UIView, viewController: UIViewController - ) { + ) -> () -> Void { let size = config.size ?? viewController.view.frame.size view.frame.size = size if view != viewController.view { @@ -663,7 +692,7 @@ func prepareView( let traits = UITraitCollection(traitsFrom: [config.traits, traits]) let window: UIWindow if drawHierarchyInKeyWindow { - guard let keyWindow = UIApplication.shared.keyWindow else { + guard let keyWindow = UIApplication.sharedIfAvailable?.keyWindow else { fatalError("'drawHierarchyInKeyWindow' requires tests to be run in a host application") } window = keyWindow @@ -674,7 +703,7 @@ func prepareView( viewController: viewController ) } - add(traits: traits, viewController: viewController, to: window) + let dispose = add(traits: traits, viewController: viewController, to: window) if size.width == 0 || size.height == 0 { // Try to call sizeToFit() if the view still has invalid size @@ -683,9 +712,7 @@ func prepareView( view.layoutIfNeeded() } - guard view.frame.size.width > 0, view.frame.size.height > 0 else { - fatalError("View not renderable to image at size \(size)") - } + return dispose } func snapshotView( @@ -697,7 +724,7 @@ func snapshotView( ) -> Async { let initialFrame = view.frame - prepareView( + let dispose = prepareView( config: config, drawHierarchyInKeyWindow: drawHierarchyInKeyWindow, traits: traits, @@ -706,7 +733,8 @@ func snapshotView( ) // NB: Avoid safe area influence. if config.safeArea == .zero { view.frame.origin = .init(x: offscreen, y: offscreen) } - return view.snapshot ?? Async { callback in + + return (view.snapshot ?? Async { callback in addImagesForRenderedViews(view).sequence().run { views in callback( renderer(bounds: view.bounds, for: traits).image { ctx in @@ -720,7 +748,7 @@ func snapshotView( views.forEach { $0.removeFromSuperview() } view.frame = initialFrame } - } + }).map { dispose(); return $0 } } private let offscreen: CGFloat = 10_000 @@ -735,30 +763,34 @@ func renderer(bounds: CGRect, for traits: UITraitCollection) -> UIGraphicsImageR return renderer } -private func add(traits: UITraitCollection, viewController: UIViewController, to window: UIWindow) { - let rootViewController = UIViewController() - rootViewController.view.backgroundColor = .clear - rootViewController.view.frame = window.frame - rootViewController.view.translatesAutoresizingMaskIntoConstraints = - viewController.view.translatesAutoresizingMaskIntoConstraints - rootViewController.preferredContentSize = rootViewController.view.frame.size - - rootViewController.addChild(viewController) - viewController.view.frame = rootViewController.view.frame - rootViewController.view.addSubview(viewController.view) - - if viewController.view.translatesAutoresizingMaskIntoConstraints { - viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] - } else { - NSLayoutConstraint.activate([ - viewController.view.topAnchor.constraint(equalTo: rootViewController.view.topAnchor), - viewController.view.bottomAnchor.constraint(equalTo: rootViewController.view.bottomAnchor), - viewController.view.leadingAnchor.constraint(equalTo: rootViewController.view.leadingAnchor), - viewController.view.trailingAnchor.constraint(equalTo: rootViewController.view.trailingAnchor), +private func add(traits: UITraitCollection, viewController: UIViewController, to window: UIWindow) -> () -> Void { + let rootViewController: UIViewController + if viewController != window.rootViewController { + rootViewController = UIViewController() + rootViewController.view.backgroundColor = .clear + rootViewController.view.frame = window.frame + rootViewController.view.translatesAutoresizingMaskIntoConstraints = + viewController.view.translatesAutoresizingMaskIntoConstraints + rootViewController.preferredContentSize = rootViewController.view.frame.size + viewController.view.frame = rootViewController.view.frame + rootViewController.view.addSubview(viewController.view) + if viewController.view.translatesAutoresizingMaskIntoConstraints { + viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] + } else { + NSLayoutConstraint.activate([ + viewController.view.topAnchor.constraint(equalTo: rootViewController.view.topAnchor), + viewController.view.bottomAnchor.constraint(equalTo: rootViewController.view.bottomAnchor), + viewController.view.leadingAnchor.constraint(equalTo: rootViewController.view.leadingAnchor), + viewController.view.trailingAnchor.constraint(equalTo: rootViewController.view.trailingAnchor), ]) + } + rootViewController.addChild(viewController) + } else { + rootViewController = viewController } rootViewController.setOverrideTraitCollection(traits, forChild: viewController) viewController.didMove(toParent: rootViewController) + window.rootViewController = rootViewController rootViewController.beginAppearanceTransition(true, animated: false) @@ -769,6 +801,12 @@ private func add(traits: UITraitCollection, viewController: UIViewController, to viewController.view.setNeedsLayout() viewController.view.layoutIfNeeded() + + return { + rootViewController.beginAppearanceTransition(false, animated: false) + rootViewController.endAppearanceTransition() + window.rootViewController = nil + } } private final class Window: UIWindow { diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting.swift index 3d835a3..c595953 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting.swift @@ -48,7 +48,7 @@ public struct Snapshotting { /// Transforms a strategy on `Value`s into a strategy on `NewValue`s through a function `(NewValue) -> Value`. /// - /// This is the most important operation for transforming existing strategies into new strategies. It allows you to transform a `Snapshotting` into a `Snapshotting` by pulling it back along a function `(NewValue) -> Value`. Notice that the function must go in in the direction `(NewValue) -> Value` even though we are transforming in the other direction `(Snapshotting) -> Snapshotting`. + /// This is the most important operation for transforming existing strategies into new strategies. It allows you to transform a `Snapshotting` into a `Snapshotting` by pulling it back along a function `(NewValue) -> Value`. Notice that the function must go in the direction `(NewValue) -> Value` even though we are transforming in the other direction `(Snapshotting) -> Snapshotting`. /// /// A simple example of this is to `pullback` the snapshot strategy on `UIView`s to work on `UIViewController`s: /// diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/CGPath.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/CGPath.swift new file mode 100644 index 0000000..7435a47 --- /dev/null +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/CGPath.swift @@ -0,0 +1,126 @@ +#if os(macOS) +import Cocoa + +extension Snapshotting where Value == CGPath, Format == NSImage { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + public static var image: Snapshotting { + return .image() + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter precision: The percentage of pixels that must match. + public static func image(precision: Float = 1, drawingMode: CGPathDrawingMode = .eoFill) -> Snapshotting { + return SimplySnapshotting.image(precision: precision).pullback { path in + let bounds = path.boundingBoxOfPath + var transform = CGAffineTransform(translationX: -bounds.origin.x, y: -bounds.origin.y) + let path = path.copy(using: &transform)! + + let image = NSImage(size: bounds.size) + image.lockFocus() + let context = NSGraphicsContext.current!.cgContext + + context.addPath(path) + context.drawPath(using: drawingMode) + image.unlockFocus() + return image + } + } +} +#elseif os(iOS) || os(tvOS) +import UIKit + +extension Snapshotting where Value == CGPath, Format == UIImage { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + public static var image: Snapshotting { + return .image() + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter precision: The percentage of pixels that must match. + public static func image(precision: Float = 1, scale: CGFloat = 1, drawingMode: CGPathDrawingMode = .eoFill) -> Snapshotting { + return SimplySnapshotting.image(precision: precision).pullback { path in + let bounds = path.boundingBoxOfPath + let format: UIGraphicsImageRendererFormat + if #available(iOS 11.0, tvOS 11.0, *) { + format = UIGraphicsImageRendererFormat.preferred() + } else { + format = UIGraphicsImageRendererFormat.default() + } + format.scale = scale + return UIGraphicsImageRenderer(bounds: bounds, format: format).image { ctx in + let cgContext = ctx.cgContext + cgContext.addPath(path) + cgContext.drawPath(using: drawingMode) + } + } + } +} +#endif + +#if os(macOS) || os(iOS) || os(tvOS) +@available(iOS 11.0, OSX 10.13, tvOS 11.0, *) +extension Snapshotting where Value == CGPath, Format == String { + /// A snapshot strategy for comparing bezier paths based on element descriptions. + public static var elementsDescription: Snapshotting { + return .elementsDescription(numberFormatter: defaultNumberFormatter) + } + + /// A snapshot strategy for comparing bezier paths based on element descriptions. + /// + /// - Parameter numberFormatter: The number formatter used for formatting points. + public static func elementsDescription(numberFormatter: NumberFormatter) -> Snapshotting { + let namesByType: [CGPathElementType: String] = [ + .moveToPoint: "MoveTo", + .addLineToPoint: "LineTo", + .addQuadCurveToPoint: "QuadCurveTo", + .addCurveToPoint: "CurveTo", + .closeSubpath: "Close", + ] + + let numberOfPointsByType: [CGPathElementType: Int] = [ + .moveToPoint: 1, + .addLineToPoint: 1, + .addQuadCurveToPoint: 2, + .addCurveToPoint: 3, + .closeSubpath: 0, + ] + + return SimplySnapshotting.lines.pullback { path in + var string: String = "" + + path.applyWithBlock { elementPointer in + let element = elementPointer.pointee + let name = namesByType[element.type] ?? "Unknown" + + if element.type == .moveToPoint && !string.isEmpty { + string += "\n" + } + + string += name + + if let numberOfPoints = numberOfPointsByType[element.type] { + let points = UnsafeBufferPointer(start: element.points, count: numberOfPoints) + string += " " + points.map { point in + let x = numberFormatter.string(from: point.x as NSNumber)! + let y = numberFormatter.string(from: point.y as NSNumber)! + return "(\(x), \(y))" + }.joined(separator: " ") + } + + string += "\n" + } + + return string + } + } +} + +private let defaultNumberFormatter: NumberFormatter = { + let numberFormatter = NumberFormatter() + numberFormatter.minimumFractionDigits = 1 + numberFormatter.maximumFractionDigits = 3 + return numberFormatter +}() +#endif diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift new file mode 100644 index 0000000..d9d5def --- /dev/null +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift @@ -0,0 +1,93 @@ +#if os(macOS) +import Cocoa + +extension Snapshotting where Value == NSBezierPath, Format == NSImage { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + public static var image: Snapshotting { + return .image() + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter precision: The percentage of pixels that must match. + public static func image(precision: Float = 1) -> Snapshotting { + return SimplySnapshotting.image(precision: precision).pullback { path in + // Move path info frame: + let bounds = path.bounds + let transform = AffineTransform(translationByX: -bounds.origin.x, byY: -bounds.origin.y) + path.transform(using: transform) + + let image = NSImage(size: path.bounds.size) + image.lockFocus() + path.fill() + image.unlockFocus() + return image + } + } +} + +extension Snapshotting where Value == NSBezierPath, Format == String { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + @available(iOS 11.0, *) + public static var elementsDescription: Snapshotting { + return .elementsDescription(numberFormatter: defaultNumberFormatter) + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter numberFormatter: The number formatter used for formatting points. + @available(iOS 11.0, *) + public static func elementsDescription(numberFormatter: NumberFormatter) -> Snapshotting { + let namesByType: [NSBezierPath.ElementType: String] = [ + .moveTo: "MoveTo", + .lineTo: "LineTo", + .curveTo: "CurveTo", + .closePath: "Close", + ] + + let numberOfPointsByType: [NSBezierPath.ElementType: Int] = [ + .moveTo: 1, + .lineTo: 1, + .curveTo: 3, + .closePath: 0, + ] + + return SimplySnapshotting.lines.pullback { path in + var string: String = "" + + var elementPoints = [CGPoint](repeating: .zero, count: 3) + for elementIndex in 0.. Snapshotting { + let config: ViewImageConfig + + switch layout { + #if os(iOS) || os(tvOS) + case let .device(config: deviceConfig): + config = deviceConfig + #endif + case .sizeThatFits: + config = .init(safeArea: .zero, size: nil, traits: traits) + case let .fixed(width: width, height: height): + let size = CGSize(width: width, height: height) + config = .init(safeArea: .zero, size: size, traits: traits) + } + + return SimplySnapshotting.image(precision: precision).asyncPullback { view in + var config = config + + let controller: UIViewController + + if config.size != nil { + controller = UIHostingController.init( + rootView: view + ) + } else { + let hostingController = UIHostingController.init(rootView: view) + + let maxSize = CGSize(width: 0.0, height: 0.0) + config.size = hostingController.sizeThatFits(in: maxSize) + + controller = hostingController + } + + return snapshotView( + config: config, + drawHierarchyInKeyWindow: drawHierarchyInKeyWindow, + traits: traits, + view: controller.view, + viewController: controller + ) + } + } +} +#endif +#endif diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift new file mode 100644 index 0000000..8981c2a --- /dev/null +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift @@ -0,0 +1,46 @@ +#if os(iOS) || os(tvOS) +import UIKit + +extension Snapshotting where Value == UIBezierPath, Format == UIImage { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + public static var image: Snapshotting { + return .image() + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter precision: The percentage of pixels that must match. + public static func image(precision: Float = 1, scale: CGFloat = 1) -> Snapshotting { + return SimplySnapshotting.image(precision: precision).pullback { path in + let bounds = path.bounds + let format: UIGraphicsImageRendererFormat + if #available(iOS 11.0, tvOS 11.0, *) { + format = UIGraphicsImageRendererFormat.preferred() + } else { + format = UIGraphicsImageRendererFormat.default() + } + format.scale = scale + return UIGraphicsImageRenderer(bounds: bounds, format: format).image { ctx in + path.fill() + } + } + } +} + +@available(iOS 11.0, tvOS 11.0, *) +extension Snapshotting where Value == UIBezierPath, Format == String { + /// A snapshot strategy for comparing bezier paths based on pixel equality. + public static var elementsDescription: Snapshotting { + Snapshotting.elementsDescription.pullback { path in path.cgPath } + } + + /// A snapshot strategy for comparing bezier paths based on pixel equality. + /// + /// - Parameter numberFormatter: The number formatter used for formatting points. + public static func elementsDescription(numberFormatter: NumberFormatter) -> Snapshotting { + Snapshotting.elementsDescription( + numberFormatter: numberFormatter + ).pullback { path in path.cgPath } + } +} +#endif diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIImage.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIImage.swift index 54820b1..318b107 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIImage.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIImage.swift @@ -12,7 +12,7 @@ extension Diffing where Value == UIImage { /// - Returns: A new diffing strategy. public static func image(precision: Float) -> Diffing { return Diffing( - toData: { $0.pngData()! }, + toData: { $0.pngData() ?? emptyImage().pngData()! }, fromData: { UIImage(data: $0, scale: UIScreen.main.scale)! } ) { old, new in guard !compare(old, new, precision: precision) else { return nil } @@ -32,6 +32,17 @@ extension Diffing where Value == UIImage { ) } } + + + /// Used when the image size has no width or no height to generated the default empty image + private static func emptyImage() -> UIImage { + let label = UILabel(frame: CGRect(x: 0, y: 0, width: 400, height: 80)) + label.backgroundColor = .red + label.text = "Error: No image could be generated for this view as its size was zero. Please set an explicit size in the test." + label.textAlignment = .center + label.numberOfLines = 3 + return label.asImage() + } } extension Snapshotting where Value == UIImage, Format == UIImage { diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIView.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIView.swift index 011a0f2..b662128 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIView.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIView.swift @@ -47,13 +47,14 @@ extension Snapshotting where Value == UIView, Format == String { ) -> Snapshotting { return SimplySnapshotting.lines.pullback { view in - prepareView( + let dispose = prepareView( config: .init(safeArea: .zero, size: size ?? view.frame.size, traits: traits), drawHierarchyInKeyWindow: false, traits: .init(), view: view, viewController: .init() ) + defer { dispose() } return purgePointers( view.perform(Selector(("recursiveDescription"))).retain().takeUnretainedValue() as! String diff --git a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIViewController.swift b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIViewController.swift index e4e7492..d78ad13 100644 --- a/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIViewController.swift +++ b/Example/Pods/SnapshotTesting/Sources/SnapshotTesting/Snapshotting/UIViewController.swift @@ -64,13 +64,14 @@ extension Snapshotting where Value == UIViewController, Format == String { /// A snapshot strategy for comparing view controllers based on their embedded controller hierarchy. public static var hierarchy: Snapshotting { return Snapshotting.lines.pullback { viewController in - prepareView( + let dispose = prepareView( config: .init(), drawHierarchyInKeyWindow: false, traits: .init(), view: viewController.view, viewController: viewController ) + defer { dispose() } return purgePointers( viewController.perform(Selector(("_printHierarchy"))).retain().takeUnretainedValue() as! String ) @@ -95,13 +96,14 @@ extension Snapshotting where Value == UIViewController, Format == String { ) -> Snapshotting { return SimplySnapshotting.lines.pullback { viewController in - prepareView( + let dispose = prepareView( config: .init(safeArea: config.safeArea, size: size ?? config.size, traits: config.traits), drawHierarchyInKeyWindow: false, - traits: .init(), + traits: traits, view: viewController.view, viewController: viewController ) + defer { dispose() } return purgePointers( viewController.view.perform(Selector(("recursiveDescription"))).retain().takeUnretainedValue() as! String diff --git a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat index 12f3645..28e4cd7 100755 Binary files a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat and b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat differ diff --git a/Example/Pods/SwiftFormat/README.md b/Example/Pods/SwiftFormat/README.md index 35e37a3..ecac1e7 100644 --- a/Example/Pods/SwiftFormat/README.md +++ b/Example/Pods/SwiftFormat/README.md @@ -1,3 +1,5 @@ +![](EditorExtension/Application/Assets.xcassets/AppIcon.appiconset/AppIcon256.png) + [![PayPal](https://img.shields.io/badge/paypal-donate-blue.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9ZGWNK5FEZFF6&source=url) [![Travis](https://api.travis-ci.org/nicklockwood/SwiftFormat.svg?branch=master)](https://travis-ci.org/nicklockwood/SwiftFormat) [![Coveralls](https://coveralls.io/repos/github/nicklockwood/SwiftFormat/badge.svg)](https://coveralls.io/github/nicklockwood/SwiftFormat) @@ -156,7 +158,13 @@ If you prefer, you can use unix pipes to include SwiftFormat as part of a comman $ cat /path/to/file.swift | swiftformat --output /path/to/file.swift ``` -Omitting the `--output /path/to/file.swift` will print the formatted file to Standard Output (stdout). You can also use `>` to specify the output path as follows: +Omitting the `--output /path/to/file.swift` will print the formatted file to Standard Output (stdout). You can also pass "stdout" explicitly as the output path: + +```bash +$ cat /path/to/file.swift | swiftformat --output stdout +``` + +Or you can use `>` to specify the output path as follows: ```bash $ cat /path/to/file.swift | swiftformat > /path/to/file.swift @@ -314,19 +322,20 @@ Git pre-commit hook 1. Follow the instructions for installing the SwiftFormat command-line tool. -2. Edit or create a `.git/hooks/pre-commit` file in your project folder. The .git folder is hidden but should already exist if you are using Git with your project, so open it with the terminal, or the Finder's `Go > Go to Folder...` menu. +2. Install [git-format-staged](https://github.com/hallettj/git-format-staged). -3. Add the following line in the pre-commit file (unlike the Xcode build phase approach, this uses your locally installed version of SwiftFormat, not a separate copy in your project repository) +3. Edit or create a `.git/hooks/pre-commit` file in your project folder. The .git folder is hidden but should already exist if you are using Git with your project, so open it with the terminal, or the Finder's `Go > Go to Folder...` menu. + +4. Add the following line in the pre-commit file. The `{}` will be replaced automatically by the path to the Swift file being formatted: ```bash #!/bin/bash - git diff --diff-filter=d --staged --name-only | grep -e '\.swift$' | while read line; do - swiftformat "${line}"; - git add "$line"; - done + git-format-staged --formatter "swiftformat stdin --stdinpath {}" "*.swift" ``` - -4. enable the hook by typing `chmod +x .git/hooks/pre-commit` in the terminal + + (Note that this example uses your locally installed version of SwiftFormat, not a separate copy in your project repository. You can replace `swiftformat` with the path to a copy inside your project if you prefer.) + +5. enable the hook by typing `chmod +x .git/hooks/pre-commit` in the terminal. The pre-commit hook will now run whenever you run `git commit`. Running `git commit --no-verify` will skip the pre-commit hook. @@ -635,12 +644,12 @@ FAQ *Q. What platforms does SwiftFormat support?* -> A. SwiftFormat works on macOS 10.12 (Sierra) and above, and also runs on Ubuntu Linux. +> A. SwiftFormat works on macOS 10.13 (High Sierra) and above, and also runs on Ubuntu Linux. *Q. What versions of Swift are supported?* -> A. The SwiftFormat framework and command-line tool can be compiled using Swift 4.0 and above, and can format programs written in Swift 3.x, 4.x or 5. Swift 2.x is no longer actively supported. If you are still using Swift 2.x, and find that SwiftFormat breaks your code, the best solution is probably to revert to an earlier SwiftFormat release, or enable only a small subset of rules. +> A. The SwiftFormat framework and command-line tool can be compiled using Swift 4.2 and above, and can format programs written in Swift 4.x or 5. Swift 3.x is no longer actively supported. If you are still using Swift 3.x or earlier and find that SwiftFormat breaks your code, the best solution is probably to revert to an earlier SwiftFormat release, or enable only a small subset of rules. Use the `--swiftversion` argument to enable additional rules specific to later Swift versions. *Q. SwiftFormat made changes I didn't want it to. How can I find out which rules to disable?* @@ -648,6 +657,11 @@ FAQ > A. If you run SwiftFormat using the `--verbose` option, it will tell you which rules were applied to each file. You can then selectively disable certain rules using the `--disable` argument (see below). +*Q. People on my team have different SwiftFormat versions installed. How can we ensure consistent formatting? + +> A. You can specify a `--minversion` argument in your project's .swiftformat` file to fail the build if developers attempt to use an older SwiftFormat version. + + *Q. How can I modify the formatting rules?* > A. Many configuration options are exposed in the command-line interface or `.swiftformat` configuration file. You can either set these manually, or use the `--inferoptions` argument to automatically generate the configuration from your existing project. @@ -719,11 +733,12 @@ SwiftFormat is not a commercially-funded product, it's a labour of love given fr Credits ------------ -* [Tony Arnold](https://github.com/tonyarnold) - Xcode source editor extension -* [Vincent Bernier](https://github.com/vinceburn) - Xcode extension settings UI +* [Tony Arnold](https://github.com/tonyarnold) - SwiftFormat for Xcode +* [Vincent Bernier](https://github.com/vinceburn) - SwiftFormat for Xcode settings UI +* [Vikram Kriplaney](https://github.com/markiv) - SwiftFormat for Xcode icon * [Maxime Marinel](https://github.com/bourvill) - Git pre-commit hook script * [Romain Pouclet](https://github.com/palleas) - Homebrew formula -* [Aerobounce](https://github.com/aerobounce) - Homebrew cask for source editor extension +* [Aerobounce](https://github.com/aerobounce) - Homebrew cask for SwiftFormat for Xcode * [Ali Akhtarzada](https://github.com/aliak00) - Several path-related CLI enhancements * [Yonas Kolb](https://github.com/yonaskolb) - Swift Package Manager integration * [Wolfgang Lutz](https://github.com/Lutzifer) - AppleScript integration instructions diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig index cd4726f..37697fe 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig @@ -3,6 +3,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Framewo GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting/SnapshotTesting.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting/SnapshotTesting.framework/Headers" -iframework "$(PLATFORM_DIR)/Developer/Library/Frameworks" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting" OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" -framework "SnapshotTesting" -framework "XCTest" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig index cd4726f..37697fe 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig @@ -3,6 +3,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Framewo GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting/SnapshotTesting.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting/SnapshotTesting.framework/Headers" -iframework "$(PLATFORM_DIR)/Developer/Library/Frameworks" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting" OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" -framework "SnapshotTesting" -framework "XCTest" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist index 8d3c89a..5bd659f 100644 --- a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist +++ b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.7.2 + 1.8.1 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.debug.xcconfig b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.debug.xcconfig index ac29a35..b6737a2 100644 --- a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.debug.xcconfig +++ b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.debug.xcconfig @@ -4,7 +4,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Framewo GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LIBRARY_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/usr/lib" OTHER_LDFLAGS = $(inherited) -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.release.xcconfig b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.release.xcconfig index ac29a35..b6737a2 100644 --- a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.release.xcconfig +++ b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.release.xcconfig @@ -4,7 +4,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Framewo GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LIBRARY_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/usr/lib" OTHER_LDFLAGS = $(inherited) -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift b/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift index 16891d9..631bf7e 100644 --- a/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift +++ b/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift @@ -57,7 +57,7 @@ public extension GradientActivityIndicatorView { self.isHidden = isFinished completion?(isFinished) - }) + }) } /// Fade in the current view by setting the `isHidden` flag to `false` and animating the `alpha` to one.