@@ -18,7 +18,7 @@ pub struct URL {
18
18
}
19
19
20
20
/// Handle GitHub HTTP links
21
- fn remove_dot_git_from_url ( url : & str ) -> & str {
21
+ pub ( crate ) fn remove_dot_git_from_url ( url : & str ) -> & str {
22
22
match url. strip_suffix ( ".git" ) {
23
23
Some ( s) => s,
24
24
None => url,
@@ -42,8 +42,9 @@ fn handle_incorrect_url(mut url: &str) -> String {
42
42
43
43
/// Get repo_name field from the URL
44
44
fn get_repo_name_from_url ( url : & str ) -> String {
45
- let repo_name = url. split ( '/' ) . last ( ) . unwrap ( ) . to_string ( ) ;
46
- repo_name
45
+ let repo_name = url. split ( '/' ) . last ( ) . unwrap_or ( url) ;
46
+ let repo_name = remove_dot_git_from_url ( repo_name) ;
47
+ repo_name. to_owned ( )
47
48
}
48
49
49
50
impl URL {
@@ -71,13 +72,21 @@ impl fmt::Display for URL {
71
72
#[ cfg( test) ]
72
73
mod tests {
73
74
use super :: URL ;
75
+ use super :: remove_dot_git_from_url;
74
76
75
77
#[ test]
76
78
fn test_remote ( ) {
77
79
let u = "https://github.com/lightningd/plugins" ;
78
80
let url = URL :: new ( "/tmp/" , u, "lightningd_plugins" ) ;
79
81
assert_eq ! ( url. repo_name, "plugins" ) ;
80
82
assert_eq ! ( url. url_string, u) ;
81
- println ! ( "{}" , & url) ;
83
+ }
84
+
85
+ #[ test]
86
+ fn test_remote_git_prefix ( ) {
87
+ let u = "https://github.com/lightningd/plugins.git" ;
88
+ let url = URL :: new ( "/tmp/" , u, "lightningd_plugins" ) ;
89
+ assert_eq ! ( url. repo_name, "plugins" ) ;
90
+ assert_eq ! ( url. url_string, remove_dot_git_from_url( u) ) ;
82
91
}
83
92
}
0 commit comments