spec/cc/engine_registry_spec.rb (97 lines of code) (raw):

require "spec_helper" describe CC::EngineRegistry do describe "#fetch_engine_details" do it "returns engine details" do registry = registry_from_yaml(<<-EOYAML) rubocop: channels: stable: foo example: bar EOYAML engine = double(name: "rubocop", channel: "example") engine_details = registry.fetch_engine_details(engine) expect(engine_details.image).to eq("bar") expect(engine_details.command).to be_nil end it "includes command when present" do registry = registry_from_yaml(<<-EOYAML) rubocop: channels: stable: foo example: bar command: - echo - true EOYAML engine = double(name: "rubocop", channel: "example") engine_details = registry.fetch_engine_details(engine) expect(engine_details.image).to eq("bar") expect(engine_details.command).to eq(["echo", true]) end it "raises for unknown engines" do registry = registry_from_yaml(<<-EOYAML) rubocop: channels: stable: foo example: bar EOYAML engine = double(name: "nope", channel: "beta") expect { registry.fetch_engine_details(engine) }.to raise_error( described_class::EngineDetailsNotFoundError, /No engine named nope found/, ) end it "raises for unknown channels" do registry = registry_from_yaml(<<-EOYAML) rubocop: channels: stable: foo example: bar EOYAML engine = double(name: "rubocop", channel: "nope") expect { registry.fetch_engine_details(engine) }.to raise_error( described_class::EngineDetailsNotFoundError, /Channel nope not found for rubocop,.*\["stable", "example"\]/, ) end it "makes up an engine in development mode" do registry = registry_from_yaml(<<-EOYAML) rubocop: channels: stable: foo example: bar EOYAML engine = double(name: "madeup") engine_details = registry.fetch_engine_details(engine, development: true) expect(engine_details.image).to eq "codeclimate/codeclimate-madeup" end describe "memory limits" do let(:registry) { registry_from_yaml(<<-EOYAML) sonar-java: channels: stable: foo minimum_memory_limit: 2_048_000_000 EOYAML } let(:engine) { double(name: "sonar-java", channel: "stable") } it "uses at least the minimum set by the engine" do ENV["ENGINE_MEMORY_LIMIT_BYTES"] = "1_500_000_000" engine_details = registry.fetch_engine_details(engine) expect(engine_details.memory).to eq 2_048_000_000 end it "uses ENGINE_MEMORY_LIMIT_BYTES" do ENV["ENGINE_MEMORY_LIMIT_BYTES"] = "4_000_000_000" engine_details = registry.fetch_engine_details(engine) expect(engine_details.memory).to eq 4_000_000_000 end end end def registry_from_yaml(yaml) Tempfile.open("") do |tmp| tmp.puts(yaml) tmp.rewind described_class.new(tmp.path) end end end