#!/bin/bash

# Copyright 2018 Google LLC
#
# 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
#
#     https://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.


# Prow may not create artifacts folder in advance.
mkdir -p "$ARTIFACTS"

# Include kunitconfig manually until we can pull it from prowjob TODO(avikr)
cp /kunitconfig ./kunitconfig

# Run the KUnit tool unit tests
python3 ./tools/testing/kunit/kunit_test.py > "$ARTIFACTS/kunit_test.log" 2>&1
KUNIT_TEST_EXIT_CODE=$?

# Build and run kernel, parse output, and send details to output log
python3 ./tools/testing/kunit/kunit.py run > "$ARTIFACTS/kunit.log" 2>&1
KUNIT_EXIT_CODE=$?

if [[ $KUNIT_TEST_EXIT_CODE -ne 0 ]]; then
  echo "KUnit Tool Presubmit Failed:"
  echo "============================="
  cat "$ARTIFACTS/kunit_test.log"
  echo "============================="
fi

echo

if [[ $KUNIT_EXIT_CODE -ne 0 ]]; then
  echo "KUnit Presubmit Failed:"
else
  echo "KUnit Presubmit Succeeded:"
fi
echo "============================="
cat "$ARTIFACTS/kunit.log"
echo "============================="

if [[ $KUNIT_TEST_EXIT_CODE -ne 0 || $KUNIT_EXIT_CODE -ne 0 ]]; then
  exit 1
fi
