diff --git a/scripts/run-integration-test.sh b/scripts/run-integration-test.sh index 84a698c1e..d28d091b8 100755 --- a/scripts/run-integration-test.sh +++ b/scripts/run-integration-test.sh @@ -39,8 +39,20 @@ log "Extracting name for Swift package: ${PACKAGE_PATH}" PACKAGE_NAME=$(swift package --package-path "${PACKAGE_PATH}" describe --type json | "${JQ_BIN}" -r .name) log "Overriding dependency in ${INTEGRATION_TEST_PACKAGE_PATH} on ${PACKAGE_NAME} to use ${PACKAGE_PATH}" -swift package --package-path "${INTEGRATION_TEST_PACKAGE_PATH}" \ - edit "${PACKAGE_NAME}" --path "${PACKAGE_PATH}" +cat >> "${INTEGRATION_TEST_PACKAGE_PATH}/Package.swift" << EOF +// BEGIN: Local override for integration testing +guard let dependencyToOverride = package.dependencies.firstIndex(where: { dependency in + switch dependency.kind { + case .sourceControl(_, let location, _) where location.hasSuffix("/${PACKAGE_NAME}"): true + case .registry("${PACKAGE_NAME}", _): true + case .fileSystem("${PACKAGE_NAME}", _): true + default: false + } +}) else { fatalError("Failed to find dependency to override") } +package.dependencies.remove(at: dependencyToOverride) +package.dependencies.append(.package(name: "${PACKAGE_NAME}", path: "${PACKAGE_PATH}")) +// END: Local override for integration testing +EOF log "Building integration test package: ${INTEGRATION_TEST_PACKAGE_PATH}" swift build --package-path "${INTEGRATION_TEST_PACKAGE_PATH}" diff --git a/scripts/test-examples.sh b/scripts/test-examples.sh index fb90d572a..e3e369762 100755 --- a/scripts/test-examples.sh +++ b/scripts/test-examples.sh @@ -51,26 +51,27 @@ for EXAMPLE_PACKAGE_PATH in $(find "${EXAMPLES_PACKAGE_PATH}" -maxdepth 2 -name log "Updating mtime of example contents..." find "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}" -print0 | xargs -0 -n1 touch -m - log "Re-overriding dependency in ${EXAMPLE_PACKAGE_NAME} to use ${PACKAGE_PATH}" - "${SWIFT_BIN}" package \ - --package-path "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}" \ - --cache-path "${SHARED_PACKAGE_CACHE_PATH}" \ - --skip-update \ - --scratch-path "${SHARED_PACKAGE_SCRATCH_PATH}" \ - unedit swift-openapi-generator || : - "${SWIFT_BIN}" package \ - --package-path "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}" \ - --cache-path "${SHARED_PACKAGE_CACHE_PATH}" \ - --skip-update \ - --scratch-path "${SHARED_PACKAGE_SCRATCH_PATH}" \ - edit swift-openapi-generator \ - --path "${PACKAGE_PATH}" + log "Overriding swift-openapi-generator dependency in ${EXAMPLE_PACKAGE_NAME} to use ${PACKAGE_PATH}" + cat >> "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}/Package.swift" << EOF +// BEGIN: Local override for example package testing +if let dependencyToOverride = package.dependencies.firstIndex(where: { dependency in + switch dependency.kind { + case .sourceControl(_, let location, _) where location.hasSuffix("/swift-openapi-generator"): true + case .registry("swift-openapi-generator", _): true + case .fileSystem("swift-openapi-generator", _): true + default: false + } +}) { + package.dependencies.remove(at: dependencyToOverride) + package.dependencies.append(.package(name: "swift-openapi-generator", path: "${PACKAGE_PATH}")) +} +// END: Local override for example package testing +EOF log "Building example package: ${EXAMPLE_PACKAGE_NAME}" "${SWIFT_BIN}" build --build-tests \ --package-path "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}" \ --cache-path "${SHARED_PACKAGE_CACHE_PATH}" \ - --skip-update \ --scratch-path "${SHARED_PACKAGE_SCRATCH_PATH}" log "✅ Successfully built the example package ${EXAMPLE_PACKAGE_NAME}." @@ -79,7 +80,6 @@ for EXAMPLE_PACKAGE_PATH in $(find "${EXAMPLES_PACKAGE_PATH}" -maxdepth 2 -name "${SWIFT_BIN}" test \ --package-path "${SHARED_EXAMPLE_HARNESS_PACKAGE_PATH}" \ --cache-path "${SHARED_PACKAGE_CACHE_PATH}" \ - --skip-update \ --scratch-path "${SHARED_PACKAGE_SCRATCH_PATH}" log "✅ Passed the tests for the example package ${EXAMPLE_PACKAGE_NAME}." fi