Skip to content

Commit 05b1399

Browse files
committed
Auto merge of #1934 - delan:delan/Bitbucket-Pipelines-badges, r=carols10cents
add support for Bitbucket Pipelines badges (Shields.io) - based on #1782 - [link in screenshot](https://bitbucket.org/delan/nonymous/addon/pipelines/home#!/results/branch/branch%2Fname%2Fwith%2Fslashes/page/1) ![screenshot](https://user-images.githubusercontent.com/465303/70138734-0545be00-16e5-11ea-9de2-3c726843f9ed.png)
2 parents ca965ce + 79f15b4 commit 05b1399

File tree

4 files changed

+72
-0
lines changed

4 files changed

+72
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { computed } from '@ember/object';
2+
import { alias } from '@ember/object/computed';
3+
import Component from '@ember/component';
4+
5+
export default Component.extend({
6+
tagName: 'span',
7+
classNames: ['badge'],
8+
repository: alias('badge.attributes.repository'),
9+
branch: computed('badge.attributes.branch', function() {
10+
return encodeURIComponent(this.get('badge.attributes.branch'));
11+
}),
12+
text: computed('badge.attributes.branch', function() {
13+
const branch = this.get('badge.attributes.branch');
14+
return `Bitbucket Pipelines build status for the ${branch} branch`;
15+
}),
16+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<a href="https://bitbucket.org/{{ repository }}/addon/pipelines/home#!/results/branch/{{ branch }}/page/1">
2+
<img
3+
src="https://img.shields.io/bitbucket/pipelines/{{ repository }}/{{ branch }}"
4+
alt="{{ text }}"
5+
title="{{ text }}">
6+
</a>

src/models/badge.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ pub enum Badge {
6868
branch: Option<String>,
6969
service: Option<String>,
7070
},
71+
BitbucketPipelines {
72+
repository: String,
73+
branch: String,
74+
},
7175
Maintenance {
7276
status: MaintenanceStatus,
7377
},

src/tests/badge.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ struct BadgeRef {
2323
circle_ci_attributes: HashMap<String, String>,
2424
cirrus_ci: Badge,
2525
cirrus_ci_attributes: HashMap<String, String>,
26+
bitbucket_pipelines: Badge,
27+
bitbucket_pipelines_attributes: HashMap<String, String>,
2628
maintenance: Badge,
2729
maintenance_attributes: HashMap<String, String>,
2830
}
@@ -144,6 +146,15 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
144146
badge_attributes_cirrus_ci.insert(String::from("branch"), String::from("beta"));
145147
badge_attributes_cirrus_ci.insert(String::from("repository"), String::from("rust-lang/rust"));
146148

149+
let bitbucket_pipelines = Badge::BitbucketPipelines {
150+
repository: String::from("rust-lang/rust"),
151+
branch: String::from("beta"),
152+
};
153+
let mut badge_attributes_bitbucket_pipelines = HashMap::new();
154+
badge_attributes_bitbucket_pipelines
155+
.insert(String::from("repository"), String::from("rust-lang/rust"));
156+
badge_attributes_bitbucket_pipelines.insert(String::from("branch"), String::from("beta"));
157+
147158
let maintenance = Badge::Maintenance {
148159
status: MaintenanceStatus::LookingForMaintainer,
149160
};
@@ -175,6 +186,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
175186
circle_ci_attributes: badge_attributes_circle_ci,
176187
cirrus_ci,
177188
cirrus_ci_attributes: badge_attributes_cirrus_ci,
189+
bitbucket_pipelines,
190+
bitbucket_pipelines_attributes: badge_attributes_bitbucket_pipelines,
178191
maintenance,
179192
maintenance_attributes,
180193
};
@@ -313,6 +326,20 @@ fn update_add_cirrus_ci() {
313326
assert_eq!(krate.badges(), vec![test_badges.cirrus_ci]);
314327
}
315328

329+
#[test]
330+
fn update_add_bitbucket_pipelines() {
331+
// Add a Bitbucket Pipelines badge
332+
let (krate, test_badges) = set_up();
333+
334+
let mut badges = HashMap::new();
335+
badges.insert(
336+
String::from("bitbucket-pipelines"),
337+
test_badges.bitbucket_pipelines_attributes,
338+
);
339+
krate.update(&badges);
340+
assert_eq!(krate.badges(), vec![test_badges.bitbucket_pipelines]);
341+
}
342+
316343
#[test]
317344
fn update_add_maintenance() {
318345
// Add a maintenance badge
@@ -587,6 +614,25 @@ fn cirrus_ci_required_keys() {
587614
assert_eq!(krate.badges(), vec![]);
588615
}
589616

617+
#[test]
618+
fn bitbucket_pipelines_required_keys() {
619+
// Add a Bitbucket Pipelines badge missing a required field
620+
let (krate, test_badges) = set_up();
621+
622+
for required in &["repository", "branch"] {
623+
let mut attributes = test_badges.bitbucket_pipelines_attributes.clone();
624+
attributes.remove(*required);
625+
626+
let mut badges = HashMap::new();
627+
badges.insert(String::from("bitbucket-pipelines"), attributes);
628+
629+
let invalid_badges = krate.update(&badges);
630+
assert_eq!(invalid_badges.len(), 1);
631+
assert_eq!(invalid_badges.first().unwrap(), "bitbucket-pipelines");
632+
assert_eq!(krate.badges(), vec![]);
633+
}
634+
}
635+
590636
#[test]
591637
fn maintenance_required_keys() {
592638
// Add a maintenance badge missing a required field

0 commit comments

Comments
 (0)