95 lines
3.1 KiB
Ruby
95 lines
3.1 KiB
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
# require 'tapioca'
|
||
|
require "tapioca/dsl"
|
||
|
require_relative "../../../../sorbet/tapioca/compilers/args"
|
||
|
|
||
|
RSpec.describe Tapioca::Compilers::Args do
|
||
|
let(:compiler) { described_class.new(Tapioca::Dsl::Pipeline.new(requested_constants: []), RBI::Tree.new, Homebrew) }
|
||
|
let(:list_parser) do
|
||
|
require "cmd/list"
|
||
|
Homebrew.list_args
|
||
|
end
|
||
|
# good testing candidate, bc it has multiple for each of switch, flag, and comma_array args:
|
||
|
let(:update_python_resources_parser) do
|
||
|
require "dev-cmd/update-python-resources"
|
||
|
Homebrew.update_python_resources_args
|
||
|
end
|
||
|
|
||
|
describe "#args_table" do
|
||
|
it "returns a mapping of list args to default values" do
|
||
|
expect(compiler.args_table(list_parser)).to eq({
|
||
|
"1?": false,
|
||
|
cask?: false,
|
||
|
casks?: false,
|
||
|
d?: false,
|
||
|
debug?: false,
|
||
|
formula?: false,
|
||
|
formulae?: false,
|
||
|
full_name?: false,
|
||
|
h?: false,
|
||
|
help?: false,
|
||
|
l?: false,
|
||
|
multiple?: false,
|
||
|
pinned?: false,
|
||
|
q?: false,
|
||
|
quiet?: false,
|
||
|
r?: false,
|
||
|
t?: false,
|
||
|
v?: false,
|
||
|
verbose?: false,
|
||
|
versions?: false,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
it "rreturns a mapping of update-python-resources args to default values" do
|
||
|
expect(compiler.args_table(update_python_resources_parser)).to eq({
|
||
|
d?: false,
|
||
|
debug?: false,
|
||
|
exclude_packages: nil,
|
||
|
extra_packages: nil,
|
||
|
h?: false,
|
||
|
help?: false,
|
||
|
ignore_non_pypi_packages?: false,
|
||
|
install_dependencies?: false,
|
||
|
p?: false,
|
||
|
package_name: nil,
|
||
|
print_only?: false,
|
||
|
q?: false,
|
||
|
quiet?: false,
|
||
|
s?: false,
|
||
|
silent?: false,
|
||
|
v?: false,
|
||
|
verbose?: false,
|
||
|
version: nil,
|
||
|
})
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "#comma_arrays" do
|
||
|
it "returns an empty list when there are no comma_array args" do
|
||
|
expect(compiler.comma_arrays(list_parser)).to eq([])
|
||
|
end
|
||
|
|
||
|
it "returns the comma_array args when they exist" do
|
||
|
expect(compiler.comma_arrays(update_python_resources_parser)).to eq([:extra_packages, :exclude_packages])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "#get_return_type" do
|
||
|
let(:comma_arrays) { compiler.comma_arrays(update_python_resources_parser) }
|
||
|
|
||
|
it "returns the correct type for switches" do
|
||
|
expect(compiler.get_return_type(:silent?, false, comma_arrays)).to eq("T::Boolean")
|
||
|
end
|
||
|
|
||
|
it "returns the correct type for flags" do
|
||
|
expect(compiler.get_return_type(:package_name, nil, comma_arrays)).to eq("T.nilable(String)")
|
||
|
end
|
||
|
|
||
|
it "returns the correct type for comma_arrays" do
|
||
|
expect(compiler.get_return_type(:extra_packages, nil, comma_arrays)).to eq("T.nilable(T::Array[String])")
|
||
|
end
|
||
|
end
|
||
|
end
|