| 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 |