rspec_profiling 0.0.8 → 0.0.9

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1395be18ece44c2dcfededac3437d6dc6513a5d66cd08eed8d2cfaaff03aad0e
4
- data.tar.gz: 01a97ea2671d1154469a611142528cdd4778d70561f4c403382b89f332a107e8
3
+ metadata.gz: d9b5f4ed5db1ef327545a3609ecaa955c0e9c438842c36c2efd1f0c5fdcf6753
4
+ data.tar.gz: 4012c683e52eb5ae99766d904b9b89fea1c5163c88aaf353f70ed8faa2c3e592
5
5
  SHA512:
6
- metadata.gz: f2aa36663dd1bbb6e121ee3282fa4595aea9775e266c6cf8e3926c9e9338a9ff94891a0792d64aae9c6222673cd003414d1d35bf38e59ae2c79086f76977ee5a
7
- data.tar.gz: 9d06c7160f4b0fb634c2c2719ef63fe428fc5a71171d42885c2bd5598fa7c8a33f37ea9cb92165f84b7d8637d4bec8f64b2025224116270dbbff8bfa4662698e
6
+ metadata.gz: 428016ee95be0dd84792839f468d1da94dba1e17dd02197c3b077b7fc486457d9c67a763bba11b8a25802e834f34d9a7fef9713b04e4ec6099ceb944062f3989
7
+ data.tar.gz: 3b6f6731030a443fe2bc3860f4ac1c8a9a9d91818b147a1867ed898e39004fc434e04b1eab0e3f353493ef76b1bdd7c1dc8f8512777a3bf31c8b2f3c2e8de35b
@@ -6,35 +6,38 @@ on:
6
6
  branches: [main]
7
7
  workflow_dispatch: # allow manual deployment through GitHub Action UI
8
8
  jobs:
9
- release:
9
+ version-check:
10
10
  runs-on: ubuntu-latest
11
11
  if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
12
+ outputs:
13
+ changed: ${{ steps.check.outputs.any_changed }}
12
14
  steps:
13
15
  - uses: actions/checkout@v4
14
- - name: Version file changed
15
- id: version-file-changed
16
+ - name: Check if version has been updated
17
+ id: check
16
18
  uses: tj-actions/changed-files@v42
17
19
  with:
18
20
  files: lib/rspec_profiling/version.rb
21
+ release:
22
+ runs-on: ubuntu-latest
23
+ needs: version-check
24
+ if: ${{ github.event_name == 'workflow_dispatch' || needs.version-check.outputs.changed == 'true' }}
25
+ steps:
26
+ - uses: actions/checkout@v4
19
27
  - name: Set up Ruby
20
- if: ${{ github.event_name == 'workflow_dispatch' || steps.version-file-changed.outputs.any_changed == 'true' }}
21
28
  uses: ruby/setup-ruby@v1
22
29
  with:
23
30
  ruby-version: 3.2
24
31
  bundler-cache: true
25
32
  - name: Installing dependencies
26
- if: ${{ github.event_name == 'workflow_dispatch' || steps.version-file-changed.outputs.any_changed == 'true' }}
27
- run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
33
+ run: bundle install
28
34
  - name: Build gem file
29
- if: ${{ github.event_name == 'workflow_dispatch' || steps.version-file-changed.outputs.any_changed == 'true' }}
30
35
  run: bundle exec rake build
31
36
  - uses: fac/ruby-gem-setup-credentials-action@v2
32
- if: ${{ github.event_name == 'workflow_dispatch' || steps.version-file-changed.outputs.any_changed == 'true' }}
33
37
  with:
34
38
  user: ""
35
39
  key: rubygems
36
40
  token: ${{secrets.RUBY_GEMS_API_KEY}}
37
41
  - uses: fac/ruby-gem-push-action@v2
38
- if: ${{ github.event_name == 'workflow_dispatch' || steps.version-file-changed.outputs.any_changed == 'true' }}
39
42
  with:
