#!/bin/bash

test_description="Integration test"

. ./sharness.sh

test_expect_success "++ Prepare git repository" "
  git init &&
  git config user.email 'integration@test.ing' &&
  git config user.name 'Sharness'
"

test_expect_success "++ Prepare config file" "
  git changerelease --create-config &&
  sed -i 's/disable_signed_tags: false/disable_signed_tags: true/' ~/.git_changerelease.yaml
"

test_expect_success "Tool should not work on empty repository" "
  test_expect_code 1 git changerelease --no-edit
"

test_expect_success "++ Create first commit" "
  git commit --allow-empty -m 'First commit'
"

test_expect_success "Tool should write changelog with commits available" "
  git changerelease --no-edit
"

test_expect_success "Version is now expected to be 0.1.0" "
  head -n1 History.md | grep '0.1.0'
"

test_expect_success "A tag v0.1.0 should be created" "
  git describe --tag --exact-match | grep v0.1.0
"

test_expect_success "++ Create a fix commit" "
  git commit --allow-empty -m 'fix another empty commit' &&
  git changerelease --no-edit
"

test_expect_success "Version is now expected to be 0.1.1" "
  head -n1 History.md | grep '0.1.1'
"

test_expect_success "A tag v0.1.1 should be created" "
  git describe --tag --exact-match | grep v0.1.1
"

test_expect_success "++ Create commit with non-semver tag" "
  git commit --allow-empty -m 'commit no3' &&
  git tag 'v0.2'
"

test_expect_success "Tool should be able to ignore the non-semver tag" "
  git changerelease --no-edit
"

test_expect_success "Version is now expected to be 0.2.0" "
  head -n1 History.md | grep '0.2.0'
"

test_expect_success "A tag v0.2.0 should be created" "
  git describe --tag --exact-match | grep v0.2.0
"

test_expect_success "++ Create commit breaking change" "
  git commit --allow-empty -m 'breaking: commit no3' &&
  git changerelease --no-edit
"

test_expect_success "Version is now expected to be 1.0.0" "
  head -n1 History.md | grep '1.0.0'
"

test_expect_success "A tag v1.0.0 should be created" "
  git describe --tag --exact-match | grep v1.0.0
"

test_done

# vim: set ft=sh :