Skip to main content
Glama
Singtaa
by Singtaa
GitIgnoreTests.cs4.93 kB
using NUnit.Framework; using System.IO; namespace UnityMcp.Tests { [TestFixture] public class GitIgnoreTests { string _tempDir; string _gitignorePath; [SetUp] public void SetUp() { _tempDir = Path.Combine(Path.GetTempPath(), $"GitIgnoreTests_{System.Guid.NewGuid():N}"); Directory.CreateDirectory(_tempDir); _gitignorePath = Path.Combine(_tempDir, ".gitignore"); } [TearDown] public void TearDown() { if (Directory.Exists(_tempDir)) { Directory.Delete(_tempDir, true); } } [Test] public void LoadFromRootGitIgnore_NoFile_ReturnsEmptyIgnore() { var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsFalse(gitignore.IsIgnored("anyfile.txt", false)); } [Test] public void IsIgnored_SimplePattern_MatchesFile() { File.WriteAllText(_gitignorePath, "*.meta\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("test.meta", false)); Assert.IsTrue(gitignore.IsIgnored("folder/test.meta", false)); Assert.IsFalse(gitignore.IsIgnored("test.cs", false)); } [Test] public void IsIgnored_DirectoryPattern_MatchesOnlyDirectories() { File.WriteAllText(_gitignorePath, "Library/\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("Library", true)); Assert.IsTrue(gitignore.IsIgnored("Library/", true)); Assert.IsFalse(gitignore.IsIgnored("Library", false)); // File named Library } [Test] public void IsIgnored_NegationPattern_Unignores() { File.WriteAllText(_gitignorePath, "*.meta\n!important.meta\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("test.meta", false)); Assert.IsFalse(gitignore.IsIgnored("important.meta", false)); } [Test] public void IsIgnored_AnchoredPattern_MatchesFromRoot() { File.WriteAllText(_gitignorePath, "/Temp\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("Temp", true)); Assert.IsFalse(gitignore.IsIgnored("SubFolder/Temp", true)); } [Test] public void IsIgnored_DoubleStarPattern_MatchesAnyPath() { File.WriteAllText(_gitignorePath, "**/build/\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("build", true)); Assert.IsTrue(gitignore.IsIgnored("project/build", true)); Assert.IsTrue(gitignore.IsIgnored("deep/nested/build", true)); } [Test] public void IsIgnored_CommentLines_AreIgnored() { File.WriteAllText(_gitignorePath, "# This is a comment\n*.meta\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("test.meta", false)); Assert.IsFalse(gitignore.IsIgnored("# This is a comment", false)); } [Test] public void IsIgnored_EmptyLines_AreIgnored() { File.WriteAllText(_gitignorePath, "*.meta\n\n*.log\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("test.meta", false)); Assert.IsTrue(gitignore.IsIgnored("test.log", false)); } [Test] public void IsIgnored_ParentIgnored_ChildAlsoIgnored() { File.WriteAllText(_gitignorePath, "Library/\n"); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("Library", true)); Assert.IsTrue(gitignore.IsIgnored("Library/ScriptAssemblies", true)); Assert.IsTrue(gitignore.IsIgnored("Library/ScriptAssemblies/Assembly.dll", false)); } [Test] public void IsIgnored_CommonUnityPatterns() { File.WriteAllText(_gitignorePath, @" Library/ Temp/ Logs/ *.csproj *.sln *.meta "); var gitignore = GitIgnore.LoadFromRootGitIgnore(_tempDir); Assert.IsTrue(gitignore.IsIgnored("Library", true)); Assert.IsTrue(gitignore.IsIgnored("Temp", true)); Assert.IsTrue(gitignore.IsIgnored("Logs", true)); Assert.IsTrue(gitignore.IsIgnored("Project.csproj", false)); Assert.IsTrue(gitignore.IsIgnored("Project.sln", false)); Assert.IsTrue(gitignore.IsIgnored("Script.cs.meta", false)); Assert.IsFalse(gitignore.IsIgnored("Assets", true)); Assert.IsFalse(gitignore.IsIgnored("Assets/Script.cs", false)); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Singtaa/UnityMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server