spec/cc/cli/engines/install_spec.rb (65 lines of code) (raw):

require "spec_helper" module CC::CLI::Engines describe Install do include FileSystemHelpers around do |test| within_temp_dir { test.call } end describe "#run" do it "pulls uninstalled images using docker" do write_cc_yaml(YAML.dump("plugins" => { "madeup" => true})) stub_engine_registry(YAML.dump( "structure" => { "channels" => { "stable" => "structure" } }, "duplication" => { "channels" => { "stable" => "duplication" } }, "madeup" => { "channels" => { "stable" => "madeup", "beta" => "madeup:beta" } }, )) install = Install.new expect_system(install, "docker pull structure") expect_system(install, "docker pull duplication") expect_system(install, "docker pull madeup") capture_io { install.run } end it "warns for invalid engine names" do write_cc_yaml(YAML.dump("plugins" => { "madeup" => true})) stub_engine_registry(YAML.dump( "foo" => { "channels" => { "stable" => "foo" } }, )) install = Install.new expect(install).not_to receive(:system) stdout, _ = capture_io do install.run end expect(stdout).to match(/unknown engine <madeup:stable>/) end it "errors if an image is unable to be pulled" do write_cc_yaml(YAML.dump("plugins" => { "madeup" => true})) stub_engine_registry(YAML.dump( "structure" => { "channels" => { "stable" => "structure" } }, "duplication" => { "channels" => { "stable" => "duplication" } }, "madeup" => { "channels" => { "stable" => "madeup" } }, )) install = Install.new expect_system(install, "docker pull structure") expect_system(install, "docker pull duplication") expect_system(install, "docker pull madeup", false) capture_io do expect { install.run }.to raise_error(Install::ImagePullFailure) end end end def expect_system(install, cmd, result = true) expect(install).to receive(:system). with(cmd).and_return(result) end def write_cc_yaml(yaml) make_file(CC::Config::YAMLAdapter::DEFAULT_PATH, yaml) end def stub_engine_registry(yaml) fh = Tempfile.new("engines.yml", Dir.pwd) path = fh.path fh.close; fh.unlink make_file(path, yaml) stub_const("CC::EngineRegistry::DEFAULT_MANIFEST_PATH", path) end end end