slather 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzQ1ZmY1MjU4NDI0Njg5M2NkMGI5ZGJjNDhiNWZhMTQ1OTliNWUwNA==
4
+ Mzk5NGNiYzA1NGVhMzEzYWJhMzdhNjA0YjBhNjhhYWY2ZmQ3NDNlZQ==
5
5
  data.tar.gz: !binary |-
6
- YWY4ZTg1MDdjYTRhMDg4MDQyNGU2YzQzOWJhZGU0ODQ4NTE0ZjNiMA==
6
+ YTY0ZjBiNDcwZGFlMmM5YzQyNjU0YjdkYjQyNDcyYThhMDAyYzM3Zg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODU0OTQ5OGE0ZjYxMDI3OGVlYTcwMzE5ZjIwNWUyOGYzMGUxNDAxY2U3Yjll
10
- MWI5ZjU1NzZhZTQ2MjYzNzA0MjNkNmE0MWY3MDAwNGQ4ZmU1NTI0Y2Q4NmUw
11
- ODAxZGEwYWY4MDU2MDY2MDVhOTBkMmZhNjBlN2Y4YWRmMGY0ZTY=
9
+ YmNkNjVhOGYxNWM4NzFjMTBiYTY3NGMwZjM2Y2Y5NDU5MDMzNjEwYWQyYjJj
10
+ MjcwNDkxNTEzNmQwNGE5NjVhODI4NTM5OTA5OTRlYjEwMTc2YWYxMWMzMGM1
11
+ ZDEwODRiMjdjYmZjNTUxZjZlMDJmMTJjNDQyZWU1YmM3OGEyNzE=
12
12
  data.tar.gz: !binary |-
13
- MTVhMGExOTViY2VkNDA4ZTJhMTA3ZjA1NGZhM2YxMmZjNjBiZDZkNTk2ZjA2
14
- Mjk4MzAxNTIxNzFlNTFiMDVmYjMyN2ViZjJiYzBkZjg0N2FjNTMxYWIxN2Q3
15
- MjYwYTlkOTNhZDFmMTEyZDA3NTIwNTNjZDQxOGU1MWY2NmQ4NGQ=
13
+ M2E4N2ZmNzZkYTViMjAzYzA0N2MyZDQxMmI0NjQyOGY0YjExNjhkYTIwYjky
14
+ N2Y3M2IzZGE3NmU0NmUwZWRiZDhiNzUwZjhlYjc3NWNlOGYyOGFmMGFlYmI1
15
+ YWE3ODA0NDA0NGI2YWZhNGI1MzdlNmU0NTc1NWUwYzJlN2I5NjA=
data/bin/slather CHANGED
@@ -17,6 +17,7 @@ Clamp do
17
17
  option ["--simple-output", "-s"], :flag, "Post coverage results to coveralls"
18
18
 
19
19
  option ["--build-directory", "-b"], "BUILD_DIRECTORY", "The directory where gcno files will be written to. Defaults to derived data."
20
+ option ["--source-directory"], "SOURCE_DIRECTORY", "The directory where your source files are located."
20
21
  option ["--ignore", "-i"], "IGNORE", "ignore files conforming to a path", :multivalued => true
21
22
 
22
23
  def execute
@@ -25,6 +26,7 @@ Clamp do
25
26
  setup_service_name
26
27
  setup_ignore_list
27
28
  setup_build_directory
29
+ setup_source_directory
28
30
  setup_coverage_service
29
31
 
30
32
  post
@@ -36,6 +38,10 @@ Clamp do
36
38
  project.build_directory = build_directory if build_directory
37
39
  end
38
40
 
41
+ def setup_source_directory
42
+ project.source_directory = source_directory if source_directory
43
+ end
44
+
39
45
  def setup_ignore_list
40
46
  project.ignore_list = ignore_list if !ignore_list.empty?
41
47
  end
data/lib/slather.rb CHANGED
@@ -9,4 +9,10 @@ module Slather
9
9
 
10
10
  Encoding.default_external = "utf-8"
11
11
 
12
+ def self.prepare_pods(pods)
13
+ pods.post_install do |installer|
14
+ installer.project.slather_setup_for_coverage
15
+ end
16
+ end
17
+
12
18
  end
@@ -12,8 +12,15 @@ module Slather
12
12
  @source_file_pathname ||= begin
13
13
  base_filename = gcno_file_pathname.basename.sub_ext("")
14
14
  # TODO: Handle Swift
15
- path = Dir["./**/#{base_filename}.m"].first
16
- path && Pathname(path)
15
+ path = nil
16
+ if project.source_directory
17
+ path = Dir["#{project.source_directory}/**/#{base_filename}.m"].first
18
+ path &&= Pathname(path)
19
+ else
20
+ pbx_file = project.files.detect { |pbx_file| pbx_file.real_path.basename.to_s == "#{base_filename}.m" }
21
+ path = pbx_file && pbx_file.real_path
22
+ end
23
+ path
17
24
  end
18
25
  end
19
26
 
@@ -26,7 +33,6 @@ module Slather
26
33
  end
27
34
 
28
35
  def source_file_pathname_relative_to_repo_root
29
- puts "pathhh: #{source_file_pathname.cleanpath}"
30
36
  source_file_pathname.realpath.relative_path_from(Pathname("./").realpath)
31
37
  end
32
38
 
@@ -3,10 +3,25 @@ require 'xcodeproj'
3
3
  require 'json'
4
4
  require 'yaml'
5
5
 
6
+ module Xcodeproj
7
+ class Project
8
+
9
+ def slather_setup_for_coverage
10
+ build_configurations.each do |build_configuration|
11
+ build_configuration.build_settings["GCC_INSTRUMENT_PROGRAM_FLOW_ARCS"] = "YES"
12
+ build_configuration.build_settings["GCC_GENERATE_TEST_COVERAGE_FILES"] = "YES"
13
+ end
14
+ end
15
+
16
+ end
17
+ end
18
+
6
19
  module Slather
7
20
  class Project < Xcodeproj::Project
8
21
 
9
- attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service
22
+ attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :source_directory
23
+
24
+ alias_method :setup_for_coverage, :slather_setup_for_coverage
10
25
 
11
26
  def self.open(xcodeproj)
12
27
  proj = super
@@ -51,12 +66,17 @@ module Slather
51
66
  configure_ignore_list_from_yml
52
67
  configure_ci_service_from_yml
53
68
  configure_coverage_service_from_yml
69
+ configure_source_directory_from_yml
54
70
  end
55
71
 
56
72
  def configure_build_directory_from_yml
57
73
  self.build_directory = self.class.yml["build_directory"] if self.class.yml["build_directory"] && !@build_directory
58
74
  end
59
75
 
76
+ def configure_source_directory_from_yml
77
+ self.source_directory ||= self.class.yml["source_directory"] if self.class.yml["source_directory"]
78
+ end
79
+
60
80
  def configure_ignore_list_from_yml
61
81
  self.ignore_list ||= [(self.class.yml["ignore"] || [])].flatten
62
82
  end
@@ -85,13 +105,6 @@ module Slather
85
105
  @coverage_service = service
86
106
  end
87
107
 
88
- def setup_for_coverage
89
- build_configurations.each do |build_configuration|
90
- build_configuration.build_settings["GCC_INSTRUMENT_PROGRAM_FLOW_ARCS"] = "YES"
91
- build_configuration.build_settings["GCC_GENERATE_TEST_COVERAGE_FILES"] = "YES"
92
- end
93
- end
94
-
95
108
  end
96
109
  end
97
110
 
@@ -1,3 +1,3 @@
1
1
  module Slather
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slather
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Larsen