@@ -7,6 +7,8 @@ struct BadgeRef {
77 appveyor_attributes : HashMap < String , String > ,
88 travis_ci : Badge ,
99 travis_ci_attributes : HashMap < String , String > ,
10+ github : Badge ,
11+ github_attributes : HashMap < String , String > ,
1012 gitlab : Badge ,
1113 gitlab_attributes : HashMap < String , String > ,
1214 azure_devops : Badge ,
@@ -76,6 +78,14 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
7678 badge_attributes_travis_ci. insert ( String :: from ( "branch" ) , String :: from ( "beta" ) ) ;
7779 badge_attributes_travis_ci. insert ( String :: from ( "repository" ) , String :: from ( "rust-lang/rust" ) ) ;
7880
81+ let github = Badge :: GitHub {
82+ repository : String :: from ( "rust-lang/rust" ) ,
83+ workflow : String :: from ( "build" ) ,
84+ } ;
85+ let mut badge_attributes_github = HashMap :: new ( ) ;
86+ badge_attributes_github. insert ( String :: from ( "repository" ) , String :: from ( "rust-lang/rust" ) ) ;
87+ badge_attributes_github. insert ( String :: from ( "workflow" ) , String :: from ( "build" ) ) ;
88+
7989 let gitlab = Badge :: GitLab {
8090 branch : Some ( String :: from ( "beta" ) ) ,
8191 repository : String :: from ( "rust-lang/rust" ) ,
@@ -158,6 +168,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
158168 appveyor_attributes : badge_attributes_appveyor,
159169 travis_ci,
160170 travis_ci_attributes : badge_attributes_travis_ci,
171+ github,
172+ github_attributes : badge_attributes_github,
161173 gitlab,
162174 gitlab_attributes : badge_attributes_gitlab,
163175 azure_devops,
@@ -213,6 +225,17 @@ fn update_add_travis_ci() {
213225 assert_eq ! ( krate. badges( ) , vec![ test_badges. travis_ci] ) ;
214226}
215227
228+ #[ test]
229+ fn update_add_github ( ) {
230+ // Add a github badge
231+ let ( krate, test_badges) = set_up ( ) ;
232+
233+ let mut badges = HashMap :: new ( ) ;
234+ badges. insert ( String :: from ( "github" ) , test_badges. github_attributes ) ;
235+ krate. update ( & badges) ;
236+ assert_eq ! ( krate. badges( ) , vec![ test_badges. github] ) ;
237+ }
238+
216239#[ test]
217240fn update_add_gitlab ( ) {
218241 // Add a gitlab badge
@@ -432,6 +455,40 @@ fn travis_ci_required_keys() {
432455 assert_eq ! ( krate. badges( ) , vec![ ] ) ;
433456}
434457
458+ #[ test]
459+ fn github_required_keys ( ) {
460+ {
461+ // Add a github badge missing a required field
462+ let ( krate, mut test_badges) = set_up ( ) ;
463+
464+ let mut badges = HashMap :: new ( ) ;
465+
466+ // Repository is a required key
467+ test_badges. github_attributes . remove ( "repository" ) ;
468+ badges. insert ( String :: from ( "github" ) , test_badges. github_attributes ) ;
469+
470+ let invalid_badges = krate. update ( & badges) ;
471+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
472+ assert_eq ! ( invalid_badges. first( ) . unwrap( ) , "github" ) ;
473+ assert_eq ! ( krate. badges( ) , vec![ ] ) ;
474+ }
475+
476+ {
477+ let ( krate, mut test_badges) = set_up ( ) ;
478+
479+ let mut badges = HashMap :: new ( ) ;
480+
481+ // Workflow is a required key
482+ test_badges. github_attributes . remove ( "workflow" ) ;
483+ badges. insert ( String :: from ( "github" ) , test_badges. github_attributes ) ;
484+
485+ let invalid_badges = krate. update ( & badges) ;
486+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
487+ assert_eq ! ( invalid_badges. first( ) . unwrap( ) , "github" ) ;
488+ assert_eq ! ( krate. badges( ) , vec![ ] ) ;
489+ }
490+ }
491+
435492#[ test]
436493fn gitlab_required_keys ( ) {
437494 // Add a gitlab badge missing a required field
0 commit comments