spec/functional/fetchers/file_fetcher_spec.rb (73 lines of code) (raw):

require "spec_helper" module Omnibus describe FileFetcher do include_examples "a software" let(:source_file) { File.join(tmp_path, "t", "software") } let(:target_file) { File.join(project_dir, "software") } let(:source) do { file: source_file } end let(:manifest_entry) do double(Omnibus::ManifestEntry, name: "pathelogical", locked_version: nil, described_version: nil, locked_source: source) end subject { described_class.new(manifest_entry, project_dir, build_dir) } describe "#fetch_required?" do context "when the files have different hashes" do before do create_file(source_file) { "different" } create_file(target_file) { "same" } end it "return true" do expect(subject.fetch_required?).to be_truthy end end context "when the files have the same hash" do before do create_file(source_file) { "same" } create_file(target_file) { "same" } end it "returns false" do expect(subject.fetch_required?).to be(false) end end end describe "#version_guid" do it "includes the source file" do expect(subject.version_guid).to eq("file:#{source_file}") end end describe "#fetch" do before do create_file(source_file) remove_file(target_file) end it "fetches new files" do subject.fetch expect(target_file).to be_a_file end end describe "#clean" do it "returns true" do expect(subject.clean).to be_truthy end end describe "#version_for_cache" do before do create_file(source_file) end let(:sha) { "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } it "includes the source_file and shasum" do expect(subject.version_for_cache).to eq("file:#{source_file}|shasum:#{sha}") end end describe "#resolve_version" do it "just returns the version" do expect(NetFetcher.resolve_version("1.2.3", source)).to eq("1.2.3") end end end end