#!/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

# Build and run kernel, parse output, and send details to output log
python3 ./tools/testing/kunit/kunit.py run > "$ARTIFACTS/kunit.log" 2>&1
if [[ $? -ne 0 ]]; then
  echo "Kunit Tool failed to run"
  exit 1
fi

echo "KUnit Log"
echo "============================="
cat "$ARTIFACTS/kunit.log"
echo "============================="
