Selaa lähdekoodia

Fix SecTrust Catalyst Deprecation Warning - Alamofire 4 (#2979)

* Add non-deprecated code path.

* Move to GitHub CI.
Jon Shier 6 vuotta sitten
vanhempi
commit
4f53c3a82b
3 muutettua tiedostoa jossa 76 lisäystä ja 70 poistoa
  1. 66 0
      .github/workflows/ci.yml
  2. 0 63
      .travis.yml
  3. 10 7
      Source/ServerTrustPolicy.swift

+ 66 - 0
.github/workflows/ci.yml

@@ -0,0 +1,66 @@
+name: "Alamofire CI"
+
+on: 
+  push:
+    branches: 
+      - master
+      - hotfix
+  pull_request:
+    branches: 
+      - master
+      - hotfix
+
+jobs:
+  macOS:
+    name: Test macOS 
+    runs-on: macOS-latest
+    env: 
+      DEVELOPER_DIR: /Applications/Xcode_11.1.app/Contents/Developer
+    steps:
+      - uses: actions/checkout@v1    
+      - name: macOS
+        run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire macOS" -destination "platform=macOS" clean test | xcpretty
+  iOS:
+    name: Test iOS 
+    runs-on: macOS-latest
+    env: 
+      DEVELOPER_DIR: /Applications/Xcode_11.1.app/Contents/Developer
+    strategy:
+      matrix:
+        destination: ["OS=13.1,name=iPhone 11 Pro"] #, "OS=12.4,name=iPhone XS", "OS=11.4,name=iPhone X", "OS=10.3.1,name=iPhone SE"]
+    steps:
+      - uses: actions/checkout@v1            
+      - name: iOS - ${{ matrix.destination }}
+        run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire iOS" -destination "${{ matrix.destination }}" clean test | xcpretty
+  tvOS:
+    name: Test tvOS 
+    runs-on: macOS-latest
+    env: 
+      DEVELOPER_DIR: /Applications/Xcode_11.1.app/Contents/Developer
+    strategy:
+      matrix:
+        destination: ["OS=13.0,name=Apple TV 4K"] #, "OS=11.4,name=Apple TV 4K", "OS=10.2,name=Apple TV 1080p"]
+    steps:
+      - uses: actions/checkout@v1            
+      - name: tvOS - ${{ matrix.destination }}
+        run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire tvOS" -destination "${{ matrix.destination }}" clean test | xcpretty
+  watchOS:
+    name: Build watchOS
+    runs-on: macOS-latest
+    env: 
+      DEVELOPER_DIR: /Applications/Xcode_11.1.app/Contents/Developer
+    strategy:
+      matrix:
+        destination: ["OS=6.0,name=Apple Watch Series 5 - 44mm"] #, "OS=4.2,name=Apple Watch Series 3 - 42mm", "OS=3.2,name=Apple Watch Series 2 - 42mm"]
+    steps:
+      - uses: actions/checkout@v1
+      - name: watchOS - ${{ matrix.destination }}
+        run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Alamofire.xcodeproj" -scheme "Alamofire watchOS" -destination "${{ matrix.destination }}" clean build | xcpretty
+  spm:
+    name: Test SPM Integration
+    runs-on: macOS-latest    
+    needs: [macOS]
+    steps:
+      - uses: actions/checkout@v1
+      - name: SPM Build
+        run: swift build

+ 0 - 63
.travis.yml

@@ -1,63 +0,0 @@
-os: osx
-osx_image: xcode10.1
-branches:
-  only:
-    - master
-    - hotfix
-cache: bundler
-env:
-  global:
-  - LC_CTYPE=en_US.UTF-8
-  - LANG=en_US.UTF-8
-  - WORKSPACE=Alamofire.xcworkspace
-  - IOS_FRAMEWORK_SCHEME="Alamofire iOS"
-  - MACOS_FRAMEWORK_SCHEME="Alamofire macOS"
-  - TVOS_FRAMEWORK_SCHEME="Alamofire tvOS"
-  - WATCHOS_FRAMEWORK_SCHEME="Alamofire watchOS"
-  - EXAMPLE_SCHEME="iOS Example"
-  matrix:
-    - DESTINATION="OS=5.1,name=Apple Watch Series 4 - 44mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=4.2,name=Apple Watch Series 3 - 42mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=3.2,name=Apple Watch Series 2 - 42mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=2.2,name=Apple Watch - 42mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO"
-
-    - DESTINATION="OS=12.1,name=iPhone XS"       SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO"
-    - DESTINATION="OS=11.4,name=iPhone X"        SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO"
-    - DESTINATION="OS=10.3.1,name=iPhone 7 Plus" SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO"
-    - DESTINATION="OS=9.3,name=iPhone 6"         SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO"
-    - DESTINATION="OS=8.4,name=iPhone 4S"        SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO"
-
-    - DESTINATION="OS=12.1,name=Apple TV 4K"    SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=11.4,name=Apple TV 4K"    SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=10.2,name=Apple TV 1080p" SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO"
-    - DESTINATION="OS=9.2,name=Apple TV 1080p"  SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO"
-
-    - DESTINATION="arch=x86_64" SCHEME="$MACOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="YES"
-script:
-  - set -o pipefail
-  - xcodebuild -version
-  - xcodebuild -showsdks
-
-  # Build Framework in Debug and Run Tests if specified
-  - if [ $RUN_TESTS == "YES" ]; then
-      xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
-    else
-      xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty;
-    fi
-
-  # Build Framework in Release and Run Tests if specified
-  - if [ $RUN_TESTS == "YES" ]; then
-      xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty;
-    else
-      xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO build | xcpretty;
-    fi
-
-  # Build Example in Debug if specified
-  - if [ $BUILD_EXAMPLE == "YES" ]; then
-      xcodebuild -workspace "$WORKSPACE" -scheme "$EXAMPLE_SCHEME" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty;
-    fi
-
-  # Run `pod lib lint` if specified
-  - if [ $POD_LINT == "YES" ]; then
-      pod lib lint;
-    fi

+ 10 - 7
Source/ServerTrustPolicy.swift

@@ -242,15 +242,18 @@ public enum ServerTrustPolicy {
     private func trustIsValid(_ trust: SecTrust) -> Bool {
         var isValid = false
 
-        var result = SecTrustResultType.invalid
-        let status = SecTrustEvaluate(trust, &result)
+        if #available(iOS 12, macOS 10.14, tvOS 12, watchOS 5, *) {
+            isValid = SecTrustEvaluateWithError(trust, nil)
+        } else {
+            var result = SecTrustResultType.invalid
+            let status = SecTrustEvaluate(trust, &result)
 
-        if status == errSecSuccess {
-            let unspecified = SecTrustResultType.unspecified
-            let proceed = SecTrustResultType.proceed
+            if status == errSecSuccess {
+                let unspecified = SecTrustResultType.unspecified
+                let proceed = SecTrustResultType.proceed
 
-
-            isValid = result == unspecified || result == proceed
+                isValid = result == unspecified || result == proceed
+            }
         }
 
         return isValid