spec/lib/runit/config_spec.rb (29 lines of code) (raw):
# frozen_string_literal: true
RSpec.describe Runit::Config do
let(:gdk_root) { Pathname.new(Dir.mktmpdir(nil, temp_path)) }
let(:templates_path) { gdk_root.join('support/templates') }
let(:real_templates_path) { temp_path.parent.join('support/templates') }
subject { described_class.new(gdk_root) }
before do
templates_path.mkpath
FileUtils.cp_r(real_templates_path, templates_path.parent)
end
after do
FileUtils.rm_rf(gdk_root)
end
describe '#stale_service_links' do
it 'removes unknown symlinks from the services directory' do
services_dir = gdk_root.join('services')
service_mock = Struct.new(:name)
enabled_service_names = %w[svc1 svc2]
all_services = %w[svc1 svc2 stale]
enabled_services = enabled_service_names.map { |name| service_mock.new(name) }
FileUtils.mkdir_p(services_dir)
all_services.each do |entry|
File.symlink('/tmp', services_dir.join(entry))
end
FileUtils.touch(services_dir.join('should-be-ignored'))
stale_collection = [services_dir.join('stale')]
expect(subject.stale_service_links(enabled_services)).to eq(stale_collection)
end
end
end