40
43
  key: rubygems
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## 0.0.9
2
+
3
+ * feat: Add support for ownership tagging via magic comment [#10]
4
+ * chore: simplify release Github Action [#9]
5
+
6
+ ## 0.0.8
7
+
8
+ * chore: add badges to README and add gemspec metadata [#6]
9
+ * chore: setup local development [#3]
10
+ * chore: upgrade ruby [#4]
11
+ * chore: standardize repository for procore open-source[#2]
12
+
13
+ ## 0.0.7
14
+
15
+ * Migrate to procore-oss/rspec_profiling repo [#1]
16
+
1
17
  ## 0.0.6
2
18
 
3
19
  * Create indexes for DB collectors [#26]
data/README.md CHANGED
@@ -87,6 +87,18 @@ RspecProfiling.configure do |config|
87
87
  end
88
88
  ```
89
89
 
90
+ #### Custom Ownership Tracking
91
+
92
+ If the repo you are running the profiler on has many teams working on it, you can use the `magic_comment` option to specify a comment at the top of files to scan for ownership tracking. In the example below,
93
+ the profiler will look for `#team: <owner>` comments at the top of each file and add <owner> to the results.
94
+ The default is `team` but can be configured to any comment you want.
95
+
96
+ ```Ruby
97
+ RspecProfiling.configure do |config|
98
+ config.magic_comment = 'team'
99
+ end
100
+ ```
101
+
90
102
  #### Custom Event Subscriptions
91
103
 
92
104
  ```Ruby
@@ -204,6 +216,7 @@ end
204
216
  - `table_name` - the database table name in which results are stored
205
217
  - `csv_path` - the directory in which CSV files are dumped
206
218
  - `collector` - collector to use
219
+ - `magic_comment` - comment to scan top of files to enable ownership tracking (EX: `#team: tooling`)
207
220
 
208
221
  ### Usage in a script
209
222
 
@@ -10,6 +10,7 @@ module RspecProfiling
10
10
  date
11
11
  file
12
12
  line_number
13
+ owner_tag
13
14
  description
14
15
  status
15
16
  exception
@@ -8,6 +8,7 @@ module RspecProfiling
8
8
  date
9
9
  file
10
10
  line_number
11
+ owner_tag
11
12
  description
12
13
  status
13
14
  exception
@@ -9,6 +9,7 @@ module RspecProfiling
9
9
  vcs: RspecProfiling::VCS::Git,
10
10
  table_name: 'spec_profiling_results',
11
11
  events: [],
12
+ magic_comment: 'team',
12
13
  additional_data: {}
13
14
  })
14
15
  end
@@ -1,4 +1,9 @@
1
1
  require "benchmark"
2
+ require "rspec_profiling/vcs/git"
3
+ require "rspec_profiling/vcs/svn"
4
+ require "rspec_profiling/vcs/git_svn"
5
+ require "rspec_profiling/collectors/csv"
6
+ require "rspec_profiling/collectors/json"
2
7
 
3
8
  module RspecProfiling
4
9
  class Example
@@ -50,6 +55,10 @@ module RspecProfiling
50
55
  execution_result.run_time
51
56
  end
52
57
 
58
+ def owner_tag
59
+ ownership_for_file(metadata[:file_path])
60
+ end
61
+
53
62
  def query_count
54
63
  counts[:query_count]
55
64
  end
@@ -112,5 +121,32 @@ module RspecProfiling
112
121
  def verbose_record_event?(event_name)
113
122
  metadata[:record_events].to_a.include?(event_name)
114
123
  end
124
+
125
+ def ownership_for_file(file_path)
126
+ return nil if RspecProfiling.config.magic_comment.empty?
127
+ ownership_regex = /(^#\s*#{RspecProfiling.config.magic_comment}:\s*)\K(?<#{RspecProfiling.config.magic_comment}>.*$)/.freeze
128
+ comments = top_comments_from_file(file_path)
129
+ matching_line = comments.detect { |line| line.match?(ownership_regex) }
130
+ extract_ownership(matching_line, ownership_regex) if matching_line
131
+ end
132
+
133
+ def top_comments_from_file(file_path)
134
+ with_file(file_path) do |f|
135
+ f.take_while { |line| line.start_with?('#', "\n") }
136
+ end
137
+ end
138
+
139
+ def with_file(file_path)
140
+ if File.exist?(file_path)
141
+ File.open(file_path)
142
+ else
143
+ puts "File not found: #{file_path}"
144
+ []
145
+ end
146
+ end
147
+
148
+ def extract_ownership(matching_line, regex)
149
+ matching_line.match(regex)[RspecProfiling.config.magic_comment.to_sym]
150
+ end
115
151
  end
116
152
  end
@@ -42,6 +42,7 @@ module RspecProfiling
42
42
  status: @current_example.status,
43
43
  exception: @current_example.exception,
44
44
  time: @current_example.time,
45
+ owner_tag: @current_example.owner_tag,
45
46
  query_count: @current_example.query_count,
46
47
  query_time: @current_example.query_time,
47
48
  request_count: @current_example.request_count,
@@ -1,3 +1,3 @@
1
1
  module RspecProfiling
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_profiling
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Procore Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-23 00:00:00.000000000 Z
11
+ date: 2024-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord