Skip to content
This repository has been archived by the owner on Jun 19, 2020. It is now read-only.

Commit

Permalink
(FACT-2585) Force encode to UTF-8
Browse files Browse the repository at this point in the history
  • Loading branch information
Bogdan Irimie committed Apr 28, 2020
1 parent 2470182 commit 6414544
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 4 deletions.
11 changes: 10 additions & 1 deletion lib/resolvers/utils/filesystem_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module FilesystemHelper

def self.read_mountpoints
require 'sys/filesystem'
Sys::Filesystem.mounts
force_utf(Sys::Filesystem.mounts)
end

def self.read_mountpoint_stats(path)
Expand All @@ -25,5 +25,14 @@ def self.compute_capacity(used, total)
'0%'
end
end

def self.force_utf(mounts)
mounts.each do |mount|
mount.name.force_encoding('UTF-8')
mount.mount_type.force_encoding('UTF-8')
mount.mount_point.force_encoding('UTF-8')
mount.options.force_encoding('UTF-8')
end
end
end
end
8 changes: 5 additions & 3 deletions spec/facter/resolvers/mountpoints_resolver_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@
allow(Facter::Util::FileHelper).to receive(:safe_read)
.with('/proc/cmdline')
.and_return(load_fixture('cmdline_root_device').read)
allow(Sys::Filesystem).to receive(:mounts).and_return([mount])
allow(Sys::Filesystem).to receive(:stat).with(mount.mount_point).and_return(stat)

allow(Facter::FilesystemHelper).to receive(:read_mountpoints).and_return([mount])
allow(Facter::FilesystemHelper).to receive(:read_mountpoint_stats).with(mount.mount_point).and_return(stat)

# mock sys/filesystem methods
allow(stat).to receive(:bytes_total).and_return(stat.blocks * stat.fragment_size)
Expand All @@ -55,7 +56,8 @@
end

it 'drops automounts and non-tmpfs mounts under /proc or /sys' do
allow(Sys::Filesystem).to receive(:mounts).and_return(ignored_mounts)
allow(Facter::FilesystemHelper).to receive(:read_mountpoints).and_return(ignored_mounts)

result = Facter::Resolvers::Linux::Mountpoints.resolve(:mountpoints)
expect(result).to be_empty
end
Expand Down
31 changes: 31 additions & 0 deletions spec/facter/resolvers/utils/macosx/filesystem_helper_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,35 @@
expect(capacity).to eq('4.21%')
end
end

describe '#read_mountpoints' do
before do
mount = OpenStruct.new
mount.name = +'test_name'.encode('ASCII-8BIT')
mount.mount_type = +'test_type'.encode('ASCII-8BIT')
mount.mount_point = +'test_mount_point'.encode('ASCII-8BIT')
mount.options = +'test_options'.encode('ASCII-8BIT')

mounts = [mount]
allow(Sys::Filesystem).to receive(:mounts).and_return(mounts)
end

let(:mount_points) { Facter::FilesystemHelper.read_mountpoints }

it 'converts name from ASCII-8BIT to UTF-8' do
expect(mount_points.first.name.encoding.name). to eq('UTF-8')
end

it 'converts mount_type from ASCII-8BIT to UTF-8' do
expect(mount_points.first.mount_type.encoding.name). to eq('UTF-8')
end

it 'converts mount_point from ASCII-8BIT to UTF-8' do
expect(mount_points.first.mount_point.encoding.name). to eq('UTF-8')
end

it 'converts options from ASCII-8BIT to UTF-8' do
expect(mount_points.first.options.encoding.name). to eq('UTF-8')
end
end
end

0 comments on commit 6414544

Please sign in to comment.