Skip to content

Commit 2aeed51

Browse files
committed
2 parents 18c291f + 4dbb5ad commit 2aeed51

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

src/NerdBank.GitVersioning.Tests/NerdBank.GitVersioning.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
<Compile Include="GitExtensionsTests.cs" />
5151
<Compile Include="MSBuildExtensions.cs" />
5252
<Compile Include="Properties\AssemblyInfo.cs" />
53+
<Compile Include="RepoFinderTests.cs" />
5354
<Compile Include="RepoTestBase.cs" />
5455
<Compile Include="SemanticVersionTests.cs" />
5556
<Compile Include="TestUtilities.cs" />
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Reflection;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
using Xunit;
9+
using Xunit.Abstractions;
10+
11+
namespace Nerdbank.GitVersioning.Tests
12+
{
13+
public class RepoFinderTests : RepoTestBase
14+
{
15+
private MethodInfo _findGitDirMi;
16+
private string _gitDir;
17+
18+
public RepoFinderTests(ITestOutputHelper logger) : base(logger)
19+
{
20+
this.InitializeSourceControl();
21+
_findGitDirMi = typeof(VersionOracle).GetMethod("FindGitDir", BindingFlags.Static | BindingFlags.NonPublic);
22+
_gitDir = Path.Combine(this.RepoPath, ".git");
23+
}
24+
25+
private string FindGitDir(string startingDir)
26+
{
27+
var result = _findGitDirMi.Invoke(null, new[] { startingDir });
28+
return (string)result;
29+
}
30+
31+
private DirectoryInfo CreateSubDirectory()
32+
{
33+
return Directory.CreateDirectory(Path.Combine(this.RepoPath, Guid.NewGuid().ToString()));
34+
}
35+
36+
[Fact]
37+
public void RepoRoot()
38+
{
39+
Assert.Equal(FindGitDir(this.RepoPath), _gitDir);
40+
}
41+
42+
[Fact]
43+
public void SubDirectory()
44+
{
45+
var dir = CreateSubDirectory();
46+
Assert.Equal(FindGitDir(dir.FullName), _gitDir);
47+
}
48+
49+
[Theory]
50+
[InlineData("")]
51+
[InlineData("askdjn")]
52+
[InlineData("gitdir: ../qwerty")]
53+
public void SubDirectoryWithInvalidGitFile(string contents)
54+
{
55+
var dir = CreateSubDirectory();
56+
File.WriteAllText(Path.Combine(dir.FullName, ".git"), contents);
57+
Assert.Equal(FindGitDir(dir.FullName), _gitDir);
58+
}
59+
60+
[Fact]
61+
public void SubDirectoryWithValidGitFile()
62+
{
63+
var submodule = CreateSubDirectory();
64+
var gitDir = CreateSubDirectory();
65+
File.WriteAllText(Path.Combine(submodule.FullName, ".git"), $"gitdir: ../{gitDir.Name}");
66+
Assert.Equal(FindGitDir(submodule.FullName), gitDir.FullName);
67+
}
68+
69+
[Fact]
70+
public void NonRepoDirectory()
71+
{
72+
Assert.Equal(FindGitDir(Path.GetTempPath()), null);
73+
}
74+
}
75+
}

0 commit comments

Comments
 (0)