firespring_dev_commands 2.1.20 → 2.1.21.pre.alpha.2

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
  SHA256:
3
- metadata.gz: 0f0890635dbc5e02fe76779902337c6435bafb6feca39615e44f6163e50e997e
4
- data.tar.gz: 2f7aa3997ede91430a662be821f1c8b762cc2826ea2ae9db9961b960e08cb84b
3
+ metadata.gz: 87e1ba4de217508ebdec8d17da4156baaab7bfb45154519d5b5aa930d8f8755b
4
+ data.tar.gz: 9b208c659543d76dc89b7b9e92d21991445056d9cae72bf7616bed2b5169d6b8
5
5
  SHA512:
6
- metadata.gz: 555a9a43a8a2239ef92c32e8db031125135c280c208e2eef7a25298620f6f6e162b5e3f1de48ce250cf7eecd13fe0c025b7897f55ddb277551173f734a75ea8c
7
- data.tar.gz: cc7b6953b961e75c67de30b4fb8f16aae19f915da42daa4a21028baf35a15f45e917b9c59b66fb267898106b5871cd6f913fe28e62a198dbd569c616b2c5ae0e
6
+ metadata.gz: a6c7ef9927e5b2cd60a0f21ebd50d6a2b0f96aa383c69d9b8196c2d4c4c11700350e231dcb34b5e1bf83f5953cc999ebbf6b7edcc8d0a9ee200275e936fda4cd
7
+ data.tar.gz: e97e145d2820c3ecd8143fafcf5a730edb39351fdfb2bf61b95344039e0ae54801c0029dccb6d1b313cd093aa195bcd775674145a23b2ba6a6838b77b3cf4297
@@ -0,0 +1,30 @@
1
+ module Dev
2
+ module Coverage
3
+ class Cobertura
4
+ attr_reader :local_filename, :container_filename, :filename, :threshold
5
+
6
+ def initialize(filename: 'cobertura.xml', threshold: nil, container_path: nil, local_path: nil)
7
+ @filename = filename
8
+ @local_filename = File.join(local_path || '.', @filename)
9
+ @container_filename = File.join(container_path || '.', @filename)
10
+ @threshold = threshold.to_f
11
+
12
+ # Remove any previous coverage info
13
+ FileUtils.rm_f(local_filename, verbose: true)
14
+ end
15
+
16
+ def options
17
+ %W(--coverage-cobertura #{container_filename})
18
+ end
19
+
20
+ def check
21
+ report = Ox.load(File.read(local_filename), mode: :hash)
22
+ attrs, = report[:coverage]
23
+ cov_pct = attrs[:'line-rate'].to_f * 100
24
+ raise format('Line coverage %.2f%% is less than the threshold %.2f%%', cov_pct, threshold) if cov_pct < threshold
25
+
26
+ puts format('Line coverage %.2f%% is above the threshold %.2f%%', cov_pct, threshold)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -8,11 +8,12 @@ module Dev
8
8
  DEFAULT_PACKAGE_FILE = 'composer.json'.freeze
9
9
 
10
10
  # Config object for setting top level git config options
11
- Config = Struct.new(:container_path, :local_path, :package_file) do
11
+ Config = Struct.new(:container_path, :local_path, :package_file, :coverage_threshold) do
12
12
  def initialize
13
13
  self.container_path = DEFAULT_PATH
14
14
  self.local_path = DEV_COMMANDS_ROOT_DIR
15
15
  self.package_file = DEFAULT_PACKAGE_FILE
16
+ self.coverage_threshold = nil
16
17
  end
17
18
  end
18
19
 
@@ -30,12 +31,13 @@ module Dev
30
31
  alias_method :configure, :config
31
32
  end
32
33
 
33
- attr_accessor :container_path, :local_path, :package_file
34
+ attr_accessor :container_path, :local_path, :package_file, :coverage
34
35
 
35
- def initialize(container_path: nil, local_path: nil, package_file: nil)
36
+ def initialize(container_path: nil, local_path: nil, package_file: nil, coverage_threshold: nil)
36
37
  @container_path = container_path || self.class.config.container_path
37
38
  @local_path = local_path || self.class.config.local_path
38
39
  @package_file = package_file || self.class.config.package_file
40
+ @coverage = Dev::Coverage::Cobertura.new(container_path:, local_path:, threshold: coverage_threshold)
39
41
  end
40
42
 
41
43
  # The base npm command that is the starting point for all subsequent commands
@@ -93,10 +95,16 @@ module Dev
93
95
  def test_command
94
96
  test = []
95
97
  test << './vendor/bin/phpunit'
98
+ test << coverage.options if coverage
96
99
  test.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
97
100
  test
98
101
  end
99
102
 
103
+ # Run the check to ensure code coverage meets the desired threshold
104
+ def check_test_coverage
105
+ coverage.check
106
+ end
107
+
100
108
  # Build the php fast test command
101
109
  def test_fast_command(processes = 4)
102
110
  test = []
@@ -20,10 +20,12 @@ module Dev
20
20
  container_path: nil,
21
21
  local_path: nil,
22
22
  start_container_dependencies_on_test: true,
23
+ coverage_threshold: nil,
23
24
  exclude: []
24
25
  )
25
- @php = Dev::Php.new(container_path:, local_path:)
26
+ @php = Dev::Php.new(container_path:, local_path:, coverage_threshold:)
26
27
  @start_container_dependencies_on_test = start_container_dependencies_on_test
28
+
27
29
  super(application, exclude:)
28
30
  end
29
31
 
@@ -133,6 +135,7 @@ module Dev
133
135
  options = []
134
136
  options << '-T' if Dev::Common.new.running_codebuild?
135
137
  Dev::Docker::Compose.new(services: application, options:).exec(*php.test_command)
138
+ php.check_test_coverage
136
139
  end
137
140
  end
138
141
  end
@@ -6,6 +6,6 @@ module Dev
6
6
  # Use 'v.v.v.pre.alpha.v' for pre-release vesions
7
7
  # Use 'v.v.v.beta.v for beta versions
8
8
  # Use semantic versioning for any releases (https://semver.org/)
9
- VERSION = '2.1.20'.freeze
9
+ VERSION = '2.1.21.pre.alpha.2'.freeze
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firespring_dev_commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.20
4
+ version: 2.1.21.pre.alpha.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firespring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-12 00:00:00.000000000 Z
11
+ date: 2023-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -333,6 +333,7 @@ files:
333
333
  - lib/firespring_dev_commands/bloom_growth/user.rb
334
334
  - lib/firespring_dev_commands/boolean.rb
335
335
  - lib/firespring_dev_commands/common.rb
336
+ - lib/firespring_dev_commands/coverage/cobertura.rb
336
337
  - lib/firespring_dev_commands/daterange.rb
337
338
  - lib/firespring_dev_commands/docker.rb
338
339
  - lib/firespring_dev_commands/docker/compose.rb
@@ -403,9 +404,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
403
404
  version: '3.1'
404
405
  required_rubygems_version: !ruby/object:Gem::Requirement
405
406
  requirements:
406
- - - ">="
407
+ - - ">"
407
408
  - !ruby/object:Gem::Version
408
- version: '0'
409
+ version: 1.3.1
409
410
  requirements: []
410
411
  rubygems_version: 3.4.10
411
412
  signing_key: