Merge pull request #622 from ayushpoddar/fix/rounding-large-files

Fix: rounding large files
This commit is contained in:
Claudio Bley 2024-09-05 23:12:02 +02:00 committed by GitHub
commit 9914606311
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 13 additions and 5 deletions

View file

@ -72,7 +72,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'diffy', '3.4.2' spec.add_development_dependency 'diffy', '3.4.2'
spec.add_development_dependency 'rake', '~> 13' spec.add_development_dependency 'rake', '~> 13'
spec.add_development_dependency 'rdoc', '~> 6.1' spec.add_development_dependency 'rdoc', '~> 6.1'
spec.add_development_dependency 'ronn', '~> 0' spec.add_development_dependency 'ronn-ng', '~> 0'
spec.add_development_dependency 'rspec', '~> 3.7' spec.add_development_dependency 'rspec', '~> 3.7'
spec.add_development_dependency 'rspec-its', '~> 1.2' spec.add_development_dependency 'rspec-its', '~> 1.2'
spec.add_development_dependency 'rubocop', '~> 1.50.1' spec.add_development_dependency 'rubocop', '~> 1.50.1'

View file

@ -260,7 +260,7 @@ module ColorLS
def size_info(filesize) def size_info(filesize)
filesize = Filesize.new(filesize) filesize = Filesize.new(filesize)
size = @show_human_readable_size ? filesize.pretty : filesize.to_s size = @show_human_readable_size ? filesize.pretty(precision: 0) : filesize.to_s('B', precision: 0)
size = size.split size = size.split
size = justify_size_info(size) size = justify_size_info(size)
return size.colorize(@colors[:file_large]) if filesize >= 512 * (1024 ** 2) return size.colorize(@colors[:file_large]) if filesize >= 512 * (1024 ** 2)
@ -280,7 +280,7 @@ module ColorLS
end end
def justify_size_info(size) def justify_size_info(size)
size_num = size[0][0..-4].rjust(chars_for_size, ' ') size_num = size[0].rjust(chars_for_size, ' ')
size_unit = @show_human_readable_size ? size[1].ljust(3, ' ') : size[1] size_unit = @show_human_readable_size ? size[1].ljust(3, ' ') : size[1]
"#{size_num} #{size_unit}" "#{size_num} #{size_unit}"
end end

View file

@ -65,7 +65,7 @@ RSpec.describe ColorLS::Flags do
it 'displays multiple files per line' do it 'displays multiple files per line' do
allow($stdout).to receive(:tty?).and_return(true) allow($stdout).to receive(:tty?).and_return(true)
expect { subject }.not_to output(/(.*\n){4}/).to_stdout expect { subject }.not_to output(/(.*\n){7}/).to_stdout
end end
it('does not display ./ or ../') { expect { subject }.not_to output(%r(\.{1,2}/)).to_stdout } it('does not display ./ or ../') { expect { subject }.not_to output(%r(\.{1,2}/)).to_stdout }
@ -103,6 +103,14 @@ RSpec.describe ColorLS::Flags do
let(:args) { ['--long', FIXTURES] } let(:args) { ['--long', FIXTURES] }
it('lists file info') { expect { subject }.to output(/((r|-).*(w|-).*(x|-).*){3}/).to_stdout } it('lists file info') { expect { subject }.to output(/((r|-).*(w|-).*(x|-).*){3}/).to_stdout }
it 'rounds up file size to nearest MiB' do
expect { subject }.to output(/2 MiB[^\n]* 20kb-less-than-2mb\.txt/).to_stdout
end
it 'rounds down file size to nearest MiB' do
expect { subject }.to output(/1 MiB[^\n]* 20kb-more-than-1mb\.txt/).to_stdout
end
end end
context 'with --long flag for `a.txt`' do context 'with --long flag for `a.txt`' do
@ -347,7 +355,7 @@ RSpec.describe ColorLS::Flags do
let(:args) { ['--report', '--report=long', FIXTURES] } let(:args) { ['--report', '--report=long', FIXTURES] }
it 'shows a report with recognized and unrecognized files' do it 'shows a report with recognized and unrecognized files' do
expect { subject }.to output(/Recognized files\s+: 4\n.+Unrecognized files\s+: 3/).to_stdout expect { subject }.to output(/Recognized files\s+: 6\n.+Unrecognized files\s+: 3/).to_stdout
end end
end end

BIN
spec/fixtures/20kb-less-than-2mb.txt vendored Normal file

Binary file not shown.

BIN
spec/fixtures/20kb-more-than-1mb.txt vendored Normal file

Binary file not shown.