Ruby IO.popen Отказано в разрешении - PullRequest
0 голосов
/ 16 октября 2019

Я очень близок к тому, чтобы Microchip MPLABX MDB (отладчик) работал с автоматизированным набором тестов, называемым ceedling. У меня есть файл ruby ​​с именем sim_test_fixture.rb

Этот файл предназначен для открытия mdb.bat и передачи ему файла конфигурации с именем sim_instructions.txt. Когда я запускаю файл ruby, мне выдается ошибка «Отказано в разрешении». Почему это так?

Сценарий запускает команду "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 Когда я сам запускаю команду, она работает просто отлично. Только когда я пытаюсь запустить его из следующего файла ruby, происходит сбой.

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 Ответ

0 голосов
/ 16 октября 2019

Я не уверен на 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
...