Мне нужен метод Ruby или регулярное выражение, которое позволит мне разбить строку аргументов командной строки в массив, похожий на ARGV.То, что я спрашиваю, похоже на этот вопрос , но в Ruby.
Я пишу модульные тесты для программы на Ruby, которая обрабатывает ввод из командной строки с использованием Trollop (хотя этот вопрос будетто же самое для любого другого парсера опций).
Метод, который я хочу протестировать, выглядит следующим образом:
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
В моей программе я вызываю parse_args(ARGV)
.В моем тесте я думал, что могу просто передать строку, разделенную на пробелы, но это не поведение ARGV.Сравните следующее:
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]