142 lines
4.0 KiB
C#
142 lines
4.0 KiB
C#
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace EpicGames.Core.Tests
|
|
{
|
|
[TestClass]
|
|
public class FileSetTests
|
|
{
|
|
private readonly DirectoryReference _tempDir;
|
|
|
|
public FileSetTests()
|
|
{
|
|
_tempDir = CreateTempDir();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetContainsAllFiles()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
Assert.IsTrue(allFiles.Count() == 4);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterContainsOnlyFileTypeWildcard()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
// Make sure we have filtered to just what is in a sub-directory
|
|
FileSet justMdFile = allFiles.Filter("*.md");
|
|
Assert.IsTrue(justMdFile.Count() == 1);
|
|
|
|
// Make sure filtered fileset contains root level file and sub-directory file
|
|
FileSet justTxtFile = allFiles.Filter("*.txt");
|
|
Assert.IsTrue(justTxtFile.Count() == 2);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterExcludesWildcardWithMinus()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
FileSet withoutMd = allFiles.Filter("*;-*.md");
|
|
Assert.IsTrue(withoutMd.Count() == 3);
|
|
|
|
FileSet withoutTxtFile = allFiles.Filter("*;-*.txt");
|
|
Assert.IsTrue(withoutTxtFile.Count() == 2);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetExceptExcludesFileTypeWildcard()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
// Make sure except properly excludes files in root directory and sub-directories
|
|
FileSet withoutMd = allFiles.Except("*.md");
|
|
Assert.IsTrue(withoutMd.Count() == 3);
|
|
|
|
// Make sure except works with files in the root as well as sub-directories
|
|
FileSet withoutTxtFile = allFiles.Except("*.txt");
|
|
Assert.IsTrue(withoutTxtFile.Count() == 2);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterContainsDirectoryName()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
FileSet results = allFiles.Filter("dir1/dir1.txt");
|
|
Assert.IsTrue(results.Count() == 1);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterContainsMultipleDirectoryName()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
FileSet results = allFiles.Filter("dir1/dir2/dir2.md");
|
|
Assert.IsTrue(results.Count() == 1);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterContainsTripleDotSuffix()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
FileSet results = allFiles.Filter("dir1/...");
|
|
Assert.IsTrue(results.Count() == 2);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FileSetFilterContainsTripleDotPrefixAndSuffix()
|
|
{
|
|
FileSet allFiles = FileSet.FromDirectory(new DirectoryReference(_tempDir.FullName));
|
|
|
|
FileSet results = allFiles.Filter(".../dir2/...");
|
|
Assert.IsTrue(results.Count() == 1);
|
|
}
|
|
|
|
[TestInitialize]
|
|
public void SetupTempDir()
|
|
{
|
|
string rootTxt = Path.Join(_tempDir.FullName, "root.txt");
|
|
File.WriteAllText(rootTxt, "placeholder");
|
|
|
|
string rootPdb = Path.Join(_tempDir.FullName, "rootPdb.pdb");
|
|
File.WriteAllText(rootPdb, "placeholder");
|
|
|
|
string dir1 = Path.Join(_tempDir.FullName, "dir1");
|
|
Directory.CreateDirectory(dir1);
|
|
|
|
string dir1Txt = Path.Join(dir1, "dir1.txt");
|
|
File.WriteAllText(dir1Txt, "placeholder");
|
|
|
|
string dir2 = Path.Join(dir1, "dir2");
|
|
Directory.CreateDirectory(dir2);
|
|
|
|
string dir2Md = Path.Join(dir2, "dir2.md");
|
|
File.WriteAllText(dir2Md, "placeholder");
|
|
}
|
|
|
|
[TestCleanup]
|
|
public void RemoveTempDir()
|
|
{
|
|
if (Directory.Exists(_tempDir.FullName))
|
|
{
|
|
Directory.Delete(_tempDir.FullName, true);
|
|
}
|
|
}
|
|
|
|
private static DirectoryReference CreateTempDir()
|
|
{
|
|
string tempDir = Path.Join(Path.GetTempPath(), "epicgames-core-tests-" + Guid.NewGuid().ToString()[..8]);
|
|
Directory.CreateDirectory(tempDir);
|
|
return new DirectoryReference(tempDir);
|
|
}
|
|
}
|
|
}
|