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
c3b102e0
Commit
c3b102e0
authored
May 17, 2021
by
Luis Mejia
Committed by
Albert Salim
May 19, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add specs for danger plugin
parent
e2da6a8b
Changes
3
Show 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 @
c3b102e0
...
...
@@ -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 @
c3b102e0
# 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 @
c3b102e0
...
...
@@ -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