Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
f3d0315e
Commit
f3d0315e
authored
May 17, 2021
by
Luis Mejia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add specs for danger plugin
parent
f50b767a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
13 deletions
+163
-13
danger/product_intelligence/Dangerfile
danger/product_intelligence/Dangerfile
+7
-3
spec/tooling/danger/product_intelligence_spec.rb
spec/tooling/danger/product_intelligence_spec.rb
+147
-0
tooling/danger/product_intelligence.rb
tooling/danger/product_intelligence.rb
+9
-10
No files found.
danger/product_intelligence/Dangerfile
View file @
f3d0315e
...
...
@@ -18,12 +18,16 @@ UPDATE_DICTIONARY_MESSAGE = <<~MSG
```
MSG
all_changed_files
=
helper
.
all_changed_files
# exit if not matching files
matching_changed_files
=
product_intelligence
.
matching_changed_files
return
unless
matching_changed_files
.
any?
warn
format
(
CHANGED_FILES_MESSAGE
,
changed_files:
helper
.
markdown_list
(
matching_changed_files
))
fail
format
(
UPDATE_DICTIONARY_MESSAGE
)
if
product_intelligence
.
dictionary_changes_empty
?
fail
format
(
UPDATE_DICTIONARY_MESSAGE
)
if
product_intelligence
.
need_dictionary_changes
?
product_intelligence
.
add_missing_labels
labels
=
product_intelligence
.
missing_labels
return
unless
labels
.
any?
gitlab
.
api
.
update_merge_request
(
gitlab
.
mr_json
[
'project_id'
],
gitlab
.
mr_json
[
'iid'
],
add_labels:
labels
)
spec/tooling/danger/product_intelligence_spec.rb
0 → 100644
View file @
f3d0315e
# frozen_string_literal: true
require
'gitlab-dangerfiles'
require
'gitlab/dangerfiles/spec_helper'
require_relative
'../../../tooling/danger/product_intelligence'
require_relative
'../../../tooling/danger/project_helper'
RSpec
.
describe
Tooling
::
Danger
::
ProductIntelligence
do
include_context
"with dangerfile"
subject
(
:product_intelligence
)
{
fake_danger
.
new
(
helper:
fake_helper
)
}
let
(
:fake_danger
)
{
DangerSpecHelper
.
fake_danger
.
include
(
described_class
)
}
let
(
:changed_files
)
{
[
'metrics/counts_7d/test_metric.yml'
,
'doc/development/usage_ping/dictionary.md'
]
}
let
(
:changed_lines
)
{
[
'+tier: ee'
]
}
before
do
allow
(
fake_helper
).
to
receive
(
:all_changed_files
).
and_return
(
changed_files
)
allow
(
fake_helper
).
to
receive
(
:changed_lines
).
and_return
(
changed_lines
)
end
describe
'#need_dictionary_changes?'
do
subject
{
product_intelligence
.
need_dictionary_changes?
}
context
'when changed files do not contain dictionary changes'
do
let
(
:changed_files
)
{
[
'config/metrics/counts_7d/test_metric.yml'
]
}
it
{
is_expected
.
to
be
true
}
end
context
'when changed files already contains dictionary changes'
do
let
(
:changed_files
)
{
[
'doc/development/usage_ping/dictionary.md'
]
}
it
{
is_expected
.
to
be
false
}
end
end
describe
'#missing_labels'
do
subject
{
product_intelligence
.
missing_labels
}
let
(
:ci_env
)
{
true
}
before
do
allow
(
fake_helper
).
to
receive
(
:mr_has_labels?
).
and_return
(
false
)
allow
(
fake_helper
).
to
receive
(
:ci?
).
and_return
(
ci_env
)
end
context
'with ci? false'
do
let
(
:ci_env
)
{
false
}
it
{
is_expected
.
to
be_empty
}
end
context
'with ci? true'
do
let
(
:expected_labels
)
{
[
'product intelligence'
,
'product intelligence::review pending'
]
}
it
{
is_expected
.
to
match_array
(
expected_labels
)
}
end
context
'with product intelligence label'
do
let
(
:expected_labels
)
{
[
'product intelligence::review pending'
]
}
before
do
allow
(
fake_helper
).
to
receive
(
:mr_has_labels?
).
with
(
'product intelligence'
).
and_return
(
true
)
end
it
{
is_expected
.
to
match_array
(
expected_labels
)
}
end
context
'with product intelligence::review pending'
do
before
do
allow
(
fake_helper
).
to
receive
(
:mr_has_labels?
).
and_return
(
true
)
end
it
{
is_expected
.
to
be_empty
}
end
end
describe
'#matching_changed_files'
do
subject
{
product_intelligence
.
matching_changed_files
}
let
(
:changed_files
)
do
[
'dashboard/todos_controller.rb'
,
'components/welcome.vue'
,
'admin/groups/_form.html.haml'
]
end
context
'with snowplow files changed'
do
context
'when vue file changed'
do
let
(
:changed_lines
)
{
[
'+data-track-event'
]
}
it
{
is_expected
.
to
match_array
([
'components/welcome.vue'
])
}
end
context
'when haml file changed'
do
let
(
:changed_lines
)
{
[
'+ data: { track_label:'
]
}
it
{
is_expected
.
to
match_array
([
'admin/groups/_form.html.haml'
])
}
end
context
'when ruby file changed'
do
let
(
:changed_lines
)
{
[
'+ Gitlab::Tracking.event'
]
}
it
{
is_expected
.
to
match_array
([
'dashboard/todos_controller.rb'
,
'components/welcome.vue'
])
}
end
end
context
'with dictonary file not changed'
do
it
{
is_expected
.
to
be_empty
}
end
context
'with metrics files not changed'
do
it
{
is_expected
.
to
be_empty
}
end
context
'with metrics files not changed'
do
it
{
is_expected
.
to
be_empty
}
end
context
'with tracking files changed'
do
let
(
:changed_files
)
do
[
'lib/gitlab/tracking.rb'
,
'spec/lib/gitlab/tracking_spec.rb'
,
'app/helpers/tracking_helper.rb'
]
end
it
{
is_expected
.
to
match_array
(
changed_files
)
}
end
context
'with usage_data files changed'
do
let
(
:changed_files
)
do
[
'doc/api/usage_data.md'
,
'ee/lib/ee/gitlab/usage_data.rb'
,
'spec/lib/gitlab/usage_data_spec.rb'
]
end
it
{
is_expected
.
to
match_array
(
changed_files
)
}
end
end
end
tooling/danger/product_intelligence.rb
View file @
f3d0315e
...
...
@@ -24,34 +24,33 @@ module Tooling
'config/metrics/schema.json'
].
freeze
def
add_
missing_labels
return
unless
helper
.
ci?
def
missing_labels
return
[]
unless
helper
.
ci?
labels
=
[]
labels
<<
'product intelligence'
unless
helper
.
mr_has_labels?
(
'product intelligence'
)
labels
<<
'product intelligence::review pending'
unless
helper
.
mr_has_labels?
(
WORKFLOW_LABELS
)
return
unless
labels
.
any?
gitlab
.
api
.
update_merge_request
(
gitlab
.
mr_json
[
'project_id'
],
gitlab
.
mr_json
[
'iid'
],
add_labels:
labels
)
labels
end
def
matching_changed_files
(
all_changed_files
)
def
matching_changed_files
tracking_changed_files
=
all_changed_files
&
TRACKING_FILES
usage_data_changed_files
=
all_changed_files
.
grep
(
%r{(usage_data)}
)
usage_data_changed_files
+
tracking_changed_files
+
metrics_changed_files
+
dictionary_changed_file
+
snowplow_changed_files
end
def
dictionary_changes_empty
?
def
need_dictionary_changes
?
required_dictionary_update_changed_files
.
any?
&&
dictionary_changed_file
.
empty?
end
private
def
all_changed_files
helper
.
all_changed_files
end
def
dictionary_changed_file
all_changed_files
.
grep
(
%r{(doc/development/usage_ping/dictionary.md)}
)
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment