Support gzip compressed data files (to be used by new version of cli)

footer-fixes
Marcin Kulik 10 years ago
parent 31746d8e1c
commit 0beacb326e

@ -1,17 +0,0 @@
class Bzip2Uploader < BaseUploader
def decompressed_path
return unless file
cache_stored_file! unless cached?
out_path = "#{current_path}.decompressed"
unless File.exist?(out_path)
system("bzip2 -d -k -c #{current_path} >#{out_path}")
end
out_path
end
end

@ -0,0 +1,32 @@
class CompressedFileUploader < BaseUploader
def decompressed_path
return unless file
cache_stored_file! unless cached?
out_path = "#{current_path}.decompressed"
unless File.exist?(out_path)
decompress(out_path)
end
out_path
end
private
def decompress(out_path)
header = File.read(current_path, 2).bytes
case header
when [31, 139]
system("gzip -d -k -c #{current_path} >#{out_path}")
when [66, 90]
system("bzip2 -d -k -c #{current_path} >#{out_path}")
else
raise "unknown compressed file format"
end
end
end

@ -1,4 +1,4 @@
class StdinDataUploader < Bzip2Uploader
class StdinDataUploader < CompressedFileUploader
def store_dir
store_dir_prefix +

@ -1 +1 @@
class StdinTimingUploader < Bzip2Uploader; end
class StdinTimingUploader < CompressedFileUploader; end

@ -1,4 +1,4 @@
class StdoutDataUploader < Bzip2Uploader
class StdoutDataUploader < CompressedFileUploader
def store_dir
store_dir_prefix +

@ -1 +1 @@
class StdoutTimingUploader < Bzip2Uploader; end
class StdoutTimingUploader < CompressedFileUploader; end

Binary file not shown.

@ -1,7 +1,7 @@
require 'rails_helper'
describe Bzip2Uploader do
let(:uploader) { Bzip2Uploader.new(user, :photo) }
describe CompressedFileUploader do
let(:uploader) { CompressedFileUploader.new(user, :photo) }
let(:user) { User.new }
describe '#decompressed_path' do
@ -14,14 +14,7 @@ describe Bzip2Uploader do
end
context "when file was stored" do
let(:decompressed_data) { File.read(subject) }
before do
uploader.store!(File.open('spec/fixtures/munch.bz2'))
end
it 'returns a path to the decompressed data' do
expect(decompressed_data).to eq(<<EOS)
let(:expected_contents) { <<EOS }
Edvard Munch - The Scream
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXP
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY?""" .
@ -155,6 +148,27 @@ $F `' <! !!! !!> !!
`- ;! `"$$
`?
EOS
context "and it was bzip2" do
before do
uploader.store!(File.open('spec/fixtures/munch.bz2'))
end
it 'returns a path to the decompressed data' do
path = subject
expect(File.read(path)).to eq(expected_contents)
end
end
context "and it was gzip" do
before do
uploader.store!(File.open('spec/fixtures/munch.gz'))
end
it 'returns a path to the decompressed data' do
path = subject
expect(File.read(path)).to eq(expected_contents)
end
end
end
end
Loading…
Cancel
Save