Skip to content

Commit 9f90563

Browse files
Merge branch 'pvoelker-master' into develop
2 parents e46b7d8 + 76b974a commit 9f90563

File tree

2 files changed

+486
-3
lines changed

2 files changed

+486
-3
lines changed

src/Cake.FileHelpers.Tests/FileHelperTests.cs

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Cake.Xamarin.Tests.Fakes;
44
using Cake.Core.IO;
55
using Xunit;
6+
using System.Text;
67

78
namespace Cake.FileHelpers.Tests
89
{
@@ -82,6 +83,17 @@ public void FindTextInFiles()
8283
Assert.Single (monkeyFiles);
8384
}
8485

86+
[Fact]
87+
public void FindTextInFilesWithUTF8Encoding()
88+
{
89+
SetupFilesUTF8();
90+
91+
var files = context.CakeContext.FindTextInFiles("./testdata/*-utf8.txt", Encoding.UTF8, "Monkey🐒");
92+
93+
Assert.NotNull(files);
94+
Assert.Single(files);
95+
}
96+
8597
[Fact]
8698
public void FindRegexInFiles()
8799
{
@@ -93,6 +105,16 @@ public void FindRegexInFiles()
93105
Assert.Single (files);
94106
}
95107

108+
[Fact]
109+
public void FindRegexInFilesWithUTF8Encoding()
110+
{
111+
SetupFilesUTF8();
112+
113+
var files = context.CakeContext.FindRegexInFiles("./testdata/*-utf8.txt", Encoding.UTF8, @"\s{1}Monkey🐒\s{1,}");
114+
115+
Assert.NotNull(files);
116+
Assert.Single(files);
117+
}
96118

97119
[Fact]
98120
public void ReplaceTextInFiles()
@@ -110,6 +132,23 @@ public void ReplaceTextInFiles()
110132
}
111133
}
112134

135+
[Fact]
136+
public void ReplaceTextInFilesWithUTF8Encoding()
137+
{
138+
SetupFilesUTF8();
139+
140+
var files = context.CakeContext.ReplaceTextInFiles("./testdata/*.txt", Encoding.UTF8, "Monkey🐒", "Tamarin");
141+
142+
Assert.NotNull(files);
143+
Assert.Single(files);
144+
145+
foreach (var f in files)
146+
{
147+
var contents = context.CakeContext.FileReadText(f, Encoding.UTF8);
148+
Assert.Equal(string.Format(PATTERN_FILE_BASE_VALUE, "Tamarin"), contents);
149+
}
150+
}
151+
113152
[Fact]
114153
public void ReplaceRegexInFiles()
115154
{
@@ -126,9 +165,29 @@ public void ReplaceRegexInFiles()
126165
}
127166
}
128167

168+
[Fact]
169+
public void ReplaceRegexInFilesWithUTF8Encoding()
170+
{
171+
SetupFilesUTF8();
172+
173+
var files = context.CakeContext.ReplaceRegexInFiles("./testdata/*-utf8.txt", Encoding.UTF8, @"\s{1}Monkey🐒\s{1,}", " Tamarin ");
174+
175+
Assert.NotNull(files);
176+
Assert.Single(files);
177+
178+
foreach (var f in files)
179+
{
180+
var contents = context.CakeContext.FileReadText(f, Encoding.UTF8);
181+
Assert.Equal(string.Format(PATTERN_FILE_BASE_VALUE, "Tamarin"), contents);
182+
}
183+
}
184+
129185
public const string GROUPS_FILE = "./testdata/Groups.txt";
186+
public const string GROUPS_FILE_UTF8 = "./testdata/Groups-utf8.txt";
130187
public const string GROUPS_FILE_CONTENT = "Hello World! This is A quick Test to Capture multiple Groups.";
188+
public const string GROUPS_FILE_CONTENT_UTF8 = "🐒Hello 🐒World! 🐒This is A quick 🐒Test to 🐒Capture multiple 🐒Groups.";
131189
public const string GROUPS_PATTERN = "([A-Z])(\\w+)";
190+
public const string GROUPS_PATTERN_UTF8 = "(🐒[A-Z])(\\w+)";
132191

