earlgrey 1.12.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 322b35eec3f40e100c7f91912d20e6cd2a326f06
4
- data.tar.gz: df765c3578e6fd7565c3ae1a7533b2007a9ebafb
3
+ metadata.gz: d27489bee95f5108c5762737e346df7c19465cd5
4
+ data.tar.gz: f16b00bbef00425cbea57313bef664f15e7e0435
5
5
  SHA512:
6
- metadata.gz: 0ed870a45ff609f923a947508032ea44a62bad42e8287f278b52e24496254afecad7063ed082df305381cf2dabe74877cce94fe20265d18f644dc2e7ca2eefe8
7
- data.tar.gz: 55c9d48c1d123a17499c6e31843a292217160fc16975b4402954f062755e2df185c44dfe1e4b3eff43194915449361a8c342072b1aceff550573fa72b0c83a11
6
+ metadata.gz: bf5678c94c3b26dae74540f519e53b55afcfe79e919787d4270694166b4f2c707caee868ed8561fb081b778212df261b2ed97f9731ec52e4579cf929c6258fdb
7
+ data.tar.gz: 2864b1265244c21224f029d321b8ada71fa0814706a62b69475be06330eda33df2a1805151a64cd52e579b79ffd11936fd9b8b8aa203cd527a3746b822041a09
File without changes
@@ -14,8 +14,6 @@
14
14
  # limitations under the License.
15
15
  require 'earlgrey/configure_earlgrey'
16
16
  require 'thor'
17
-
18
- # rubocop:disable Metrics/LineLength
19
17
  module EarlGrey
20
18
  class CLI < Thor
21
19
  package_name 'EarlGrey'
@@ -148,9 +148,11 @@ module EarlGrey
148
148
  set_defaults(project_name, test_target_name, scheme_file, opts)
149
149
 
150
150
  # Add DYLD_INSERT_LIBRARIES to the schemes
151
+ # rubocop:disable Performance/HashEachMethods
151
152
  modify_scheme_for_actions(user_project, [test_target]).each do |_, scheme|
152
153
  scheme.save!
153
154
  end
155
+ # rubocop:enable Performance/HashEachMethods
154
156
 
155
157
  # Add a Copy Files Build Phase for EarlGrey.framework to embed it into
156
158
  # the app under test.
@@ -314,9 +316,7 @@ module EarlGrey
314
316
  end
315
317
 
316
318
  settings[HEADER_SEARCH_PATHS] = Array(settings[HEADER_SEARCH_PATHS])
317
- unless settings[HEADER_SEARCH_PATHS].include?(CARTHAGE_HEADERS_IOS)
318
- settings[HEADER_SEARCH_PATHS] << CARTHAGE_HEADERS_IOS
319
- end
319
+ settings[HEADER_SEARCH_PATHS] << CARTHAGE_HEADERS_IOS unless settings[HEADER_SEARCH_PATHS].include?(CARTHAGE_HEADERS_IOS)
320
320
  end
321
321
  target
322
322
  end
@@ -342,9 +342,7 @@ module EarlGrey
342
342
  # the framework reference pointing to the EarlGrey.framework
343
343
  def add_earlgrey_framework(target, framework_ref)
344
344
  linked_frameworks = target.frameworks_build_phase.files.map(&:display_name)
345
- unless linked_frameworks.include? EARLGREY_FRAMEWORK
346
- target.frameworks_build_phase.add_file_reference framework_ref, true
347
- end
345
+ target.frameworks_build_phase.add_file_reference framework_ref, true unless linked_frameworks.include? EARLGREY_FRAMEWORK
348
346
  end
349
347
 
350
348
  # Check if the target contains a swift source file
@@ -383,9 +381,7 @@ module EarlGrey
383
381
  'Falling back to version 3.0.'
384
382
  swift_fallback = 'Swift-3.0'
385
383
  src_swift = File.join(src_root, swift_fallback, src_swift_name)
386
- unless File.exist?(src_swift)
387
- raise "Unable to locate #{swift_fallback} file at path #{src_swift}."
388
- end
384
+ raise "Unable to locate #{swift_fallback} file at path #{src_swift}." unless File.exist?(src_swift)
389
385
  end
390
386
  dst_swift = File.join(dst_root, src_swift_name)
391
387
 
@@ -405,9 +401,7 @@ module EarlGrey
405
401
  unless existing_sources.include? src_swift_name
406
402
  target_files = test_target_group.files
407
403
  earlgrey_swift_file_ref = target_files.find { |f| f.display_name == src_swift_name }
408
- unless earlgrey_swift_file_ref
409
- raise 'EarlGrey.swift not found in testing target'
410
- end
404
+ raise 'EarlGrey.swift not found in testing target' unless earlgrey_swift_file_ref
411
405
  target.source_build_phase.add_file_reference earlgrey_swift_file_ref, true
412
406
  end
413
407
  end
@@ -15,19 +15,25 @@
15
15
 
16
16
  require_relative '../configure_earlgrey'
17
17
  require_relative 'aggregate_target_extensions'
