#!/usr/bin/env bash

# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -e

. ./test-lib.sh

setup_git_remote
setup_git_checkout

(
  set -e
  cd git_checkout
  git checkout -q -t origin/master -b work
  echo "some work done on a branch" >> test
  git add test; git commit -q -m "branch work"
  echo "some other work done on a branch" >> test
  git add test; git commit -q -m "branch work"

  test_expect_success "git-cl upload wants a server" \
    "$GIT_CL upload --no-oauth2 2>&1 | grep -q 'You must configure'"

  git config rietveld.server localhost:10000

  test_expect_success "git-cl status has no issue" \
    "$GIT_CL_STATUS | grep -q 'No issue assigned'"

  # Prevent the editor from coming up when you upload.
  export EDITOR=$(which true)
  test_expect_success "upload succeeds (needs a server running on localhost)" \
      "$GIT_CL upload --no-oauth2 -t test master | \
      grep -q 'Issue created'"

  test_expect_success "git-cl status now knows the issue" \
      "$GIT_CL_STATUS | grep -q 'Issue number'"

  # Check to see if the description contains the local commit messages.
  # Should contain 'branch work' x 2.
  test_expect_success "git-cl status has the right description for the log" \
      "[ $($GIT_CL_STATUS --field desc | egrep '^branch work$' -c) -eq 2 ]"

  test_expect_success "git-cl status has the right subject from message" \
      "$GIT_CL_STATUS --field desc | head -n 1 | grep -q '^test$'"

  test_expect_success "git-cl land ok" \
    "$GIT_CL land --bypass-hooks"

  git fetch origin
  git checkout origin/master

  test_expect_success "committed code has proper summary" \
      "[ $(git log -n 1 --pretty=format:%s | egrep '^test$' -c) -eq 1 ]"

  test_expect_success "committed code has proper description" \
      "[ $(git log -n 1 --pretty=format:%b | egrep '^branch work$' -c) -eq 2 ]"

  # # Have to sleep to let the server return the new status.
  # sleep 5
  # test_expect_success "branch issue is closed" \
  #     "$GIT_CL_STATUS | grep -q 'work :.*closed'"

)
SUCCESS=$?

cleanup

if [ $SUCCESS == 0 ]; then
  echo PASS
fi