Отказано в разрешении Ruby IO.popen
Я очень близок к тому, чтобы Microchip MPLABX MDB (отладчик) работал с автоматическим набором тестов под названием ceedling. У меня есть рубиновый файл под названиемsim_test_fixture.rb
Этот файл предназначен для открытия mdb.bat
и передайте ему файл конфигурации с именем sim_instructions.txt
. Когда я запускаю рубиновый файл, мне выдается ошибка с отказом в разрешении. Это почему?
Скрипт запускает команду "C:\Program Files (x86)\Microchip\MPLABX\v5.05\mplab_platform\bin\"mdb.bat C:\Users\MichaelMi\Documents\SourceTree\LED-Lighting-Driver\test\simulation\sim_instructions.txt
Когда я сам запускаю команду, она работает нормально. Только когда я пытаюсь запустить его из следующего рубинового файла, он терпит неудачу.
require 'rbconfig'
is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
OUT_FILE = "./test/simulation/out.txt"
File.delete OUT_FILE if File.exists? OUT_FILE
path = '"C:\Program Files (x86)\Microchip\MPLABX\v5.05\mplab_platform\bin\"mdb.bat C:\Users\MichaelMi\Documents\SourceTree\LED-Lighting-Driver\test\simulation\sim_instructions.txt'
var = IO.popen(path)
Process.wait
if File.exists? OUT_FILE
file_contents = File.read OUT_FILE
file_contents.gsub!("\n", "")
print file_contents
end
1 ответ
Я не уверен на 100% в разнице, но этот код работает!
require 'rbconfig'
is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
OUT_FILE = "./test/simulation/out.txt"
File.delete OUT_FILE if File.exists? OUT_FILE
if is_windows
path = '"C:\\Program Files (x86)\\Microchip\\MPLABX\\v5.05"'
var = IO.popen(path + "\\mplab_platform\\bin\\mdb.bat ./test/simulation/sim_instructions.txt > " + OUT_FILE)
else
var = IO.popen("#{ENV['MPLABX_ROOT']}mplab_ide/bin/mdb.sh ./test/simulation/sim_instructions.txt > " + OUT_FILE)
end
Process.wait
if File.exists? OUT_FILE
file_contents = File.read OUT_FILE
print file_contents
end