18
+ require_relative 'earlgrey_yaml'
18
19
 
19
20
  module EarlGrey
20
21
  module AnalyzerExtension
21
22
  def analyze(*_)
22
23
  result = super
24
+ earlgrey_yaml = EarlGreyYaml.new(result, podfile)
23
25
  eg_targets = result.targets.select(&:is_earlgrey?).each do |target|
24
26
  target.user_targets.each do |native_target|
25
- EarlGrey.copy_swift_files(target.user_project, native_target,
26
- target.target_definition.swift_version)
27
+ config = earlgrey_yaml.lookup_target native_target
28
+
29
+ if config[EarlGreyYaml::ADD_SWIFT]
30
+ EarlGrey.copy_swift_files(target.user_project, native_target,
31
+ target.target_definition.swift_version)
32
+ end
27
33
 
28
34
  framework_ref = EarlGrey.add_earlgrey_product target.user_project, false
29
- EarlGrey.add_earlgrey_copy_files_script native_target, framework_ref
30
- EarlGrey.add_earlgrey_framework native_target, framework_ref
35
+ EarlGrey.add_earlgrey_copy_files_script native_target, framework_ref if config[EarlGreyYaml::ADD_BUILD_PHASE]
36
+ EarlGrey.add_earlgrey_framework native_target, framework_ref if config[EarlGreyYaml::ADD_FRAMEWORK]
31
37
  end
32
38
  end
33
39
 
@@ -0,0 +1,59 @@
1
+ class EarlGreyYaml
2
+ ADD_SWIFT = 'add_swift'.freeze
3
+ ADD_BUILD_PHASE = 'add_build_phase'.freeze
4
+ ADD_FRAMEWORK = 'add_framework'.freeze
5
+
6
+ def initialize(analyzer, podfile)
7
+ @analyzer = analyzer
8
+ earlgrey_yml_path = File.join(File.dirname(podfile.defined_in_file), 'earlgrey_gem.yml')
9
+
10
+ @earlgrey_yml = {}
11
+ @earlgrey_yml = YAML.safe_load(File.read(earlgrey_yml_path)) if File.exist?(earlgrey_yml_path)
12
+
13
+ validate_targets
14
+ validate_keys
15
+ end
16
+
17
+ def validate_targets
18
+ config_targets = @earlgrey_yml.keys
19
+ existing_targets = @analyzer.targets.map(&:user_targets).flatten.map(&:name)
20
+ missing_targets = (config_targets - existing_targets).join(', ')
21
+
22
+ unless missing_targets.empty?
23
+ error = "ERROR: earlgrey_gem.yml references missing targets: #{missing_targets}\n"
24
+ error += "Valid targets: #{existing_targets}"
25
+
26
+ abort error
27
+ end
28
+ end
29
+
30
+ def validate_keys
31
+ unknown_keys = []
32
+ existing_keys = @earlgrey_yml.values.flatten.map(&:keys).flatten
33
+ existing_keys.each do |key|
34
+ unknown_keys << key unless [ADD_SWIFT, ADD_BUILD_PHASE, ADD_FRAMEWORK].include?(key)
35
+ end
36
+ unknown_keys = unknown_keys.join(', ')
37
+
38
+ abort "ERROR: earlgrey_gem.yml contains unknown keys: #{unknown_keys}".red unless unknown_keys.empty?
39
+ end
40
+
41
+ def lookup_target(native_target)
42
+ target = begin
43
+ @earlgrey_yml.fetch(native_target.name, {})
44
+ # rubocop:disable Style/RescueStandardError
45
+ rescue
46
+ abort("Invalid earlgrey_gem.yaml. Unable to fetch: #{native_target.name}")
47
+ end
48
+ # rubocop:enable Style/RescueStandardError
49
+
50
+ tmp = {}
51
+ target.map { |obj| obj.map { |k, v| tmp[k] = v } }
52
+
53
+ {
54
+ ADD_SWIFT => tmp.fetch(ADD_SWIFT, true),
55
+ ADD_BUILD_PHASE => tmp.fetch(ADD_BUILD_PHASE, true),
56
+ ADD_FRAMEWORK => tmp.fetch(ADD_FRAMEWORK, true)
57
+ }
58
+ end
59
+ end
@@ -97,9 +97,17 @@ private func GREYWaitUntilIdle() {
97
97
  }
98
98
 
99
99
  open class EarlGrey: NSObject {
100
+ public static func selectElement(with matcher: GREYMatcher,
101
+ file: StaticString = #file,
102
+ line: UInt = #line) -> GREYInteraction {
103
+ return EarlGreyImpl.invoked(fromFile: file.description, lineNumber: line)
104
+ .selectElement(with: matcher)
105
+ }
106
+
107
+ @available(*, deprecated, renamed: "selectElement(with:)")
100
108
  open class func select(elementWithMatcher matcher:GREYMatcher,
101
- file: StaticString = #file,
102
- line: UInt = #line) -> GREYElementInteraction {
109
+ file: StaticString = #file,
110
+ line: UInt = #line) -> GREYElementInteraction {
103
111
  return EarlGreyImpl.invoked(fromFile: file.description, lineNumber: line)
104
112
  .selectElement(with: matcher)
105
113
  }
@@ -132,12 +140,32 @@ open class EarlGrey: NSObject {
132
140
 
133
141
  extension GREYInteraction {
134
142
  @discardableResult public func assert(_ matcher: @autoclosure () -> GREYMatcher) -> Self {
135
- return self.assert(with:matcher())
143
+ return self.__assert(with: matcher())
136
144
  }
137
145
 
138
146
  @discardableResult public func assert(_ matcher: @autoclosure () -> GREYMatcher,
139
147
  error:UnsafeMutablePointer<NSError?>!) -> Self {
140
- return self.assert(with: matcher(), error: error)
148
+ return self.__assert(with: matcher(), error: error)
149
+ }
150
+
151
+ @available(*, deprecated, renamed: "assert(_:)")
152
+ @discardableResult public func assert(with matcher: GREYMatcher!) -> Self {
153
+ return self.__assert(with: matcher)
154
+ }
155
+
156
+ @available(*, deprecated, renamed: "assert(_:error:)")
157
+ @discardableResult public func assert(with matcher: GREYMatcher!,
158
+ error:UnsafeMutablePointer<NSError?>!) -> Self {
159
+ return self.__assert(with: matcher, error: error)
160
+ }
161
+
162
+ @discardableResult public func perform(_ action: GREYAction!) -> Self {
163
+ return self.__perform(action)
164
+ }
165
+
166
+ @discardableResult public func perform(_ action: GREYAction!,
167
+ error:UnsafeMutablePointer<NSError?>!) -> Self {
168
+ return self.__perform(action, error: error)
141
169
  }
142
170
 
143
171
  @discardableResult public func using(searchAction: GREYAction,
@@ -14,5 +14,5 @@
14
14
  # limitations under the License.
15
15
 
16
16
  module EarlGrey
17
- VERSION = '1.12.1'.freeze unless defined? ::EarlGrey::VERSION
17
+ VERSION = '1.13.0'.freeze unless defined? ::EarlGrey::VERSION
18
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: earlgrey
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.1
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - khandpur
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-09-01 00:00:00.000000000 Z
14
+ date: 2018-04-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: colored
@@ -28,89 +28,89 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.2'
30
30
  - !ruby/object:Gem::Dependency
31
- name: xcodeproj
31
+ name: thor
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 1.3.0
36
+ version: 0.19.1
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 1.3.0
43
+ version: 0.19.1
44
44
  - !ruby/object:Gem::Dependency
45
- name: thor
45
+ name: xcodeproj
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 0.19.1
50
+ version: 1.3.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 0.19.1
57
+ version: 1.3.0
58
58
  - !ruby/object:Gem::Dependency
59
- name: rspec
59
+ name: pry
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - ">="
62
+ - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: 3.4.0
64
+ version: 0.10.3
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ">="
69
+ - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: 3.4.0
71
+ version: 0.10.3
72
72
  - !ruby/object:Gem::Dependency
73
- name: rubocop
73
+ name: rake
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - ">="
76
+ - - "~>"
77
77
  - !ruby/object:Gem::Version
78
- version: 0.39.0
78
+ version: '11.1'
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - ">="
83
+ - - "~>"
84
84
  - !ruby/object:Gem::Version
85
- version: 0.39.0
85
+ version: '11.1'
86
86
  - !ruby/object:Gem::Dependency
87
- name: pry
87
+ name: rspec
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - "~>"
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 0.10.3
92
+ version: 3.4.0
93
93
  type: :development
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - "~>"
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 0.10.3
99
+ version: 3.4.0
100
100
  - !ruby/object:Gem::Dependency
101
- name: rake
101
+ name: rubocop
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: '11.1'
106
+ version: 0.39.0
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - "~>"
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: '11.1'
113
+ version: 0.39.0
114
114
  description: Command line tool for installing EarlGrey into an iOS Unit Testing target
115
115
  email:
116
116
  executables:
@@ -126,6 +126,7 @@ files:
126
126
  - lib/earlgrey/extensions.rb
127
127
  - lib/earlgrey/extensions/aggregate_target_extensions.rb
128
128
  - lib/earlgrey/extensions/analyzer_extensions.rb
129
+ - lib/earlgrey/extensions/earlgrey_yaml.rb
129
130
  - lib/earlgrey/files/Swift-2.3/EarlGrey.swift
130
131
  - lib/earlgrey/files/Swift-3.0/EarlGrey.swift
131
132
  - lib/earlgrey/version.rb
@@ -141,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
142
  requirements:
142
143
  - - ">="
143
144
  - !ruby/object:Gem::Version
144
- version: '2'
145
+ version: '2.1'
145
146
  required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  requirements:
147
148
  - - ">="
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
150
  version: '0'
150
151
  requirements: []
151
152
  rubyforge_project:
152
- rubygems_version: 2.6.11
153
+ rubygems_version: 2.5.2
153
154
  signing_key:
154
155
  specification_version: 4
155
156
  summary: EarlGrey installer gem