Skip to content

Commit f3127bb

Browse files
committed
Auto merge of #1782 - jonhoo:cirrus-ci-badge, r=sgrif
Support Cirrus CI badges Upstream API: https://cirrus-ci.org/guide/writing-tasks/#embedded-badges Modeled after #807.
2 parents 2a036e5 + a7c8fc7 commit f3127bb

File tree

4 files changed

+65
-0
lines changed

4 files changed

+65
-0
lines changed

app/components/badge-cirrus-ci.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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') || 'master');
11+
}),
12+
text: computed('branch', function() {
13+
return `Cirrus CI build status for the ${this.branch} branch`;
14+
}),
15+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<a href="https://cirrus-ci.com/github/{{ repository }}">
2+
<img
3+
src="https://api.cirrus-ci.com/github/{{ repository }}.svg?branch={{ 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
@@ -48,6 +48,10 @@ pub enum Badge {
4848
repository: String,
4949
branch: Option<String>,
5050
},
51+
CirrusCi {
52+
repository: String,
53+
branch: Option<String>,
54+
},
5155
IsItMaintainedIssueResolution {
5256
repository: String,
5357
},

src/tests/badge.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ struct BadgeRef {
2121
coveralls_attributes: HashMap<String, String>,
2222
circle_ci: Badge,
2323
circle_ci_attributes: HashMap<String, String>,
24+
cirrus_ci: Badge,
25+
cirrus_ci_attributes: HashMap<String, String>,
2426
maintenance: Badge,
2527
maintenance_attributes: HashMap<String, String>,
2628
}
@@ -134,6 +136,14 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
134136
badge_attributes_circle_ci.insert(String::from("branch"), String::from("beta"));
135137
badge_attributes_circle_ci.insert(String::from("repository"), String::from("rust-lang/rust"));
136138

139+
let cirrus_ci = Badge::CirrusCi {
140+
repository: String::from("rust-lang/rust"),
141+
branch: Some(String::from("beta")),
142+
};
143+
let mut badge_attributes_cirrus_ci = HashMap::new();
144+
badge_attributes_cirrus_ci.insert(String::from("branch"), String::from("beta"));
145+
badge_attributes_cirrus_ci.insert(String::from("repository"), String::from("rust-lang/rust"));
146+
137147
let maintenance = Badge::Maintenance {
138148
status: MaintenanceStatus::LookingForMaintainer,
139149
};
@@ -163,6 +173,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
163173
coveralls_attributes: badge_attributes_coveralls,
164174
circle_ci,
165175
circle_ci_attributes: badge_attributes_circle_ci,
176+
cirrus_ci,
177+
cirrus_ci_attributes: badge_attributes_cirrus_ci,
166178
maintenance,
167179
maintenance_attributes,
168180
};
@@ -290,6 +302,17 @@ fn update_add_circle_ci() {
290302
assert_eq!(krate.badges(), vec![test_badges.circle_ci]);
291303
}
292304

305+
#[test]
306+
fn update_add_cirrus_ci() {
307+
// Add a Cirrus CI badge
308+
let (krate, test_badges) = set_up();
309+
310+
let mut badges = HashMap::new();
311+
badges.insert(String::from("cirrus-ci"), test_badges.cirrus_ci_attributes);
312+
krate.update(&badges);
313+
assert_eq!(krate.badges(), vec![test_badges.cirrus_ci]);
314+
}
315+
293316
#[test]
294317
fn update_add_maintenance() {
295318
// Add a maintenance badge
@@ -547,6 +570,23 @@ fn circle_ci_required_keys() {
547570
assert_eq!(krate.badges(), vec![]);
548571
}
549572

573+
#[test]
574+
fn cirrus_ci_required_keys() {
575+
// Add a Cirrus CI badge missing a required field
576+
let (krate, mut test_badges) = set_up();
577+
578+
let mut badges = HashMap::new();
579+
580+
// Repository is a required key
581+
test_badges.cirrus_ci_attributes.remove("repository");
582+
badges.insert(String::from("cirrus-ci"), test_badges.cirrus_ci_attributes);
583+
584+
let invalid_badges = krate.update(&badges);
585+
assert_eq!(invalid_badges.len(), 1);
586+
assert_eq!(invalid_badges.first().unwrap(), "cirrus-ci");
587+
assert_eq!(krate.badges(), vec![]);
588+
}
589+
550590
#[test]
551591
fn maintenance_required_keys() {
552592
// Add a maintenance badge missing a required field

0 commit comments

Comments
 (0)