Как интерпретировать коды возврата из Python subprocess.run - PullRequest
0 голосов
/ 11 февраля 2020

В настоящее время я провожу серию юнит-тестов, которые на самом деле составляют sh. Итак, чтобы запустить все из них и понять, что является причиной взлома sh, я использую модуль подпроцесса Python в следующем коде - tester.py

import os
import subprocess

test_dir = './.build_release/test/'
test_files = sorted(os.listdir(test_dir)) # Gets all unittest files

with open('test_results_bad.txt','w') as f: # Save results of unittests in text file
    for curr_test in test_files:
        # Show current test
        f.write(curr_test + ' ')
        print(curr_test)

        # Run current test
        curr_proc = subprocess.run([os.path.join(test_dir, curr_test)], shell=False)

        # Indicate whether current test crashed or not
        if curr_proc.returncode == 0:
            f.write("PASSED\n")
        else:
            f.write("F A I L E D ..... ????" + str(curr_proc.returncode) + '\n')

Моя ОС - Ubuntu 18.04. Я сталкиваюсь с сбоями при попытке построить DeepLab_v2 из https://bitbucket.org/aquariusjay/deeplab-public-ver2.git

У трех тестов юнитов, которые взломали sh, есть коды возврата -6, -6 и -11. Что это значит?

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

1 Ответ

1 голос
/ 11 февраля 2020

Эти коды возврата определены в программе, которую вы запускаете через подпроцесс, они не являются общими кодами ошибок ОС или Python кодами. Ищите документацию по коду, который вы вызываете через подпроцесс. Например, вот пакетный скрипт, который возвращает код ошибки.

@echo off
if /I "%~1"=="TEST" (exit 5) else (exit 0)

Если вы вызываете это с помощью подпроцесса, вы получите код 0 для любого аргумента, отличного от TEST.

import subprocess

subprocess.call(['test.bat', 'hello world'])
# returns:
0

subprocess.call(['test.bat', 'TEST'])
# returns:
5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...