#!/bin/bash
#
# Simple test of Go oracle/Emacs integration.
# Requires that GOROOT and GOPATH are set.
# Side effect: builds and installs oracle in $GOROOT.

set -eu

[ -z "$GOROOT" ] && { echo "Error: GOROOT is unset." >&2; exit 1; }
[ -z "$GOPATH" ] && { echo "Error: GOPATH is unset." >&2; exit 1; }

log=/tmp/$(basename $0)-$$.log
thisdir=$(dirname $0)

function die() {
  echo "Error: $@."
  cat $log
  exit 1
} >&2

trap "rm -f $log" EXIT

# Build and install oracle.
go get code.google.com/p/go.tools/cmd/oracle || die "'go get' failed"
mv -f $GOPATH/bin/oracle $GOROOT/bin/
$GOROOT/bin/oracle >$log 2>&1 || true # (prints usage and exits 1)
grep -q "Usage: oracle" $log || die "$GOROOT/bin/oracle not installed"


# Run Emacs, set the scope to the oracle tool itself,
# load ./main.go, and describe the "fmt" import.
emacs --batch --no-splash --no-window-system --no-init \
    --load $GOROOT/misc/emacs/go-mode.el \
    --load $thisdir/oracle.el \
    --eval '
(progn
  (setq go-oracle-scope "code.google.com/p/go.tools/cmd/oracle")
  (find-file "'$thisdir'/main.go")
  (search-forward "\"fmt\"")
  (backward-char)
  (go-oracle-describe)
  (princ (with-current-buffer "*go-oracle*"
                              (buffer-substring-no-properties (point-min) (point-max))))
  (kill-emacs 0))
' main.go >$log 2>&1 || die "emacs command failed"

# Check that Println is mentioned.
grep -q "fmt/print.go.*func  Println" $log || die "didn't find expected lines in log; got:"

echo "PASS"
