diff --git a/.coveralls.yml b/.coveralls.yml deleted file mode 100644 index 91600595..00000000 --- a/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -service_name: travis-ci diff --git a/.github/workflows/pull-request-ci.yml b/.github/workflows/pull-request-ci.yml new file mode 100644 index 00000000..66c9a944 --- /dev/null +++ b/.github/workflows/pull-request-ci.yml @@ -0,0 +1,315 @@ +name: Pull Request CI + +on: + pull_request: + workflow_dispatch: + +permissions: + contents: read + issues: write + pull-requests: write + +concurrency: + group: pull-request-ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + unit-tests: + name: Unit Tests (${{ matrix.scheme }}) + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + scheme: + - libPhoneNumber + - libPhoneNumberGeocoding + - libPhoneNumberShortNumber + + steps: + - name: Check out repository + uses: actions/checkout@v6 + + - name: Resolve iPhone simulator destination + id: destination + run: | + set -eo pipefail + + destination_id="$( + xcrun simctl list devices --json | + python3 -c ' + import json + import re + import sys + + matches = [] + for runtime, entries in json.load(sys.stdin).get("devices", {}).items(): + runtime_match = re.match(r"com\.apple\.CoreSimulator\.SimRuntime\.iOS-(\d+)-(\d+)", runtime) + if not runtime_match: + continue + + print(f"Runtime: {runtime} ({len(entries)} devices)", file=sys.stderr) + + os_version = tuple(int(part) for part in runtime_match.groups()) + for entry in entries: + name = (entry["name"] or "").strip() + model_match = re.match(r"iPhone\s+(\d+)\b", name) + udid = entry["udid"] + if entry["isAvailable"] and udid and model_match: + matches.append((os_version, int(model_match.group(1)), name, udid)) + the_os = f"{os_version[0]}.{os_version[1]}" + print(f" {name} (iOS {the_os}) [{udid}]", file=sys.stderr) + + if not matches: + raise SystemExit("No iPhone simulator destinations found") + + selected = max(matches); name = selected[2]; the_os = f"{selected[0][0]}.{selected[0][1]}" + print(f"Selected Simulator: {name} (iOS {the_os}) [{selected[3]}]", file=sys.stderr) + print(selected[3]) + ' + )" + + echo "destination=id=$destination_id,arch=arm64" >> "$GITHUB_OUTPUT" + + - name: Run unit tests + env: + SCHEME: ${{ matrix.scheme }} + run: | + set -eo pipefail + mkdir -p TestResults + + xcodebuild \ + -project libPhoneNumber.xcodeproj \ + -scheme "$SCHEME" \ + -destination "${{ steps.destination.outputs.destination }}" \ + -resultBundlePath "TestResults/${SCHEME}.xcresult" \ + -enableCodeCoverage YES \ + CODE_SIGNING_ALLOWED=NO \ + test + + - name: Export code coverage data + if: always() + env: + SCHEME: ${{ matrix.scheme }} + run: | + set -eo pipefail + + result_bundle="TestResults/${SCHEME}.xcresult" + coverage_json="TestResults/${SCHEME}.xccov.json" + + echo "### Code Coverage" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + + if [ ! -d "$result_bundle" ]; then + echo "Coverage report unavailable because \`$result_bundle\` was not created." >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + + if ! xcrun xccov view --archive --json "$result_bundle" > "$coverage_json"; then + echo "Coverage report unavailable because \`xccov\` could not parse \`$result_bundle\`." >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + + echo "Exported line-level coverage data for \`$SCHEME\`." >> "$GITHUB_STEP_SUMMARY" + + - name: Upload code coverage data + if: always() + uses: actions/upload-artifact@v6 + with: + name: unit-test-coverage-${{ matrix.scheme }} + path: TestResults/${{ matrix.scheme }}.xccov.json + if-no-files-found: ignore + + - name: Upload unit test results + if: always() + uses: actions/upload-artifact@v6 + with: + name: project-unit-tests-${{ matrix.scheme }}.xcresult + path: TestResults/${{ matrix.scheme }}.xcresult + + coverage-summary: + name: Combined Code Coverage + runs-on: ubuntu-latest + needs: unit-tests + if: always() + + steps: + - name: Download code coverage data + continue-on-error: true + uses: actions/download-artifact@v7 + with: + pattern: unit-test-coverage-* + path: CoverageData + merge-multiple: true + + - name: Publish combined coverage summary + run: | + set -eo pipefail + shopt -s nullglob + + mkdir -p CoverageData + coverage_files=(CoverageData/*.xccov.json) + summary_file="CoverageData/combined-coverage-summary.md" + + if [ ${#coverage_files[@]} -eq 0 ]; then + { + echo "### Combined Code Coverage" + echo + echo "Combined coverage unavailable because no coverage data artifacts were downloaded." + } > "$summary_file" + cat "$summary_file" >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + + python3 -c ' + import json + import os + import sys + + combined = {} + per_scheme = [] + + for path in sys.argv[1:-1]: + print(f"Processing coverage file: {path}", file=sys.stderr) + with open(path) as handle: + report = json.load(handle) + + covered_lines = 0 + executable_lines = 0 + for file_path, entries in report.items(): + combined_lines = combined.setdefault(file_path, {}) + for entry in entries: + line_number = entry["line"] + if line_number is None or not entry["isExecutable"]: + continue + + is_covered = entry.get("executionCount", 0) > 0 + executable_lines += 1 + if is_covered: + covered_lines += 1 + + combined_lines[line_number] = combined_lines.get(line_number, False) or is_covered + + scheme_name = os.path.basename(path).replace(".xccov.json", "") + coverage_percent = (covered_lines / executable_lines * 100) if executable_lines else 0.0 + per_scheme.append((scheme_name, coverage_percent, covered_lines, executable_lines)) + + combined_executable_lines = sum(len(lines) for lines in combined.values()) + combined_covered_lines = sum( + 1 for lines in combined.values() for is_covered in lines.values() if is_covered + ) + combined_coverage_percent = ( + combined_covered_lines / combined_executable_lines * 100 + if combined_executable_lines + else 0.0 + ) + + with open(sys.argv[-1], "w") as handle: + print("### Combined Code Coverage", file=handle) + print(file=handle) + print("| Scope | Coverage | Covered Lines | Executable Lines |", file=handle) + print("| --- | ---: | ---: | ---: |", file=handle) + for scheme_name, coverage_percent, covered_lines, executable_lines in sorted(per_scheme): + print( + f"| {scheme_name} | {coverage_percent:.2f}% | {covered_lines} | {executable_lines} |", + file=handle, + ) + print( + f"| Combined | {combined_coverage_percent:.2f}% | " + f"{combined_covered_lines} | {combined_executable_lines} |", + file=handle, + ) + ' "${coverage_files[@]}" "$summary_file" + + cat "$summary_file" >> "$GITHUB_STEP_SUMMARY" + + - name: Publish combined coverage comment to pull request + if: github.event_name == 'pull_request' + env: + GITHUB_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + REPOSITORY: ${{ github.repository }} + run: | + set -eo pipefail + + summary_file="CoverageData/combined-coverage-summary.md" + if [ ! -f "$summary_file" ]; then + echo "No combined coverage summary file was generated; skipping PR comment." + exit 0 + fi + + comment_id="$( + curl -fsSL \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + "https://api.github.com/repos/$REPOSITORY/issues/$PR_NUMBER/comments" | + python3 -c ' + import json + import sys + + marker = "" + comments = json.load(sys.stdin) + + for comment in comments: + if marker in comment.get("body", ""): + print(comment["id"]) + break + ' + )" + + payload="$( + python3 -c ' + import json + import sys + + with open(sys.argv[1]) as handle: + body = "\n\n" + handle.read() + + print(json.dumps({"body": body})) + ' "$summary_file" + )" + + if [ -n "$comment_id" ]; then + echo "Updating existing coverage PR comment: $comment_id" + curl -fsSL \ + -X PATCH \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + -H "Content-Type: application/json" \ + --data "$payload" \ + "https://api.github.com/repos/$REPOSITORY/issues/comments/$comment_id" \ + > /dev/null + else + echo "Creating new coverage PR comment" + curl -fsSL \ + -X POST \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + -H "Content-Type: application/json" \ + --data "$payload" \ + "https://api.github.com/repos/$REPOSITORY/issues/$PR_NUMBER/comments" \ + > /dev/null + fi + + podspec-lint: + name: Podspec Lint (${{ matrix.podspec }}) + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + podspec: + - libPhoneNumber-iOS.podspec + - libPhoneNumberGeocoding.podspec + - libPhoneNumberShortNumber.podspec + + steps: + - name: Check out repository + uses: actions/checkout@v6 + + - name: Ensure CocoaPods is installed + run: | + if ! command -v pod >/dev/null; then + gem install cocoapods + fi + + - name: Lint podspec + run: pod lib lint "${{ matrix.podspec }}" --verbose diff --git a/.slather.yml b/.slather.yml deleted file mode 100644 index b1c40362..00000000 --- a/.slather.yml +++ /dev/null @@ -1,12 +0,0 @@ -ci_service: travis_ci -coverage_service: coveralls -xcodeproj: libPhoneNumber.xcodeproj -ignore: - - libPhoneNumber/AppDelegate.m - - libPhoneNumber/main.m - - libPhoneNumber/NBPhoneMetaDataGenerator.m - - libPhoneNumber/NBPhoneMetaData.m - - libPhoneNumber/NBPhoneNumberDesc.m - - libPhoneNumber/NBMetadataHelper.m - - libPhoneNumber/NBNumberFormat.m - - libPhoneNumber/NBPhoneNumber.m diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 94d69ebb..00000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: objective-c - -before_install: -- gem install slather -N - -script: -- xcodebuild -project libPhoneNumber.xcodeproj -scheme libPhoneNumberiOS clean -sdk iphonesimulator -- xcodebuild -project libPhoneNumber.xcodeproj -scheme libPhoneNumberiOS -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES build-for-testing -- xctool -project libPhoneNumber.xcodeproj -scheme libPhoneNumberiOS run-tests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES - -- xcodebuild -project libPhoneNumber.xcodeproj -scheme libPhoneNumberGeocoding -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES build-for-testing -- xctool -project libPhoneNumber.xcodeproj -scheme libPhoneNumberGeocoding run-tests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES - -- xcodebuild -project libPhoneNumber.xcodeproj -scheme libPhoneNumberShortNumber -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES build-for-testing -- xctool -project libPhoneNumber.xcodeproj -scheme libPhoneNumberShortNumber run-tests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES - -after_success: slather diff --git a/README.md b/README.md index 3d910320..5e3d5fbc 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ [![CocoaPods](https://img.shields.io/cocoapods/p/libPhoneNumber-iOS.svg?style=flat)](http://cocoapods.org/?q=libPhoneNumber-iOS) [![CocoaPods](https://img.shields.io/cocoapods/v/libPhoneNumber-iOS.svg?style=flat)](http://cocoapods.org/?q=libPhoneNumber-iOS) -[![Travis](https://travis-ci.org/iziz/libPhoneNumber-iOS.svg?branch=master)](https://travis-ci.org/iziz/libPhoneNumber-iOS) -[![Coveralls](https://coveralls.io/repos/iziz/libPhoneNumber-iOS/badge.svg?branch=master&service=github)](https://coveralls.io/github/iziz/libPhoneNumber-iOS?branch=master) +[![Pull Request CI](https://github.com/iziz/libPhoneNumber-iOS/actions/workflows/pull-request-ci.yml/badge.svg?branch=master)](https://github.com/iziz/libPhoneNumber-iOS/actions/workflows/pull-request-ci.yml) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) # **libPhoneNumber for iOS** diff --git a/libPhoneNumber.xcodeproj/project.pbxproj b/libPhoneNumber.xcodeproj/project.pbxproj index a8dbd477..5311f0bd 100755 --- a/libPhoneNumber.xcodeproj/project.pbxproj +++ b/libPhoneNumber.xcodeproj/project.pbxproj @@ -36,8 +36,8 @@ 8B0FD2FF1E4A88AC0049DF81 /* NSArray+NBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B0FD2FA1E4A88AC0049DF81 /* NSArray+NBAdditions.m */; }; 9407259424BE768A0011AE05 /* libPhoneNumberShortNumber.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9407258B24BE768A0011AE05 /* libPhoneNumberShortNumber.framework */; }; 9407259B24BE768A0011AE05 /* libPhoneNumberShortNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 9407258D24BE768A0011AE05 /* libPhoneNumberShortNumber.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 940725A224BE769D0011AE05 /* libPhoneNumber.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; platformFilter = ios; }; - 940725A324BE769D0011AE05 /* libPhoneNumber.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; platformFilter = ios; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 940725A224BE769D0011AE05 /* libPhoneNumber.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; }; + 940725A324BE769D0011AE05 /* libPhoneNumber.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 940725A924BE77420011AE05 /* NBShortNumberUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 940725A724BE77420011AE05 /* NBShortNumberUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; 940725AA24BE77420011AE05 /* NBShortNumberUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 940725A824BE77420011AE05 /* NBShortNumberUtil.m */; }; 940725AC24BF63050011AE05 /* NBShortNumberInfoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 940725AB24BF63050011AE05 /* NBShortNumberInfoTest.m */; }; @@ -80,6 +80,7 @@ BB9B604A2EBE9A7800C48233 /* libPhoneNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9B60492EBE9A7800C48233 /* libPhoneNumber.h */; settings = {ATTRIBUTES = (Public, ); }; }; BB9B604B2EBE9B0C00C48233 /* libPhoneNumber.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; platformFilter = ios; }; BB9B604C2EBE9B2200C48233 /* libPhoneNumber.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ACBB851B7122AC0064B3BD /* libPhoneNumber.framework */; platformFilter = ios; }; + BB9FA4CB2F85BF9800CCF4FC /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BB9FA4CA2F85BF8600CCF4FC /* libsqlite3.tbd */; }; BBF66CA92EBBF9B9005E3382 /* NBGeneratedPhoneNumberMetaData.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF66CA82EBBF9B9005E3382 /* NBGeneratedPhoneNumberMetaData.m */; }; BBF66CAB2EBBF9E2005E3382 /* NBGeneratedShortNumberMetaData.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF66CAA2EBBF9E2005E3382 /* NBGeneratedShortNumberMetaData.m */; }; BBF66CB02EBC0783005E3382 /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF66CAD2EBC0783005E3382 /* NSBundle+Extensions.m */; }; @@ -196,6 +197,9 @@ BB3F7C672EBD34DB0091CF5B /* _HeaderOnlyShim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = _HeaderOnlyShim.c; sourceTree = ""; }; BB3F7C682EBD34DB0091CF5B /* NBGeneratedShortNumberMetaData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NBGeneratedShortNumberMetaData.h; sourceTree = ""; }; BB3F7C692EBD34DB0091CF5B /* NBShortNumberMetadataHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NBShortNumberMetadataHelper.h; sourceTree = ""; }; + BB4248A42F6C8AB300A7438E /* libPhoneNumberTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = libPhoneNumberTests.xctestplan; sourceTree = ""; }; + BB4248A52F6C8AEE00A7438E /* libPhoneNumberShortNumberTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = libPhoneNumberShortNumberTests.xctestplan; sourceTree = ""; }; + BB4248A72F6C8B5600A7438E /* libPhoneNumberGeocodingTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = libPhoneNumberGeocodingTests.xctestplan; sourceTree = ""; }; BB6A710C2EBD02F500292CA8 /* libPhoneNumberMetaDataForTesting.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = libPhoneNumberMetaDataForTesting.zip; sourceTree = ""; }; BB6A710D2EBD02F500292CA8 /* NBTestingMetaData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NBTestingMetaData.h; sourceTree = ""; }; BB6A71132EBD306400292CA8 /* _HeaderOnlyShim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = _HeaderOnlyShim.c; sourceTree = ""; }; @@ -213,6 +217,7 @@ BB9B60432EBE9A0500C48233 /* _HeaderOnlyShim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = _HeaderOnlyShim.c; sourceTree = ""; }; BB9B60442EBE9A0500C48233 /* GeocodingMetaData.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = GeocodingMetaData.bundle; sourceTree = ""; }; BB9B60492EBE9A7800C48233 /* libPhoneNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libPhoneNumber.h; sourceTree = ""; }; + BB9FA4CA2F85BF8600CCF4FC /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; BBCABBF32EE0E61E0011A4C7 /* updateProjectVersions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = updateProjectVersions.swift; sourceTree = ""; }; BBCABBF52EE0F6E90011A4C7 /* versionCommitter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = versionCommitter.swift; sourceTree = ""; }; BBF66CA82EBBF9B9005E3382 /* NBGeneratedPhoneNumberMetaData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NBGeneratedPhoneNumberMetaData.m; sourceTree = ""; }; @@ -247,6 +252,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + BB9FA4CB2F85BF9800CCF4FC /* libsqlite3.tbd in Frameworks */, 0FC0D36D24A29F680087AFCF /* libPhoneNumber.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -315,6 +321,7 @@ isa = PBXGroup; children = ( 0FC0D37A24A2A05E0087AFCF /* Info.plist */, + BB4248A72F6C8B5600A7438E /* libPhoneNumberGeocodingTests.xctestplan */, 94C9AF0E24B3AAF900469F54 /* NBPhoneNumberOfflineGeocoderTest.m */, CA55ED88296F51E0005E98A1 /* TestingSource.bundle */, ); @@ -325,6 +332,7 @@ isa = PBXGroup; children = ( 1485C52B1E06F4930092F541 /* Info.plist */, + BB4248A42F6C8AB300A7438E /* libPhoneNumberTests.xctestplan */, 1485C5231E06F4890092F541 /* NBAsYouTypeFormatterTest.m */, 0FAE11902037959800193503 /* NBPhoneNumberParsingPerfTest.m */, 1485C5251E06F4890092F541 /* NBPhoneNumberUtilTest.m */, @@ -351,6 +359,7 @@ isa = PBXGroup; children = ( 9407259A24BE768A0011AE05 /* Info.plist */, + BB4248A52F6C8AEE00A7438E /* libPhoneNumberShortNumberTests.xctestplan */, 940725AB24BF63050011AE05 /* NBShortNumberInfoTest.m */, 940725B024BF7B040011AE05 /* NBShortNumberTestHelper.h */, 940725B124BF7B040011AE05 /* NBShortNumberTestHelper.m */, @@ -477,6 +486,7 @@ FD7A061F167715A0004BBEB6 /* Frameworks */ = { isa = PBXGroup; children = ( + BB9FA4CA2F85BF8600CCF4FC /* libsqlite3.tbd */, CAA5E78C29F84B7B00550AA7 /* Contacts.framework */, FD7A0624167715A0004BBEB6 /* CoreGraphics.framework */, FD7A0622167715A0004BBEB6 /* Foundation.framework */, @@ -708,9 +718,10 @@ FD7A0613167715A0004BBEB6 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0830; LastTestingUpgradeCheck = 0510; - LastUpgradeCheck = 1640; + LastUpgradeCheck = 2640; ORGANIZATIONNAME = Google; TargetAttributes = { 0FC0D36324A29F510087AFCF = { @@ -913,7 +924,6 @@ }; 940725A524BE769D0011AE05 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - platformFilter = ios; target = 34ACBB841B7122AC0064B3BD /* libPhoneNumber */; targetProxy = 940725A424BE769D0011AE05 /* PBXContainerItemProxy */; }; @@ -925,8 +935,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -934,13 +942,11 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = MQV8HVXR99; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberGeocoding/Info.plist; @@ -967,8 +973,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -977,14 +981,12 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = MQV8HVXR99; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberGeocoding/Info.plist; @@ -1011,9 +1013,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_CODE_COVERAGE = NO; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1021,8 +1020,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberGeocodingTests/Info.plist; @@ -1044,9 +1041,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_CODE_COVERAGE = NO; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1056,8 +1050,6 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberGeocodingTests/Info.plist; @@ -1079,14 +1071,12 @@ buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_CODE_COVERAGE = NO; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_SUSPICIOUS_MOVES = YES; DEBUG_INFORMATION_FORMAT = dwarf; - GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1107,7 +1097,6 @@ buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_ENABLE_CODE_COVERAGE = NO; CLANG_ENABLE_MODULES = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1116,7 +1105,6 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; - GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1135,7 +1123,6 @@ 34ACBB9E1B7122AC0064B3BD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_ENABLE_MODULES = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -1143,9 +1130,7 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1177,7 +1162,6 @@ 34ACBB9F1B7122AC0064B3BD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_ENABLE_MODULES = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -1185,17 +1169,14 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -1224,7 +1205,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -1233,12 +1213,10 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 973LHT5R86; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberShortNumber/Info.plist; @@ -1265,7 +1243,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; @@ -1275,13 +1252,11 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 973LHT5R86; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberShortNumber/Info.plist; @@ -1308,8 +1283,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1318,7 +1291,6 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 973LHT5R86; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberShortNumberTests/Info.plist; @@ -1340,8 +1312,6 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1352,7 +1322,6 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 973LHT5R86; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberShortNumberTests/Info.plist; @@ -1394,15 +1363,14 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1.4.0; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -1422,6 +1390,7 @@ ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ""; SDKROOT = iphoneos; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; TVOS_DEPLOYMENT_TARGET = 12.0; @@ -1456,13 +1425,12 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = YES; CURRENT_PROJECT_VERSION = 1.4.0; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -1475,6 +1443,7 @@ MARKETING_VERSION = 1.4.0; OTHER_CFLAGS = ""; SDKROOT = iphoneos; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumber.xcscheme b/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumber.xcscheme index 4bab9f45..e19219da 100644 --- a/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumber.xcscheme +++ b/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumber.xcscheme @@ -1,10 +1,10 @@ + buildImplicitDependencies = "NO"> + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + diff --git a/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumberGeocoding.xcscheme b/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumberGeocoding.xcscheme index 440e8886..7be2b763 100644 --- a/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumberGeocoding.xcscheme +++ b/libPhoneNumber.xcodeproj/xcshareddata/xcschemes/libPhoneNumberGeocoding.xcscheme @@ -1,10 +1,10 @@ + buildImplicitDependencies = "NO"> - - - - - - + + + + + LastUpgradeVersion = "2640" + version = "1.7"> + buildImplicitDependencies = "NO"> - - - - - - + + + +