/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed 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.
*/
package org.springframework.boot.info;
import java.util.Properties;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link GitProperties}.
*
* @author Stephane Nicoll
*/
public class GitPropertiesTests {
@Test
public void basicInfo() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefghijklmno", "abcdefg", "1457527123"));
assertThat(properties.getBranch()).isEqualTo("master");
assertThat(properties.getCommitId()).isEqualTo("abcdefghijklmno");
assertThat(properties.getShortCommitId()).isEqualTo("abcdefg");
}
@Test
public void noInfo() {
GitProperties properties = new GitProperties(new Properties());
assertThat(properties.getBranch()).isNull();
assertThat(properties.getCommitId()).isNull();
assertThat(properties.getShortCommitId()).isNull();
assertThat(properties.getCommitTime()).isNull();
}
@Test
public void coerceEpochSecond() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefg", null, "1457527123"));
assertThat(properties.getCommitTime()).isNotNull();
assertThat(properties.get("commit.time")).isEqualTo("1457527123000");
assertThat(properties.getCommitTime().getTime()).isEqualTo(1457527123000L);
}
@Test
public void coerceDateString() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefg", null, "2016-03-04T14:36:33+0100"));
assertThat(properties.getCommitTime()).isNotNull();
assertThat(properties.get("commit.time")).isEqualTo("1457098593000");
assertThat(properties.getCommitTime().getTime()).isEqualTo(1457098593000L);
}
@Test
public void coerceUnsupportedFormat() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefg", null, "2016-03-04 15:22:24"));
assertThat(properties.getCommitTime()).isNull();
assertThat(properties.get("commit.time")).isEqualTo("2016-03-04 15:22:24");
}
@Test
public void shortCommitUsedIfPresent() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefghijklmno", "abcdefgh", "1457527123"));
assertThat(properties.getCommitId()).isEqualTo("abcdefghijklmno");
assertThat(properties.getShortCommitId()).isEqualTo("abcdefgh");
}
@Test
public void shortenCommitIdShorterThan7() {
GitProperties properties = new GitProperties(
createProperties("master", "abc", null, "1457527123"));
assertThat(properties.getCommitId()).isEqualTo("abc");
assertThat(properties.getShortCommitId()).isEqualTo("abc");
}
@Test
public void shortenCommitIdLongerThan7() {
GitProperties properties = new GitProperties(
createProperties("master", "abcdefghijklmno", null, "1457527123"));
assertThat(properties.getCommitId()).isEqualTo("abcdefghijklmno");
assertThat(properties.getShortCommitId()).isEqualTo("abcdefg");
}
private static Properties createProperties(String branch, String commitId,
String commitIdAbbrev, String commitTime) {
Properties properties = new Properties();
properties.put("branch", branch);
properties.put("commit.id", commitId);
if (commitIdAbbrev != null) {
properties.put("commit.id.abbrev", commitIdAbbrev);
}
properties.put("commit.time", commitTime);
return properties;
}
}