2 Проблемы.
Сначала вы должны вызвать subprocess.run()
один раз для каждой команды вместо того, чтобы поместить три разные команды в список.
Второй: команда cd ...
просто меняет настоящеерабочий каталог в одном подпроцессе, и последующая команда больше не будет находиться в том же каталоге.
Однако есть простое решение.
subprocess.run
имеет параметр cwd
(https://docs.python.org/2/library/subprocess.html#popen-constructor), который позволяет указать каталог, в котором должен выполняться подпроцесс.
Итак, следующее должно сделать:
out = subprocess.run(cmake_build_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=test_path, shell=True)
out += subprocess.run(cmake_link_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=test_path, shell=True)