Skip to content

Commit

Permalink
Add Bazel build support for swift-snapshot-testing
Browse files Browse the repository at this point in the history
Refactors the Bazel support to better match the Package.swift structure:

- Makes the following targets available: `AccessibilitySnapshotCore`, `AccessibilitySnapshotCore_ObjC`, `FBSnapshotTestCase_Accessibility`, `FBSnapshotTestCase_Accessibility_ObjC`, `AccessibilitySnapshot`.
- The module `AccessibilitySnapshot` uses `swift-snapshot-testing` and the `FBSnapshotTestCase_Accessibility*` modules use `iOSSnapshotTestCase`.
- Adds custom BUILD file for `swift-snapshot-testing` to allow it to build with Bazel. I opted for this vs. registry because it's a simple BUILD files.
  • Loading branch information
luispadron committed Jan 20, 2024
1 parent adb65ef commit df562e7
Show file tree
Hide file tree
Showing 4 changed files with 119 additions and 27 deletions.
120 changes: 94 additions & 26 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,42 @@ load(
"swift_library",
)

# -- AccessibilitySnapshotCore

swift_library(
name = "AccessibilitySnapshotCore.lib",
srcs = glob(
["Sources/AccessibilitySnapshot/Core/Swift/**/*.swift"],
allow_empty = False,
),
data = glob(
["Sources/AccessibilitySnapshot/Core/Swift/Assets/**/*"],
allow_empty = True,
),
defines = ["BAZEL_PACKAGE"],
module_name = "AccessibilitySnapshotCore",
tags = ["manual"],
visibility = ["//visibility:public"],
deps = [],
)

ios_framework(
name = "AccessibilitySnapshotCore",
bundle_id = "com.squareup.AccessibilitySnapshotCore",
families = [
"iphone",
"ipad",
],
infoplists = ["Sources/Info.plist"],
minimum_os_version = "13.0",
visibility = ["//visibility:public"],
deps = [":AccessibilitySnapshotCore.lib"],
)

# -- AccessibilitySnapshotCore_ObjC

objc_library(
name = "AccessibilitySnapshotCoreObjC.lib",
name = "AccessibilitySnapshotCore_ObjC.lib",
srcs = glob(
["Sources/AccessibilitySnapshot/Core/ObjC/**/*.m"],
allow_empty = False,
Expand All @@ -18,41 +52,61 @@ objc_library(
allow_empty = False,
),
defines = ["BAZEL_PACKAGE"],
includes = ["Sources/AccessibilitySnapshot/Core/ObjC/include"],
module_name = "AccessibilitySnapshotCore_ObjC",
tags = ["manual"],
visibility = ["//visibility:public"],
deps = [],
)

swift_library(
name = "AccessibilitySnapshotCoreSwift.lib",
srcs = glob(
["Sources/AccessibilitySnapshot/Core/Swift/**/*.swift"],
allow_empty = False,
),
defines = ["BAZEL_PACKAGE"],
module_name = "AccessibilitySnapshotCore",
tags = ["manual"],
ios_framework(
name = "AccessibilitySnapshotCore_ObjC",
bundle_id = "com.squareup.AccessibilitySnapshotCore_ObjC",
families = [
"iphone",
"ipad",
],
infoplists = ["Sources/Info.plist"],
minimum_os_version = "13.0",
visibility = ["//visibility:public"],
deps = [":AccessibilitySnapshotCoreObjC.lib"],
deps = [":AccessibilitySnapshotCore_ObjC.lib"],
)

# -- FBSnapshot_Accessibility (iOSSnapshotTestCase)

swift_library(
name = "AccessibilitySnapshot_iOSSnapshotTestCase_Swift.lib",
name = "FBSnapshotTestCase_Accessibility.lib",
testonly = True,
srcs = glob(["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/**/*.swift"]),
defines = ["BAZEL_PACKAGE"],
module_name = "FBSnapshotTestCase_Accessibility",
tags = ["manual"],
visibility = ["//visibility:public"],
deps = [
":AccessibilitySnapshotCoreObjC.lib",
":AccessibilitySnapshotCoreSwift.lib",
":AccessibilitySnapshotCore.lib",
":AccessibilitySnapshotCore_ObjC.lib",
"@ios_snapshot_test_case//:iOSSnapshotTestCase",
],
)

ios_framework(
name = "FBSnapshotTestCase_Accessibility",
testonly = True,
bundle_id = "com.squareup.FBSnapshotTestCase_Accessibility",
families = [
"iphone",
"ipad",
],
infoplists = ["Sources/Info.plist"],
minimum_os_version = "13.0",
visibility = ["//visibility:public"],
deps = [":FBSnapshotTestCase_Accessibility.lib"],
)

# -- FBSnapshot_Accessibility_ObjC (iOSSnapshotTestCase)

objc_library(
name = "AccessibilitySnapshot_iOSSnapshotTestCase_ObjC.lib",
name = "FBSnapshotTestCase_Accessibility_ObjC.lib",
testonly = True,
srcs = glob(
["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/ObjC/**/*.m"],
Expand All @@ -63,31 +117,45 @@ objc_library(
allow_empty = False,
),
defines = ["BAZEL_PACKAGE"],
module_name = "AccessibilitySnapshot",
includes = ["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/ObjC/include"],
module_name = "FBSnapshotTestCase_Accessibility_ObjC",
tags = ["manual"],
visibility = ["//visibility:public"],
deps = [":AccessibilitySnapshot_iOSSnapshotTestCase_Swift.lib"],
deps = [],
)

ios_framework(
name = "AccessibilitySnapshotCore",
bundle_id = "com.squareup.AccessibilitySnapshotCore",
name = "FBSnapshotTestCase_Accessibility_ObjC",
testonly = True,
bundle_id = "com.squareup.FBSnapshotTestCase_Accessibility_ObjC",
families = [
"iphone",
"ipad",
],
infoplists = ["Sources/Info.plist"],
minimum_os_version = "13.0",
resources = glob(
["Sources/AccessibilitySnapshot/Core/Swift/Assets/**/*"],
allow_empty = False,
),
visibility = ["//visibility:public"],
deps = [":AccessibilitySnapshotCoreSwift.lib"],
deps = [":FBSnapshotTestCase_Accessibility_ObjC.lib"],
)

# -- AccessibilitySnapshot (swift-snapshot-testing)

swift_library(
name = "AccessibilitySnapshot.lib",
testonly = True,
srcs = glob(["Sources/AccessibilitySnapshot/SnapshotTesting/**/*.swift"]),
defines = ["BAZEL_PACKAGE"],
tags = ["manual"],
visibility = ["//visibility:public"],
deps = [
":AccessibilitySnapshotCore.lib",
":AccessibilitySnapshotCore_ObjC.lib",
"@swift_snapshot_testing//:SnapshotTesting",
],
)

ios_framework(
name = "AccessibilitySnapshot_iOSSnapshotTestCase",
name = "AccessibilitySnapshot",
testonly = True,
bundle_id = "com.squareup.AccessibilitySnapshot",
families = [
Expand All @@ -97,5 +165,5 @@ ios_framework(
infoplists = ["Sources/Info.plist"],
minimum_os_version = "13.0",
visibility = ["//visibility:public"],
deps = [":AccessibilitySnapshot_iOSSnapshotTestCase_ObjC.lib"],
deps = [":AccessibilitySnapshot.lib"],
)
11 changes: 10 additions & 1 deletion Bazel/non_bzlmod_deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# -- Non-bzlmod versions

IOS_SNAPSHOT_TEST_CASE_VERSION = "57b023c8bb3df361e2fae01532cd066ec0b65d2e"
IOS_SNAPSHOT_TEST_CASE_VERSION = "57b023c8bb3df361e2fae01532cd066ec0b65d2e" # NOTE: this is 8.0.0 with some Bazel build fixes
SWIFT_SNAPSHOT_TESTING_VERSION = "1.8.2"

# -- Module extension

Expand All @@ -20,6 +21,14 @@ def non_bzlmod_repositories():
patch_args = ["-p1"],
)

http_archive(
name = "swift_snapshot_testing",
url = "https://github.com/pointfreeco/swift-snapshot-testing/archive/refs/tags/%s.tar.gz" % SWIFT_SNAPSHOT_TESTING_VERSION,
strip_prefix = "swift-snapshot-testing-%s" % SWIFT_SNAPSHOT_TESTING_VERSION,
sha256 = "f924de0b1e326b108120593e802cd0b6577edf7fbb8a87c6841a428722d3b14d",
build_file = "//Bazel:swift_snapshot_testing.BUILD.bazel",
)

def _non_bzlmod_deps_impl(_):
non_bzlmod_repositories()

Expand Down
14 changes: 14 additions & 0 deletions Bazel/swift_snapshot_testing.BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"""
Defines build targets for pointfreeco/swift-snapshot-testing.
"""

load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")

swift_library(
name = "SnapshotTesting",
srcs = glob(["Sources/SnapshotTesting/**/*.swift"]),
deps = [],
tags = ["manual"],
visibility = ["//visibility:public"],
testonly = True,
)
1 change: 1 addition & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ non_bzlmod_deps = use_extension("//Bazel:non_bzlmod_deps.bzl", "non_bzlmod_deps"
use_repo(
non_bzlmod_deps,
"ios_snapshot_test_case",
"swift_snapshot_testing",
)

apple_cc_configure = use_extension("@apple_support//crosstool:setup.bzl", "apple_cc_configure_extension")
Expand Down

0 comments on commit df562e7

Please sign in to comment.