mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-01-09 07:11:20 +08:00
80 lines
2.8 KiB
Ruby
80 lines
2.8 KiB
Ruby
module SnapshotPodspecHelper
|
|
class Component
|
|
attr_accessor :name
|
|
attr_accessor :source_files
|
|
attr_accessor :resources
|
|
|
|
def initialize(name)
|
|
@name = name
|
|
@source_files = default_source_files
|
|
@resources = default_resources
|
|
end
|
|
|
|
def default_source_files
|
|
if @name.present?
|
|
source_files = Dir["components/#{@name}/tests/snapshot/*.{h,m,swift}"]
|
|
supplemental_files = Dir["components/#{@name}/tests/snapshot/supplemental/*.{h,m,swift}"]
|
|
example_files = Dir["components/#{@name}/examples/tests/snapshot/*.{h,m,swift}"]
|
|
extension_files = Dir["components/#{@name}/tests/snapshot/*/*.{h,m,swift}"]
|
|
return source_files + supplemental_files + example_files + extension_files
|
|
end
|
|
return []
|
|
end
|
|
|
|
def default_resources
|
|
if @name.present?
|
|
return [
|
|
"components/#{@name}/tests/snapshot/resources/*",
|
|
]
|
|
end
|
|
return []
|
|
end
|
|
end
|
|
|
|
def self.snapshot_sources
|
|
base_sources = ["components/private/Snapshot/src/*.{h,m,swift}", "components/private/Snapshot/src/*/*.{h,m,swift}"]
|
|
return components.reduce(base_sources) do |sources_so_far, component|
|
|
sources_so_far + component.source_files
|
|
end
|
|
end
|
|
|
|
def self.snapshot_resources
|
|
return components.reduce([]) do |resources_so_far, component|
|
|
resources_so_far + component.resources
|
|
end
|
|
end
|
|
|
|
def self.components
|
|
return Dir["components/**/tests/snapshot"].map { |dir|
|
|
dir = Component.new(dir.split(File::SEPARATOR)[1])
|
|
}
|
|
end
|
|
end
|
|
|
|
Pod::Spec.new do |s|
|
|
s.name = "MaterialComponentsSnapshotTests"
|
|
s.version = "124.2.0"
|
|
s.authors = "The Material Components authors."
|
|
s.summary = "This spec is an aggregate of all the Material Components snapshot tests."
|
|
s.homepage = "https://github.com/material-components/material-components-ios"
|
|
s.license = 'Apache 2.0'
|
|
s.source = { :git => "https://github.com/material-components/material-components-ios.git", :tag => "v#{s.version}" }
|
|
s.platform = :ios, '11.0'
|
|
s.requires_arc = true
|
|
s.dependency 'MaterialComponents'
|
|
s.dependency 'MaterialComponentsExamples'
|
|
|
|
# Top level sources are required. Without them, unit test targets do not show up in Xcode.
|
|
# However, no top level sources can import iOSSnapshotTestCase, otherwise the app will crash on
|
|
# launch because XCTest isn't found.
|
|
s.source_files = ["components/private/Snapshot/src/SourceDummies/*.{h,m}"]
|
|
|
|
s.test_spec "SnapshotTests" do |snapshot_tests|
|
|
snapshot_tests.ios.deployment_target = '11.0'
|
|
snapshot_tests.requires_app_host = true
|
|
snapshot_tests.source_files = SnapshotPodspecHelper.snapshot_sources
|
|
snapshot_tests.resources = SnapshotPodspecHelper.snapshot_resources
|
|
snapshot_tests.dependency 'iOSSnapshotTestCase/Core', '2.2.0'
|
|
end
|
|
end
|