// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import consoleLogLevel = require('console-log-level'); export type Arguments = string[]; export interface Call { type: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; args: Arguments; } export class MockLogger implements consoleLogLevel.Logger { traces: Call[] = []; debugs: Call[] = []; infos: Call[] = []; warns: Call[] = []; errors: Call[] = []; fatals: Call[] = []; allCalls() { return this.traces.concat( this.debugs, this.infos, this.warns, this.errors, this.fatals ); } clear() { this.traces = []; this.debugs = []; this.infos = []; this.warns = []; this.errors = []; this.fatals = []; } trace(...args: Arguments) { this.traces.push({type: 'trace', args}); } debug(...args: Arguments) { this.debugs.push({type: 'debug', args}); } info(...args: Arguments) { this.infos.push({type: 'info', args}); } warn(...args: Arguments) { this.warns.push({type: 'warn', args}); } error(...args: Arguments) { this.errors.push({type: 'error', args}); } fatal(...args: Arguments) { this.fatals.push({type: 'fatal', args}); } }