danger-dangermattic 1.0.0 → 1.0.1

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: e85f01a1d938e27470bb45e542e181b976500f6ecd7753f02536e778af12b370
4
- data.tar.gz: 79ec4d88e1bb27c40a72be9b19a70a2a3200aa2eb7a68a7433849550d31f11bf
3
+ metadata.gz: 615ffb488aacbecf44a30b87c7c782d97bbf4a5104ada852ea6565d20d092ed4
4
+ data.tar.gz: f7d16f0afcd180ea5271865f091d0c33866900f3102745cb31b886b59cb8348f
5
5
  SHA512:
6
- metadata.gz: a681ba5b47937b6fe5ab6abd568954f8b5e26570e75385a9a3fa719ea6420c7bcd4dd216c90a9a431755270beec609183f161bd6a7ccf4f502af6d31793c1120
7
- data.tar.gz: a3542e84de8347a75760d8501aeac783305e5ff3c665d1209a706100c889aeb0afa959f4b80e66d166fd9c4f881c373f24155333a0a6bf27817b84ecb6b1ceac
6
+ metadata.gz: fbbd4c83b4c026dec016433abc3fbb2c8275c28aceab5863e4c39160031484550b1bc41092c74ba6786738863b43431089d2b5e02e239e95eca2ee5045c01a6f
7
+ data.tar.gz: df4b5edf15a414ead103abc8b0c0bc182baac45425170be3aea0df1186f6a233f2f401b894da1cbd3c204668be97cc43c527bd6e969fabc7ce5e1f30fb8b26d6
@@ -34,13 +34,13 @@ jobs:
34
34
  - name: "☢️ Danger PR Check"
35
35
  env:
36
36
  PR_URL: ${{ github.event.pull_request.html_url }}
37
- RUNNING_ON_FORK: ${{ github.event.pull_request.head.repo.fork }}
37
+ READ_ONLY_MODE: ${{ github.event.pull_request.head.repo.fork || github.actor == 'dependabot[bot]' }}
38
38
  REMOVE_PREVIOUS_COMMENTS: ${{ inputs.remove-previous-comments }}
39
- DANGER_GITHUB_API_TOKEN: ${{ secrets.github-token }}
39
+ DANGER_GITHUB_API_TOKEN: ${{ secrets.github-token || secrets.GITHUB_TOKEN }}
40
40
  run: |
41
41
  echo "--- 🏃 Running Danger: PR Check"
42
42
 
43
- if [ "$RUNNING_ON_FORK" = true ]; then
43
+ if [ "$READ_ONLY_MODE" = true ]; then
44
44
  danger_output=$(bundle exec danger pr "$PR_URL" --verbose)
45
45
 
46
46
  echo "$danger_output"
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ---
4
4
 
5
+ ## 1.0.1
6
+
7
+ ### Bug Fixes
8
+
9
+ - Fix `tracks_checker` plugin so that only additions / removals in a diff are considered in the check, therefore not including the context parts of the diff.
10
+
5
11
  ## 1.0.0
6
12
 
7
- After some time being developed and tested across a few repositories, this is our first stable release.
13
+ - After some time being developed and tested across a few repositories, this is our first stable release.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-dangermattic (0.0.1)
4
+ danger-dangermattic (1.0.1)
5
5
  danger (~> 9.4)
6
6
  danger-junit (~> 1.0)
7
7
  danger-plugin-api (~> 1.0)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dangermattic
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.1'
5
5
  end
@@ -81,9 +81,11 @@ module Danger
81
81
  #
82
82
  # @param files [Array<String>] List of file names to check
83
83
  # @param line_matcher [Proc] A callable that takes a line and returns true if it matches the desired pattern
84
- # @param change_type [Symbol, nil] Change type to filter lines (e.g., :added, :removed) or nil for no filter
84
+ # @param change_type [Symbol, Array<Symbol>, nil] Change type(s) to filter lines (e.g., `:added`, `:removed`,
85
+ # `:context`, `[:added, :removed]`, …), or nil for no filter
85
86
  # @return [Array<MatchedData>] Array of MatchedData objects representing matched lines in files
86
87
  def matching_lines_in_diff_files(files:, line_matcher:, change_type: nil)
88
+ change_types = Array(change_type).map(&:to_sym)
87
89
  matched_data = []
88
90
 
89
91
  files.each do |file|
@@ -92,7 +94,7 @@ module Danger
92
94
  diff = danger.git.diff_for_file(file)
93
95
 
94
96
  diff.patch.each_line do |line|
95
- matched_lines << line if line_matcher.call(line) && (change_type.nil? || change_type(diff_line: line) == change_type)
97
+ matched_lines << line if line_matcher.call(line) && (change_type.nil? || change_types.include?(change_type(diff_line: line)))
96
98
  end
97
99
 
98
100
  matched_data << MatchedData.new(file, matched_lines) unless matched_lines.empty?
@@ -63,7 +63,7 @@ module Danger
63
63
  matched_lines = git_utils.matching_lines_in_diff_files(
64
64
  files: git_utils.all_changed_files,
65
65
  line_matcher: ->(line) { tracks_usage_matchers.any? { |tracks_usage_match| line.match(tracks_usage_match) } },
66
- change_type: nil
66
+ change_type: %i[added removed]
67
67
  )
68
68
 
69
69
  !matched_lines.empty?
@@ -68,7 +68,7 @@ module Danger
68
68
  it 'does nothing when there are no changes in Tracks-related files' do
69
69
  modified_files = ['MyClass.swift']
70
70
  allow(@plugin.git_utils).to receive(:all_changed_files).and_return(modified_files)
71
- allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: nil).and_return([])
71
+ allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: %i[added removed]).and_return([])
72
72
 
73
73
  @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: nil)
74
74
 
@@ -83,12 +83,7 @@ module Danger
83
83
  modified_files = ['MyClass.kt']
84
84
  allow(@plugin.git_utils).to receive(:all_changed_files).and_return(modified_files)
85
85
 
86
- allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: nil) do |args|
87
- analytics_call_in_diff = '- AnalyticsTracker.track("myEvent1")'
88
- expect(args[:line_matcher].call(analytics_call_in_diff)).to be true
89
-
90
- [analytics_call_in_diff]
91
- end
86
+ allow_diff_match(modified_files: modified_files, diff_line: '- AnalyticsTracker.track("myEvent1")', expect_match: true)
92
87
 
93
88
  @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: tracks_label)
94
89
 
@@ -99,12 +94,7 @@ module Danger
99
94
  modified_files = ['MyClass.kt']
100
95
  allow(@plugin.git_utils).to receive(:all_changed_files).and_return(modified_files)
101
96
 
102
- allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: nil) do |args|
103
- analytics_call_in_diff = '- AnalyticsTracker.track("evento")'
104
- expect(args[:line_matcher].call(analytics_call_in_diff)).to be true
105
-
106
- [analytics_call_in_diff]
107
- end
97
+ allow_diff_match(modified_files: modified_files, diff_line: '+ AnalyticsTracker.track("evento")', expect_match: true)
108
98
 
109
99
  @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: nil)
110
100
 
@@ -116,12 +106,7 @@ module Danger
116
106
  modified_files = ['MyClass.kt']
117
107
  allow(@plugin.git_utils).to receive(:all_changed_files).and_return(modified_files)
118
108
 
119
- allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: nil) do |args|
120
- analytics_call_in_diff = '- AnalyticsTracker.track("myEvent1")'
121
- expect(args[:line_matcher].call(analytics_call_in_diff)).to be true
122
-
123
- [analytics_call_in_diff]
124
- end
109
+ allow_diff_match(modified_files: modified_files, diff_line: '- AnalyticsTracker.track("evento")', expect_match: true)
125
110
 
126
111
  tracks_label = 'TRACKS PR'
127
112
  @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: tracks_label)
@@ -133,12 +118,34 @@ module Danger
133
118
  modified_files = ['MyClass.kt']
134
119
  allow(@plugin.git_utils).to receive(:all_changed_files).and_return(modified_files)
135
120
 
136
- allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: nil) do |args|
137
- analytics_call_in_diff = '+ AnalyticsHelper.log("event_1")'
138
- expect(args[:line_matcher].call(analytics_call_in_diff)).to be false
121
+ allow_diff_match(modified_files: modified_files, diff_line: '- AnalyticsHelper.log("event_1")', expect_match: false)
122
+
123
+ @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: nil)
124
+
125
+ expect(@dangerfile).to not_report
126
+ end
127
+
128
+ it 'does nothing when there are matching changes but in the context parts of the diff' do
129
+ modified_file = 'MyClass.kt'
130
+ allow(@plugin.git_utils).to receive(:all_changed_files).and_return([modified_file])
131
+
132
+ tracks_diff = <<~STRINGS
133
+ diff --git a/MyClass.kt b/MyClass.kt
134
+ index 5794d472..772e2b99 100644
135
+ - a/MyClass
136
+ + b/MyClass
137
+ @@ -1,3 +1,6 @@
138
+ AnalyticsTracker.track("myMagicEvent1")
139
+ // call magic
140
+ + AnalyticsHelper.log("event_1")
141
+ + AnalyticsHelper.log("event_2")
142
+ + AnotherUtil.callMagic()
143
+ AnalyticsTracker.track("myMagicEvent2")
144
+ STRINGS
139
145
 
140
- []
141
- end
146
+ diff = GitDiffStruct.new('modified', modified_file, tracks_diff)
147
+
148
+ allow(@plugin.git).to receive(:diff_for_file).with(modified_file).and_return(diff)
142
149
 
143
150
  @plugin.check_tracks_changes(tracks_files: track_files, tracks_usage_matchers: tracks_matchers, tracks_label: nil)
144
151
 
@@ -147,6 +154,17 @@ module Danger
147
154
  end
148
155
  end
149
156
 
157
+ def allow_diff_match(modified_files:, diff_line:, expect_match:)
158
+ allow(@plugin.git_utils).to receive(:matching_lines_in_diff_files).with(files: modified_files, line_matcher: kind_of(Proc), change_type: %i[added removed]) do |args|
159
+ expect(args[:line_matcher].call(diff_line)).to be expect_match
160
+
161
+ result = []
162
+ result.append(diff_line) if expect_match
163
+
164
+ result
165
+ end
166
+ end
167
+
150
168
  def expect_label_checks(tracks_label)
151
169
  expect(@dangerfile.status_report[:messages]).to eq [TracksChecker::TRACKS_PR_INSTRUCTIONS + format(TracksChecker::TRACKS_NO_LABEL_INSTRUCTION_FORMAT, tracks_label)]
152
170
  expect(@dangerfile.status_report[:errors]).to eq [format(TracksChecker::TRACKS_NO_LABEL_MESSAGE_FORMAT, tracks_label)]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-dangermattic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Automattic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger