@@ -7,6 +7,8 @@ struct BadgeRef {
7
7
appveyor_attributes : HashMap < String , String > ,
8
8
travis_ci : Badge ,
9
9
travis_ci_attributes : HashMap < String , String > ,
10
+ github_actions : Badge ,
11
+ github_actions_attributes : HashMap < String , String > ,
10
12
gitlab : Badge ,
11
13
gitlab_attributes : HashMap < String , String > ,
12
14
azure_devops : Badge ,
@@ -76,6 +78,15 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
76
78
badge_attributes_travis_ci. insert ( String :: from ( "branch" ) , String :: from ( "beta" ) ) ;
77
79
badge_attributes_travis_ci. insert ( String :: from ( "repository" ) , String :: from ( "rust-lang/rust" ) ) ;
78
80
81
+ let github_actions = Badge :: GitHubActions {
82
+ repository : String :: from ( "rust-lang/rust" ) ,
83
+ workflow : String :: from ( "build" ) ,
84
+ } ;
85
+ let mut badge_attributes_github_actions = HashMap :: new ( ) ;
86
+ badge_attributes_github_actions
87
+ . insert ( String :: from ( "repository" ) , String :: from ( "rust-lang/rust" ) ) ;
88
+ badge_attributes_github_actions. insert ( String :: from ( "workflow" ) , String :: from ( "build" ) ) ;
89
+
79
90
let gitlab = Badge :: GitLab {
80
91
branch : Some ( String :: from ( "beta" ) ) ,
81
92
repository : String :: from ( "rust-lang/rust" ) ,
@@ -158,6 +169,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
158
169
appveyor_attributes : badge_attributes_appveyor,
159
170
travis_ci,
160
171
travis_ci_attributes : badge_attributes_travis_ci,
172
+ github_actions,
173
+ github_actions_attributes : badge_attributes_github_actions,
161
174
gitlab,
162
175
gitlab_attributes : badge_attributes_gitlab,
163
176
azure_devops,
@@ -213,6 +226,20 @@ fn update_add_travis_ci() {
213
226
assert_eq ! ( krate. badges( ) , vec![ test_badges. travis_ci] ) ;
214
227
}
215
228
229
+ #[ test]
230
+ fn update_add_github_actions ( ) {
231
+ // Add a github actions badge
232
+ let ( krate, test_badges) = set_up ( ) ;
233
+
234
+ let mut badges = HashMap :: new ( ) ;
235
+ badges. insert (
236
+ String :: from ( "github-actions" ) ,
237
+ test_badges. github_actions_attributes ,
238
+ ) ;
239
+ krate. update ( & badges) ;
240
+ assert_eq ! ( krate. badges( ) , vec![ test_badges. github_actions] ) ;
241
+ }
242
+
216
243
#[ test]
217
244
fn update_add_gitlab ( ) {
218
245
// Add a gitlab badge
@@ -432,6 +459,46 @@ fn travis_ci_required_keys() {
432
459
assert_eq ! ( krate. badges( ) , vec![ ] ) ;
433
460
}
434
461
462
+ #[ test]
463
+ fn github_actions_required_key_repository ( ) {
464
+ // Add a GitHub Actions badge missing the required repository field
465
+ let ( krate, mut test_badges) = set_up ( ) ;
466
+
467
+ let mut badges = HashMap :: new ( ) ;
468
+
469
+ // Repository is a required key
470
+ test_badges. github_actions_attributes . remove ( "repository" ) ;
471
+ badges. insert (
472
+ String :: from ( "github-actions" ) ,
473
+ test_badges. github_actions_attributes ,
474
+ ) ;
475
+
476
+ let invalid_badges = krate. update ( & badges) ;
477
+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
478
+ assert_eq ! ( invalid_badges. first( ) . unwrap( ) , "github-actions" ) ;
479
+ assert_eq ! ( krate. badges( ) , vec![ ] ) ;
480
+ }
481
+
482
+ #[ test]
483
+ fn github_actions_required_key_workflow ( ) {
484
+ // Add a GitHub Actions badge missing the required workflow field
485
+ let ( krate, mut test_badges) = set_up ( ) ;
486
+
487
+ let mut badges = HashMap :: new ( ) ;
488
+
489
+ // Workflow is a required key
490
+ test_badges. github_actions_attributes . remove ( "workflow" ) ;
491
+ badges. insert (
492
+ String :: from ( "github-actions" ) ,
493
+ test_badges. github_actions_attributes ,
494
+ ) ;
495
+
496
+ let invalid_badges = krate. update ( & badges) ;
497
+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
498
+ assert_eq ! ( invalid_badges. first( ) . unwrap( ) , "github-actions" ) ;
499
+ assert_eq ! ( krate. badges( ) , vec![ ] ) ;
500
+ }
501
+
435
502
#[ test]
436
503
fn gitlab_required_keys ( ) {
437
504
// Add a gitlab badge missing a required field
0 commit comments