SLING-12148 - Fixing CI Validation Failure  (#26)

* Adding more logging to failure to get CI status

* Catching all exceptions rather than just the expected ones

* Fixing extra .git suffix

* Tweaking log message

* Adding test to verify
diff --git a/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java b/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
index 25ca1c0..c4190c8 100644
--- a/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
+++ b/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
@@ -120,6 +120,10 @@
                         repositoryName = repositoryName.substring(0, repositoryName.indexOf('/'));
                     }
                 }
+                // strip off the .git suffix from the repo name if it exists
+                if(repositoryName.endsWith(".git")) {
+                    repositoryName = repositoryName.substring(0, repositoryName.length() - 4);
+                }
                 log.debug("Extracted REPO: {}", repositoryName);
             }
             if (repositoryName != null && !repositoryName.isEmpty() && !tagName.isEmpty() && !tagName.equalsIgnoreCase("HEAD")) {
@@ -139,8 +143,9 @@
         if (ciEndpoint == null) {
             return new ValidationResult(false, "Cannot extract a CI endpoint from " + artifactFilePath.getFileName());
         }
+        JsonObject status = null;
         try {
-            JsonObject status = fetchJson(ciEndpoint);
+            status = fetchJson(ciEndpoint);
 
             if ("pending".equals(status.get(PN_STATE).getAsString())
                     && status.get("statuses").getAsJsonArray().size() == 0) {
@@ -172,8 +177,9 @@
             } else {
                 return new ValidationResult(false, message);
             }
-        } catch (UnsupportedOperationException | IOException e) {
-            return new ValidationResult(false, "Failed to get CI Status: " + e.toString());
+        } catch (Exception e) {
+            return new ValidationResult(false,
+                    "Failed to get CI Status: " + e.toString() + "\nCI Status Url: " + ciEndpoint + "\nCI Status Body: " + status);
         }
     }
 
diff --git a/src/test/java/org/apache/sling/cli/impl/ci/CIStatusValidatorTest.java b/src/test/java/org/apache/sling/cli/impl/ci/CIStatusValidatorTest.java
index 9aa127f..6c5e4d5 100644
--- a/src/test/java/org/apache/sling/cli/impl/ci/CIStatusValidatorTest.java
+++ b/src/test/java/org/apache/sling/cli/impl/ci/CIStatusValidatorTest.java
@@ -146,4 +146,10 @@
         assertNotNull(valid.getMessage());
     }
 
+    @Test
+    public void supportsGitHubUrls() throws URISyntaxException {
+        ValidationResult valid = validator.isValid(getResourcePath("/ci/gh-repo-1.0.pom"));
+        assertTrue(valid.isValid());
+        assertNotNull(valid.getMessage());
+    }
 }
diff --git a/src/test/resources/ci/gh-repo-1.0.pom b/src/test/resources/ci/gh-repo-1.0.pom
new file mode 100644
index 0000000..d15caae
--- /dev/null
+++ b/src/test/resources/ci/gh-repo-1.0.pom
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional 
+    information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except 
+    in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to 
+    in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See 
+    the License for the specific language governing permissions and limitations under the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling-bundle-parent</artifactId>
+        <version>35</version>
+        <relativePath />
+    </parent>
+
+    <artifactId>repo-pom</artifactId>
+    <version>1.1</version>
+
+    <name>Repo POM</name>
+    <description>A Sample POM File with a repo</description>
+
+    <scm>
+        <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-repo-pom.git</connection>
+        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-repo-pom.git</developerConnection>
+        <url>https://github.com/apache/sling-repo-pom.git</url>
+        <tag>repo-pom-1.1</tag>
+    </scm>
+
+</project>