85 строки
3.0 KiB
Python
85 строки
3.0 KiB
Python
#!/usr/bin/env bash
|
|
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership.
|
|
# The ASF licenses this file to You 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
|
|
#
|
|
# http://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.
|
|
#
|
|
|
|
#
|
|
# This file contains code from the Apache Spark project (original license above)
|
|
# and Delta Lake project (same Apache 2.0 license above).
|
|
# It contains modifications, which are licensed as follows:
|
|
#
|
|
|
|
#
|
|
# Copyright (2020) The Hyperspace Project Authors.
|
|
# 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
|
|
# http://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.
|
|
#
|
|
|
|
import os
|
|
import fnmatch
|
|
import subprocess
|
|
from os import path
|
|
import random
|
|
import string
|
|
import tempfile
|
|
|
|
|
|
def run_python_tests(root_dir):
|
|
print("##### Running Python tests #####")
|
|
python_test_script = path.join(root_dir, path.join("python", "run-tests.py"))
|
|
print("Calling script %s", python_test_script)
|
|
run_cmd(["python", python_test_script], stream_output=True)
|
|
|
|
|
|
def run_cmd(cmd, throw_on_error=True, env=None, stream_output=False, **kwargs):
|
|
cmd_env = os.environ.copy()
|
|
if env:
|
|
cmd_env.update(env)
|
|
|
|
if stream_output:
|
|
child = subprocess.Popen(cmd, env=cmd_env, **kwargs)
|
|
exit_code = child.wait()
|
|
if throw_on_error and exit_code != 0:
|
|
raise Exception("Non-zero exitcode: %s" % (exit_code))
|
|
return exit_code
|
|
else:
|
|
child = subprocess.Popen(
|
|
cmd,
|
|
env=cmd_env,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
**kwargs)
|
|
(stdout, stderr) = child.communicate()
|
|
exit_code = child.wait()
|
|
if throw_on_error and exit_code != 0:
|
|
raise Exception(
|
|
"Non-zero exitcode: %s\n\nSTDOUT:\n%s\n\nSTDERR:%s" %
|
|
(exit_code, stdout, stderr))
|
|
return (exit_code, stdout, stderr)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
root_dir = os.path.dirname(os.path.abspath(__file__))
|
|
run_python_tests(root_dir)
|