1
- using Xunit ;
1
+ using System . Globalization ;
2
+ using Xunit ;
2
3
3
4
namespace Serilog . Sinks . File . Tests ;
4
5
5
6
public class PathRollerTests
6
7
{
8
+ [ Theory ]
9
+ [ InlineData ( null ) ]
10
+ [ InlineData ( 2 ) ]
11
+ public void GetLogFilePath_WhenPathContainsDateTokenAtStart_ShouldReplaceDateToken ( int ? sequenceNumber )
12
+ {
13
+ var now = new DateTime ( 2013 , 7 , 14 , 3 , 24 , 9 , 980 ) ;
14
+ string expectedName = sequenceNumber is null
15
+ ? $ "{ now : yyyyMMdd} -logs.txt"
16
+ : $ "{ now : yyyyMMdd} _{ sequenceNumber . Value . ToString ( "000" , CultureInfo . InvariantCulture ) } -logs.txt";
17
+
18
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "{date}-logs.txt" ) , RollingInterval . Day ) ;
19
+ roller . GetLogFilePath ( now , sequenceNumber , out string actualName ) ;
20
+
21
+ AssertEqualAbsolute ( Path . Combine ( "Logs" , expectedName ) , actualName ) ;
22
+ }
23
+
24
+ [ Theory ]
25
+ [ InlineData ( null ) ]
26
+ [ InlineData ( 2 ) ]
27
+ public void GetLogFilePath_WhenPathContainsDateTokenAtEnd_ShouldReplaceDateToken ( int ? sequenceNumber )
28
+ {
29
+ var now = new DateTime ( 2013 , 7 , 14 , 3 , 24 , 9 , 980 ) ;
30
+ string expectedName = sequenceNumber is null
31
+ ? $ "logs-{ now : yyyyMMdd} .txt"
32
+ : $ "logs-{ now : yyyyMMdd} _{ sequenceNumber . Value . ToString ( "000" , CultureInfo . InvariantCulture ) } .txt";
33
+
34
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "logs-{Date}.txt" ) , RollingInterval . Day ) ;
35
+ roller . GetLogFilePath ( now , sequenceNumber , out string actualName ) ;
36
+
37
+ AssertEqualAbsolute ( Path . Combine ( "Logs" , expectedName ) , actualName ) ;
38
+ }
39
+
7
40
[ Fact ]
8
41
public void TheLogFileIncludesDateToken ( )
9
42
{
@@ -22,6 +55,15 @@ public void ANonZeroIncrementIsIncludedAndPadded()
22
55
AssertEqualAbsolute ( Path . Combine ( "Logs" , "log-20130714_012.txt" ) , path ) ;
23
56
}
24
57
58
+ [ Fact ]
59
+ public void ANonZeroIncrementIsIncludedAndPaddedWhenDatePlaceHolderExists ( )
60
+ {
61
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "{Date}-log.txt" ) , RollingInterval . Day ) ;
62
+ var now = new DateTime ( 2013 , 7 , 14 , 3 , 24 , 9 , 980 ) ;
63
+ roller . GetLogFilePath ( now , 12 , out var path ) ;
64
+ AssertEqualAbsolute ( Path . Combine ( "Logs" , "20130714_012-log.txt" ) , path ) ;
65
+ }
66
+
25
67
static void AssertEqualAbsolute ( string path1 , string path2 )
26
68
{
27
69
var abs1 = Path . GetFullPath ( path1 ) ;
@@ -36,6 +78,13 @@ public void TheRollerReturnsTheLogFileDirectory()
36
78
AssertEqualAbsolute ( "Logs" , roller . LogFileDirectory ) ;
37
79
}
38
80
81
+ [ Fact ]
82
+ public void TheRollerReturnsTheLogFileDirectoryWhenDatePlaceHolderExists ( )
83
+ {
84
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "{Date}-log.txt" ) , RollingInterval . Day ) ;
85
+ AssertEqualAbsolute ( "Logs" , roller . LogFileDirectory ) ;
86
+ }
87
+
39
88
[ Fact ]
40
89
public void TheLogFileIsNotRequiredToIncludeAnExtension ( )
41
90
{
@@ -45,6 +94,15 @@ public void TheLogFileIsNotRequiredToIncludeAnExtension()
45
94
AssertEqualAbsolute ( Path . Combine ( "Logs" , "log-20130714" ) , path ) ;
46
95
}
47
96
97
+ [ Fact ]
98
+ public void TheLogFileIsNotRequiredToIncludeAnExtensionWhenDatePlaceHolderExists ( )
99
+ {
100
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "{Date}-log" ) , RollingInterval . Day ) ;
101
+ var now = new DateTime ( 2013 , 7 , 14 , 3 , 24 , 9 , 980 ) ;
102
+ roller . GetLogFilePath ( now , null , out var path ) ;
103
+ AssertEqualAbsolute ( Path . Combine ( "Logs" , "20130714-log" ) , path ) ;
104
+ }
105
+
48
106
[ Fact ]
49
107
public void TheLogFileIsNotRequiredToIncludeADirectory ( )
50
108
{
@@ -54,13 +112,24 @@ public void TheLogFileIsNotRequiredToIncludeADirectory()
54
112
AssertEqualAbsolute ( "log-20130714" , path ) ;
55
113
}
56
114
115
+ [ Fact ]
116
+ public void TheLogFileIsNotRequiredToIncludeADirectoryWhenDatePlaceHolderExists ( )
117
+ {
118
+ var roller = new PathRoller ( "{Date}-log" , RollingInterval . Day ) ;
119
+ var now = new DateTime ( 2013 , 7 , 14 , 3 , 24 , 9 , 980 ) ;
120
+ roller . GetLogFilePath ( now , null , out var path ) ;
121
+ AssertEqualAbsolute ( "20130714-log" , path ) ;
122
+ }
123
+
57
124
[ Fact ]
58
125
public void MatchingExcludesSimilarButNonMatchingFiles ( )
59
126
{
60
127
var roller = new PathRoller ( "log-.txt" , RollingInterval . Day ) ;
61
128
const string similar1 = "log-0.txt" ;
62
129
const string similar2 = "log-hello.txt" ;
63
- var matched = roller . SelectMatches ( new [ ] { similar1 , similar2 } ) ;
130
+ const string similar3 = "0-log.txt" ;
131
+ const string similar4 = "hello-log.txt" ;
132
+ var matched = roller . SelectMatches ( new [ ] { similar1 , similar2 , similar3 , similar4 } ) ;
64
133
Assert . Empty ( matched ) ;
65
134
}
66
135
@@ -71,9 +140,17 @@ public void TheDirectorSearchPatternUsesWildcardInPlaceOfDate()
71
140
Assert . Equal ( "log-*.txt" , roller . DirectorySearchPattern ) ;
72
141
}
73
142
143
+ [ Fact ]
144
+ public void TheDirectorSearchPatternUsesWildcardInPlaceOfDateWhenDatePlaceHolderExists ( )
145
+ {
146
+ var roller = new PathRoller ( Path . Combine ( "Logs" , "{Date}-log.txt" ) , RollingInterval . Day ) ;
147
+ Assert . Equal ( "*-log.txt" , roller . DirectorySearchPattern ) ;
148
+ }
149
+
74
150
[ Theory ]
75
151
[ InlineData ( "log-.txt" , "log-20131210.txt" , "log-20131210_031.txt" , RollingInterval . Day ) ]
76
152
[ InlineData ( "log-.txt" , "log-2013121013.txt" , "log-2013121013_031.txt" , RollingInterval . Hour ) ]
153
+ [ InlineData ( "{Date}-log.txt" , "2013121013-log.txt" , "2013121013_031-log.txt" , RollingInterval . Hour ) ]
77
154
public void MatchingSelectsFiles ( string template , string zeroth , string thirtyFirst , RollingInterval interval )
78
155
{
79
156
var roller = new PathRoller ( template , interval ) ;
@@ -86,6 +163,7 @@ public void MatchingSelectsFiles(string template, string zeroth, string thirtyFi
86
163
[ Theory ]
87
164
[ InlineData ( "log-.txt" , "log-20150101.txt" , "log-20141231.txt" , RollingInterval . Day ) ]
88
165
[ InlineData ( "log-.txt" , "log-2015010110.txt" , "log-2015010109.txt" , RollingInterval . Hour ) ]
166
+ [ InlineData ( "{Date}-log.txt" , "2015010110-log.txt" , "2015010109-log.txt" , RollingInterval . Hour ) ]
89
167
public void MatchingParsesSubstitutions ( string template , string newer , string older , RollingInterval interval )
90
168
{
91
169
var roller = new PathRoller ( template , interval ) ;
0 commit comments