60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| class FakeLogger
 | |
| end
 | |
| 
 | |
| class LoggerA < Gitlab::Logger
 | |
|   def self.file_name_noext
 | |
|     'loggerA'
 | |
|   end
 | |
| end
 | |
| 
 | |
| class LoggerB < Gitlab::JsonLogger
 | |
|   def self.file_name_noext
 | |
|     'loggerB'
 | |
|   end
 | |
| end
 | |
| 
 | |
| class TestLogger < Gitlab::MultiDestinationLogger
 | |
|   LOGGERS = [LoggerA, LoggerB].freeze
 | |
| 
 | |
|   def self.loggers
 | |
|     LOGGERS
 | |
|   end
 | |
| end
 | |
| 
 | |
| class EmptyLogger < Gitlab::MultiDestinationLogger
 | |
|   def self.loggers
 | |
|     []
 | |
|   end
 | |
| end
 | |
| 
 | |
| RSpec.describe Gitlab::MultiDestinationLogger do
 | |
|   after(:all) do
 | |
|     TestLogger.loggers.each do |logger|
 | |
|       log_file_path = "#{Rails.root}/log/#{logger.file_name}"
 | |
|       File.delete(log_file_path)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   context 'with no primary logger set' do
 | |
|     subject { EmptyLogger }
 | |
| 
 | |
|     it 'primary_logger raises an error' do
 | |
|       expect { subject.primary_logger }.to raise_error(NotImplementedError)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   context 'with 2 loggers set' do
 | |
|     subject { TestLogger }
 | |
| 
 | |
|     it 'logs info to 2 loggers' do
 | |
|       expect(subject.loggers).to all(receive(:build).and_call_original)
 | |
| 
 | |
|       subject.info('Hello World')
 | |
|     end
 | |
|   end
 | |
| end
 |