133192
[Fact]
134193
public void FindRegexMatchesGroupsInFile()
@@ -144,6 +203,20 @@ public void FindRegexMatchesGroupsInFile()
144203
Assert.Equal (3, g.Count);
145204
}
146205

206+
[Fact]
207+
public void FindRegexMatchesGroupsInFileWithUTF8Encoding()
208+
{
209+
context.CakeContext.FileWriteText(GROUPS_FILE_UTF8, GROUPS_FILE_CONTENT_UTF8);
210+
211+
var matchesGroups = context.CakeContext.FindRegexMatchesGroupsInFile(GROUPS_FILE_UTF8, GROUPS_PATTERN_UTF8, RegexOptions.None);
212+
213+
Assert.NotNull(matchesGroups);
214+
Assert.Equal(6, matchesGroups.Count);
215+
216+
foreach (var g in matchesGroups)
217+
Assert.Equal(3, g.Count);
218+
}
219+
147220
[Fact]
148221
public void FindRegexMatchGroupsInFile()
149222
{
@@ -155,6 +228,18 @@ public void FindRegexMatchGroupsInFile()
155228
Assert.Equal (3, matchGroups.Count);
156229
}
157230

231+
232+
[Fact]
233+
public void FindRegexMatchGroupsInFileWithUTF8Encoding()
234+
{
235+
context.CakeContext.FileWriteText(GROUPS_FILE_UTF8, GROUPS_FILE_CONTENT_UTF8);
236+
237+
var matchGroups = context.CakeContext.FindRegexMatchGroupsInFile(GROUPS_FILE_UTF8, GROUPS_PATTERN_UTF8, RegexOptions.None);
238+
239+
Assert.NotNull(matchGroups);
240+
Assert.Equal(3, matchGroups.Count);
241+
}
242+
158243
[Fact]
159244
public void FindRegexMatchGroupInFile()
160245
{
@@ -168,6 +253,19 @@ public void FindRegexMatchGroupInFile()
168253
Assert.Equal ("ello", matchGroup.Value);
169254
}
170255

256+
[Fact]
257+
public void FindRegexMatchGroupInFileWithUTF8Encoding()
258+
{
259+
context.CakeContext.FileWriteText(GROUPS_FILE_UTF8, GROUPS_FILE_CONTENT_UTF8);
260+
261+
var matchGroup = context.CakeContext.FindRegexMatchGroupInFile(GROUPS_FILE_UTF8, GROUPS_PATTERN_UTF8, 2, RegexOptions.None);
262+
var invalidMatchGroup = context.CakeContext.FindRegexMatchGroupInFile(GROUPS_FILE_UTF8, GROUPS_PATTERN_UTF8, 8, RegexOptions.None);
263+
264+
Assert.NotNull(matchGroup);
265+
Assert.Null(invalidMatchGroup);
266+
Assert.Equal("ello", matchGroup.Value);
267+
}
268+
171269
public const string PATTERN_FILE_BASE_VALUE = "The {0} makes great software.\nThis is not a surprise.";
172270

173271
void SetupFiles()
@@ -179,6 +277,18 @@ void SetupFiles()
179277
string.Format (PATTERN_FILE_BASE_VALUE, i == 2 ? "Monkey" : "Ape"));
180278
}
181279
}
280+
281+
void SetupFilesUTF8()
282+
{
283+
// Setup files
284+
for (int i = 1; i < 5; i++)
285+
{
286+
context.CakeContext.FileWriteText(
287+
string.Format("./testdata/{0}-utf8.txt", i),
288+
Encoding.UTF8,
289+
string.Format(PATTERN_FILE_BASE_VALUE, i == 2 ? "Monkey🐒" : "Ape🦧"));
290+
}
291+
}
182292
}
183293
}
184294

0 commit comments

Comments
 (0)