Тестирование программы на C с помощью подпроцесса. Открывается в PYTHON, вызывает ошибку Cygwin - PullRequest
0 голосов
/ 20 ноября 2019

Я студент, изучающий C прямо сейчас, и я пытался написать тестовые программы для своих сверстников. Я решил написать свою тестовую программу на python, потому что знал, что все студенты имеют одинаковую версию IDE и интерпретатора.

Я решил поработать с подпроцессом. Открыть. Я распаковываю tar-файл, в котором моя C-программа хранится с помощью команды tar, затем компилирую необходимые файлы с помощью команды gcc. а затем я запускаю тесты, используя входные данные, которые хранятся в текстовых файлах, сравнивая выходные данные пользователей с ожидаемыми выходными данными в соответствующих текстовых файлах.

когда я запускаю свой исполняемый файл C через cmd, он работает без сбоев и никаких ошибок не возникает. но когда я пытаюсь запустить их через subprocess.Popen, я получаю ошибку cygwin в дополнение к ожидаемому выводу, в результате чего моя программа тестирования сообщает об ошибке теста.

Я использую эту функцию, предоставляя ей массив строк в качестве аргументов для команды.

def run_cmd_command(arguments_list):
        """
        runs the given command through the command line and returns information
        about the command.
        :param arguments_list: a list representing the command to run
        :return: A tuple containing the returncode, the output of the command and
        all the errors.
        """
        process = subprocess.Popen(arguments_list, stdin=subprocess.PIPE,
                           stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                           universal_newlines=True)
        output, errors = process.communicate()
        return process.returncode, output, errors

Программа тестового питона работает правильно, если снабжена соответствующими входными данными.

С другой стороны, если входные данные неверны, предполагается, что программа на С выводит в stderr строку: "Invalid Input\n", но печатает Invalid input 0 [main] TreeAnalyzer 1780 cygwin_exception::open_stackdumpfile: Dumping stack trace to TreeAnalyzer.exe.stackdump

Я хотел бы предоставить вам больше информации, но яне уверен, какую информацию предоставить, потому что не понимаю, откуда возникла проблема.

...