# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=7
CROS_WORKON_COMMIT="4b5b686c5d1892910d6826bd11338837fd9c39cf"
CROS_WORKON_TREE="0a4a9f17d19e9e722d77168a944ef94d6850268b"
CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
CROS_WORKON_LOCALNAME="third_party/autotest/files"

inherit cros-workon cros-constants

DESCRIPTION="Autotest scripts and tools"
HOMEPAGE="http://dev.chromium.org/chromium-os/testing"
SRC_URI=""
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="*"

RDEPEND="
	chromeos-base/autotest-server-deps
	chromeos-base/autotest-web-frontend
	chromeos-base/infra-virtualenv
	chromeos-base/lucifer
	chromeos-base/tast-cmd
	chromeos-base/tast-remote-tests-cros
"

DEPEND=""

AUTOTEST_WORK="${WORKDIR}/autotest-work"
AUTOTEST_BASE="/autotest"

src_prepare() {
	default
	mkdir -p "${AUTOTEST_WORK}"
	rsync -am --exclude="*.pyc" --exclude="server/site_tests" --exclude="server/tests" \
		--exclude="client/site_tests" --exclude="client/tests" \
		"${S}"/* "${AUTOTEST_WORK}/" || die "Failed to copy autotest source code"

	local test_to_copy=('provision_AutoUpdate' 'hardware_StorageQualCheckSetup')

	for test in "${test_to_copy[@]}"; do
		rsync -am "${S}"/server/site_tests/"${test}" \
			"${AUTOTEST_WORK}/"server/site_tests/ || die "Failed to copy ${test} tests"
	done

	rm -f "${AUTOTEST_WORK}"/shadow_config.ini || die
	# We want to create a symlink here instead.
	rm -rf "${AUTOTEST_WORK}"/logs || die

	mkdir -p "${AUTOTEST_WORK}"/server/tests || die
}

src_compile() {
	protoc --proto_path "${S}" --python_out="${AUTOTEST_WORK}" "${S}/tko/tko.proto"
	protoc --proto_path "${S}" --python_out="${AUTOTEST_WORK}" "${S}/site_utils/cloud_console.proto"
}

src_configure() {
	cros-workon_src_configure
}

src_install() {
	insinto "${AUTOTEST_BASE}"
	doins -r "${AUTOTEST_WORK}"/*
	chmod a+x "${D}/${AUTOTEST_BASE}"/tko/*.cgi

	dosym /var/log/autotest "${AUTOTEST_BASE}"/logs
}

src_test() {
	# Run the autotest unit tests.
	./utils/unittest_suite.py --debug || die "Autotest unit tests failed."
}
