Quellcode durchsuchen

Ignore the HEIC encoding unit test on GitHub CI environment

Seems they use VM solution and breaks Apple's ImageIO HEIC encoding
DreamPiggy vor 1 Jahr
Ursprung
Commit
11dcb29b4f

+ 7 - 0
Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests Mac.xcscheme

@@ -69,6 +69,13 @@
             ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <EnvironmentVariables>
+         <EnvironmentVariable
+            key = "CI"
+            value = "${CI}"
+            isEnabled = "YES">
+         </EnvironmentVariable>
+      </EnvironmentVariables>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"

+ 25 - 0
Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests TV.xcscheme

@@ -28,6 +28,15 @@
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES"
       codeCoverageEnabled = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "329922292365D9A100EAFD97"
+            BuildableName = "Tests TV.xctest"
+            BlueprintName = "Tests TV"
+            ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -51,6 +60,22 @@
       debugDocumentVersioning = "YES"
       debugServiceExtension = "internal"
       allowLocationSimulation = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "329922292365D9A100EAFD97"
+            BuildableName = "Tests TV.xctest"
+            BlueprintName = "Tests TV"
+            ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <EnvironmentVariables>
+         <EnvironmentVariable
+            key = "CI"
+            value = "${CI}"
+            isEnabled = "YES">
+         </EnvironmentVariable>
+      </EnvironmentVariables>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"

+ 16 - 0
Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests Vision.xcscheme

@@ -47,6 +47,22 @@
       debugDocumentVersioning = "YES"
       debugServiceExtension = "internal"
       allowLocationSimulation = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "32464A882B7B0FF2006BE70E"
+            BuildableName = "Tests Vision.xctest"
+            BlueprintName = "Tests Vision"
+            ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <EnvironmentVariables>
+         <EnvironmentVariable
+            key = "CI"
+            value = "${CI}"
+            isEnabled = "YES">
+         </EnvironmentVariable>
+      </EnvironmentVariables>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"

+ 16 - 0
Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests iOS.xcscheme

@@ -28,6 +28,15 @@
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES"
       codeCoverageEnabled = "YES">
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "DA248D52195472AA00390AB0"
+            BuildableName = "Tests iOS.xctest"
+            BlueprintName = "Tests iOS"
+            ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
       <Testables>
          <TestableReference
             skipped = "NO">
@@ -60,6 +69,13 @@
             ReferencedContainer = "container:SDWebImage Tests.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
+      <EnvironmentVariables>
+         <EnvironmentVariable
+            key = "CI"
+            value = "${CI}"
+            isEnabled = "YES">
+         </EnvironmentVariable>
+      </EnvironmentVariables>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"

+ 8 - 12
Tests/Tests/SDImageCoderTests.m

@@ -206,11 +206,7 @@
 - (void)test13ThatHEICWorks {
     if (@available(iOS 11, tvOS 11, macOS 10.13, *)) {
         NSURL *heicURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImage" withExtension:@"heic"];
-#if SD_UIKIT
-        BOOL supportsEncoding = YES; // iPhone Simulator after Xcode 9.3 support HEIC encoding
-#else
-        BOOL supportsEncoding = NO; // Travis-CI Mac env currently does not support HEIC encoding
-#endif
+        BOOL supportsEncoding = !SDTestCase.isCI; // GitHub Action Mac env currently does not support HEIC encoding
         [self verifyCoder:[SDImageIOCoder sharedCoder]
         withLocalImageURL:heicURL
          supportsEncoding:supportsEncoding
@@ -221,9 +217,10 @@
 - (void)test14ThatHEIFWorks {
     if (@available(iOS 11, tvOS 11, macOS 10.13, *)) {
         NSURL *heifURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImage" withExtension:@"heif"];
+        BOOL supportsEncoding = !SDTestCase.isCI; // GitHub Action Mac env currently does not support HEIC encoding
         [self verifyCoder:[SDImageIOCoder sharedCoder]
         withLocalImageURL:heifURL
-         supportsEncoding:NO
+         supportsEncoding:supportsEncoding
           isAnimatedImage:NO];
     }
 }
@@ -240,13 +237,8 @@
 - (void)test16ThatHEICAnimatedWorks {
     if (@available(iOS 13, tvOS 13, macOS 10.15, *)) {
         NSURL *heicURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImageAnimated" withExtension:@"heic"];
-#if SD_UIKIT
+        BOOL supportsEncoding = !SDTestCase.isCI; // GitHub Action Mac env currently does not support HEIC encoding
         BOOL isAnimatedImage = YES;
-        BOOL supportsEncoding = YES; // iPhone Simulator after Xcode 9.3 support HEIC encoding
-#else
-        BOOL isAnimatedImage = NO; // Travis-CI Mac env does not upgrade to macOS 10.15
-        BOOL supportsEncoding = NO; // Travis-CI Mac env currently does not support HEIC encoding
-#endif
         [self verifyCoder:[SDImageHEICCoder sharedCoder]
         withLocalImageURL:heicURL
          supportsEncoding:supportsEncoding
@@ -305,6 +297,10 @@
 }
 
 - (void)test21ThatEmbedThumbnailHEICWorks {
+    BOOL supportsEncoding = !SDTestCase.isCI; // GitHub Action Mac env currently does not support HEIC encoding
+    if (!supportsEncoding) {
+        return;
+    }
     if (@available(iOS 11, tvOS 11, macOS 10.13, *)) {
         // The input HEIC does not contains any embed thumbnail
         NSURL *heicURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImage" withExtension:@"heic"];

+ 1 - 0
Tests/Tests/SDTestCase.h

@@ -30,6 +30,7 @@ FOUNDATION_EXPORT NSString * _Nonnull const kTestAPNGPURL;
 @interface SDTestCase : XCTestCase
 
 @property (nonatomic, strong, null_resettable) UIWindow *window;
+@property (nonatomic, readonly, class, getter=isCI) BOOL CI; // Check if GitHub CI
 
 - (void)waitForExpectationsWithCommonTimeout;
 - (void)waitForExpectationsWithCommonTimeoutUsingHandler:(nullable XCWaitCompletionHandler)handler; 

+ 13 - 0
Tests/Tests/SDTestCase.m

@@ -27,6 +27,19 @@ NSString *const kTestAPNGPURL = @"https://upload.wikimedia.org/wikipedia/commons
     [self waitForExpectationsWithTimeout:kAsyncTestTimeout handler:handler];
 }
 
++ (BOOL)isCI {
+    // https://docs.github.com/en/actions/learn-github-actions/variables
+    NSDictionary *env = NSProcessInfo.processInfo.environment;
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        NSLog(@"printenv: %@", env.description);
+    });
+    if ([[env valueForKey:@"CI"] isEqualToString:@"true"]) {
+        return YES;
+    }
+    return NO;
+}
+
 #pragma mark - Helper
 - (UIWindow *)window {
     if (!_window) {

+ 1 - 1
Tests/Tests/SDUtilsTests.m

@@ -132,7 +132,7 @@
     SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:size format:format];
 #if SD_MAC
     // GitHub action's Mac does not connect to a display, so the ImageRenderer color space is wrong :(
-    if (NSProcessInfo.processInfo.environment[@"GITHUB_ACTIONS"]) {
+    if (SDTestCase.isCI) {
         return;
     }
 #endif