CommandLineToolkit

Форк
0
/
FileHandleLoggerHandlerTests.swift 
118 строк · 3.9 Кб
1
/*
2
 * Copyright (c) Avito Tech LLC
3
 */
4

5
import DateProviderTestHelpers
6
import CLTLogging
7
import CLTLoggingModels
8
import Foundation
9
import TestHelpers
10
import Tmp
11
import XCTest
12

13
final class FileHandleLoggerHandlerTests: XCTestCase {
14
    lazy var tempFile = assertDoesNotThrow { try TemporaryFile(deleteOnDealloc: true) }
15
    
16
    lazy var loggerHandler = FileHandleLoggerHandler(
17
        dateProvider: DateProviderFixture(),
18
        fileHandle: tempFile.fileHandleForWriting,
19
        logEntryTextFormatter: SimpleLogEntryTextFormatter(),
20
        fileHandleShouldBeClosed: true,
21
        skipMetadataFlag: nil
22
    )
23
    
24
    func test___handling_coordinates___alters_message() throws {
25
        let logEntry = LogEntry(
26
            file: "file",
27
            line: 42,
28
            coordinates: [
29
                LogEntryCoordinate(name: "coordinate"),
30
                LogEntryCoordinate(name: "123"),
31
            ],
32
            message: "message",
33
            timestamp: Date(),
34
            verbosity: Verbosity.info
35
        )
36
        loggerHandler.handle(logEntry: logEntry)
37
        
38
        XCTAssertEqual(
39
            try tempFileContents(),
40
            SimpleLogEntryTextFormatter().format(logEntry: logEntry) + "\n"
41
        )
42
    }
43
    
44
    func test___handling_coordinates___alters_message___filters_out_context_key_coordinates() throws {
45
        let logEntry = LogEntry(
46
            file: "file",
47
            line: 42,
48
            coordinates: [
49
                LogEntryCoordinate(name: "coordinate"),
50
                LogEntryCoordinate(name: "123"),
51
                LogEntryCoordinate(name: ContextualLogger.ContextKeys.hostname.rawValue, value: "value"),
52
            ],
53
            message: "message",
54
            timestamp: Date(),
55
            verbosity: Verbosity.info
56
        )
57
        loggerHandler.handle(logEntry: logEntry)
58
        
59
        XCTAssertEqual(
60
            try tempFileContents(),
61
            SimpleLogEntryTextFormatter().format(
62
                logEntry: logEntry.with(
63
                    coordinates: [
64
                        LogEntryCoordinate(name: "coordinate"),
65
                        LogEntryCoordinate(name: "123"),
66
                    ]
67
                )
68
            ) + "\n"
69
        )
70
    }
71
    
72
    func test___non_closable_file___is_not_closed() throws {
73
        let fileHandler = FakeFileHandle()
74
        let loggerHandler = FileHandleLoggerHandler(
75
            dateProvider: DateProviderFixture(),
76
            fileHandle: fileHandler,
77
            logEntryTextFormatter: SimpleLogEntryTextFormatter(),
78
            fileHandleShouldBeClosed: false,
79
            skipMetadataFlag: nil
80
        )
81
        loggerHandler.tearDownLogging(timeout: 10)
82
        
83
        XCTAssertFalse(fileHandler.isClosed)
84
    }
85
    
86
    func test___closable_file___is_closed() throws {
87
        let fileHandler = FakeFileHandle()
88
        let loggerHandler = FileHandleLoggerHandler(
89
            dateProvider: DateProviderFixture(),
90
            fileHandle: fileHandler,
91
            logEntryTextFormatter: SimpleLogEntryTextFormatter(),
92
            fileHandleShouldBeClosed: true,
93
            skipMetadataFlag: nil
94
        )
95
        loggerHandler.tearDownLogging(timeout: 10)
96
        
97
        XCTAssertTrue(fileHandler.isClosed)
98
    }
99
    
100
    func test___closable_file___is_closed_only_once() throws {
101
        let fileHandler = FakeFileHandle()
102
        let loggerHandler = FileHandleLoggerHandler(
103
            dateProvider: DateProviderFixture(),
104
            fileHandle: fileHandler,
105
            logEntryTextFormatter: SimpleLogEntryTextFormatter(),
106
            fileHandleShouldBeClosed: true,
107
            skipMetadataFlag: nil
108
        )
109
        loggerHandler.tearDownLogging(timeout: 10)
110
        loggerHandler.tearDownLogging(timeout: 10)
111
        
112
        XCTAssertEqual(fileHandler.closeCounter, 1)
113
    }
114
    
115
    private func tempFileContents() throws -> String {
116
        return try String(contentsOf: tempFile.absolutePath.fileUrl)
117
    }
118
}
119

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.