Sha256: 5f094d2a416ec253f5531754723b270d50974cbb351c93e864ef396578fadd47

Contents?: true

Size: 1.32 KB

Versions: 10

Compression:

Stored size: 1.32 KB

Contents

require 'spec_helper'

module Omnibus
  describe Digestable do
    let(:path) { '/path/to/file' }
    let(:io)   { StringIO.new }

    subject { Class.new { include Digestable }.new }

    describe '#digest' do
      it 'reads the IO in chunks' do
        expect(File).to receive(:open).with(path).and_yield(io)
        expect(subject.digest(path)).to eq('d41d8cd98f00b204e9800998ecf8427e')
      end
    end

    describe '#digest_directory' do
      let(:path)    { '/path/to/dir' }
      let(:glob)    { "#{path}/**/*" }
      let(:subdir)  { '/path/to/dir/subdir' }
      let(:subfile) { '/path/to/dir/subfile' }
      let(:io)      { StringIO.new }

      it 'inspects the file types of glob entries' do
        expect(FileSyncer).to receive(:glob).with(glob).and_return([subdir])
        expect(File).to receive(:ftype).with(subdir).and_return('directory')
        expect(subject.digest_directory(path)).to eq('8b91792e7917b1152d8494670caaeb85')
      end

      it 'inspects the contents of the files' do
        expect(FileSyncer).to receive(:glob).with(glob).and_return([subfile])
        expect(File).to receive(:ftype).with(subfile).and_return('file')
        expect(File).to receive(:open).with(subfile).and_yield(io)
        expect(subject.digest_directory(path)).to eq('c8f023976b95ace2ae3678540fd3b4f1')
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
omnibus-5.4.0 spec/unit/digestable_spec.rb
omnibus-5.3.0 spec/unit/digestable_spec.rb
omnibus-5.2.0 spec/unit/digestable_spec.rb
omnibus-5.1.0 spec/unit/digestable_spec.rb
omnibus-5.0.0 spec/unit/digestable_spec.rb
omnibus-4.1.0 spec/unit/digestable_spec.rb
omnibus-4.0.0 spec/unit/digestable_spec.rb
omnibus-4.0.0.rc.2 spec/unit/digestable_spec.rb
omnibus-4.0.0.rc.1 spec/unit/digestable_spec.rb
omnibus-4.0.0.beta.1 spec/unit/digestable_spec.rb