Skip to content

Commit 9e7bd44

Browse files
committed
Move Repository.Index.RetrieveStatus() related tests to a separate Fixture
1 parent 2ba6961 commit 9e7bd44

File tree

3 files changed

+130
-119
lines changed

3 files changed

+130
-119
lines changed

LibGit2Sharp.Tests/IndexFixture.cs

Lines changed: 0 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -488,125 +488,6 @@ public void RemovingAInvalidFileThrows(string filepath)
488488
}
489489
}
490490

491-
[Test]
492-
public void CanRetrieveTheStatusOfAFile()
493-
{
494-
using (var repo = new Repository(StandardTestRepoPath))
495-
{
496-
FileStatus status = repo.Index.RetrieveStatus("new_tracked_file.txt");
497-
status.ShouldEqual(FileStatus.Added);
498-
}
499-
}
500-
501-
[Test]
502-
public void RetrievingTheStatusOfADirectoryThrows()
503-
{
504-
using (var repo = new Repository(StandardTestRepoPath))
505-
{
506-
Assert.Throws<LibGit2Exception>(() => { FileStatus status = repo.Index.RetrieveStatus("1"); });
507-
}
508-
}
509-
510-
[Test]
511-
public void CanRetrieveTheStatusOfTheWholeWorkingDirectory()
512-
{
513-
TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(StandardTestRepoWorkingDirPath);
514-
using (var repo = new Repository(path.RepositoryPath))
515-
{
516-
const string file = "modified_staged_file.txt";
517-
518-
RepositoryStatus status = repo.Index.RetrieveStatus();
519-
520-
IndexEntry indexEntry = repo.Index[file];
521-
indexEntry.State.ShouldEqual(FileStatus.Staged);
522-
523-
status.ShouldNotBeNull();
524-
status.Count().ShouldEqual(6);
525-
status.IsDirty.ShouldBeTrue();
526-
527-
status.Untracked.Single().ShouldEqual("new_untracked_file.txt");
528-
status.Modified.Single().ShouldEqual("modified_unstaged_file.txt");
529-
status.Missing.Single().ShouldEqual("deleted_unstaged_file.txt");
530-
status.Added.Single().ShouldEqual("new_tracked_file.txt");
531-
status.Staged.Single().ShouldEqual(file);
532-
status.Removed.Single().ShouldEqual("deleted_staged_file.txt");
533-
534-
File.AppendAllText(Path.Combine(repo.Info.WorkingDirectory, file),
535-
"Tclem's favorite commit message: boom");
536-
537-
indexEntry.State.ShouldEqual(FileStatus.Staged | FileStatus.Modified);
538-
539-
RepositoryStatus status2 = repo.Index.RetrieveStatus();
540-
541-
status2.ShouldNotBeNull();
542-
status2.Count().ShouldEqual(6);
543-
status2.IsDirty.ShouldBeTrue();
544-
545-
status2.Untracked.Single().ShouldEqual("new_untracked_file.txt");
546-
CollectionAssert.AreEqual(new[] { file, "modified_unstaged_file.txt" }, status2.Modified);
547-
status2.Missing.Single().ShouldEqual("deleted_unstaged_file.txt");
548-
status2.Added.Single().ShouldEqual("new_tracked_file.txt");
549-
status2.Staged.Single().ShouldEqual(file);
550-
status2.Removed.Single().ShouldEqual("deleted_staged_file.txt");
551-
}
552-
}
553-
554-
[Test]
555-
public void CanRetrieveTheStatusOfANewRepository()
556-
{
557-
SelfCleaningDirectory scd = BuildSelfCleaningDirectory();
558-
559-
using (var repo = Repository.Init(scd.DirectoryPath))
560-
{
561-
RepositoryStatus status = repo.Index.RetrieveStatus();
562-
status.ShouldNotBeNull();
563-
status.Count().ShouldEqual(0);
564-
status.IsDirty.ShouldBeFalse();
565-
566-
status.Untracked.Count().ShouldEqual(0);
567-
status.Modified.Count().ShouldEqual(0);
568-
status.Missing.Count().ShouldEqual(0);
569-
status.Added.Count().ShouldEqual(0);
570-
status.Staged.Count().ShouldEqual(0);
571-
status.Removed.Count().ShouldEqual(0);
572-
}
573-
}
574-
575-
[Test]
576-
public void RetrievingTheStatusOfARepositoryReturnNativeFilePaths()
577-
{
578-
// Initialize a new repository
579-
SelfCleaningDirectory scd = BuildSelfCleaningDirectory();
580-
581-
const string directoryName = "directory";
582-
const string fileName = "Testfile.txt";
583-
584-
// Create a file and insert some content
585-
string directoryPath = Path.Combine(scd.RootedDirectoryPath, directoryName);
586-
string filePath = Path.Combine(directoryPath, fileName);
587-
588-
Directory.CreateDirectory(directoryPath);
589-
File.WriteAllText(filePath, "Anybody out there?");
590-
591-
// Open the repository
592-
using (var repo = Repository.Init(scd.DirectoryPath))
593-
{
594-
// Add the file to the index
595-
repo.Index.Stage(filePath);
596-
597-
// Get the repository status
598-
RepositoryStatus repoStatus = repo.Index.RetrieveStatus();
599-
600-
repoStatus.Count().ShouldEqual(1);
601-
var statusEntry = repoStatus.Single();
602-
603-
string expectedPath = string.Format("{0}{1}{2}", directoryName, Path.DirectorySeparatorChar, fileName);
604-
statusEntry.FilePath.ShouldEqual(expectedPath);
605-
606-
repoStatus.Added.Single().ShouldEqual(statusEntry.FilePath);
607-
}
608-
}
609-
610491
[Test]
611492
public void PathsOfIndexEntriesAreExpressedInNativeFormat()
612493
{

LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<Compile Include="ResetFixture.cs" />
4747
<Compile Include="LazyFixture.cs" />
4848
<Compile Include="RemoteFixture.cs" />
49+
<Compile Include="StatusFixture.cs" />
4950
<Compile Include="TestHelpers\BaseFixture.cs" />
5051
<Compile Include="BlobFixture.cs" />
5152
<Compile Include="BranchFixture.cs" />

LibGit2Sharp.Tests/StatusFixture.cs

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
using System.IO;
2+
using System.Linq;
3+
using LibGit2Sharp.Tests.TestHelpers;
4+
using NUnit.Framework;
5+
6+
namespace LibGit2Sharp.Tests
7+
{
8+
public class StatusFixture : BaseFixture
9+
{
10+
[Test]
11+
public void CanRetrieveTheStatusOfAFile()
12+
{
13+
using (var repo = new Repository(StandardTestRepoPath))
14+
{
15+
FileStatus status = repo.Index.RetrieveStatus("new_tracked_file.txt");
16+
status.ShouldEqual(FileStatus.Added);
17+
}
18+
}
19+
20+
[Test]
21+
public void RetrievingTheStatusOfADirectoryThrows()
22+
{
23+
using (var repo = new Repository(StandardTestRepoPath))
24+
{
25+
Assert.Throws<LibGit2Exception>(() => { FileStatus status = repo.Index.RetrieveStatus("1"); });
26+
}
27+
}
28+
29+
[Test]
30+
public void CanRetrieveTheStatusOfTheWholeWorkingDirectory()
31+
{
32+
TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(StandardTestRepoWorkingDirPath);
33+
using (var repo = new Repository(path.RepositoryPath))
34+
{
35+
const string file = "modified_staged_file.txt";
36+
37+
RepositoryStatus status = repo.Index.RetrieveStatus();
38+
39+
IndexEntry indexEntry = repo.Index[file];
40+
indexEntry.State.ShouldEqual(FileStatus.Staged);
41+
42+
status.ShouldNotBeNull();
43+
status.Count().ShouldEqual(6);
44+
status.IsDirty.ShouldBeTrue();
45+
46+
status.Untracked.Single().ShouldEqual("new_untracked_file.txt");
47+
status.Modified.Single().ShouldEqual("modified_unstaged_file.txt");
48+
status.Missing.Single().ShouldEqual("deleted_unstaged_file.txt");
49+
status.Added.Single().ShouldEqual("new_tracked_file.txt");
50+
status.Staged.Single().ShouldEqual(file);
51+
status.Removed.Single().ShouldEqual("deleted_staged_file.txt");
52+
53+
File.AppendAllText(Path.Combine(repo.Info.WorkingDirectory, file),
54+
"Tclem's favorite commit message: boom");
55+
56+
indexEntry.State.ShouldEqual(FileStatus.Staged | FileStatus.Modified);
57+
58+
RepositoryStatus status2 = repo.Index.RetrieveStatus();
59+
60+
status2.ShouldNotBeNull();
61+
status2.Count().ShouldEqual(6);
62+
status2.IsDirty.ShouldBeTrue();
63+
64+
status2.Untracked.Single().ShouldEqual("new_untracked_file.txt");
65+
CollectionAssert.AreEqual(new[] { file, "modified_unstaged_file.txt" }, status2.Modified);
66+
status2.Missing.Single().ShouldEqual("deleted_unstaged_file.txt");
67+
status2.Added.Single().ShouldEqual("new_tracked_file.txt");
68+
status2.Staged.Single().ShouldEqual(file);
69+
status2.Removed.Single().ShouldEqual("deleted_staged_file.txt");
70+
}
71+
}
72+
73+
[Test]
74+
public void CanRetrieveTheStatusOfANewRepository()
75+
{
76+
SelfCleaningDirectory scd = BuildSelfCleaningDirectory();
77+
78+
using (Repository repo = Repository.Init(scd.DirectoryPath))
79+
{
80+
RepositoryStatus status = repo.Index.RetrieveStatus();
81+
status.ShouldNotBeNull();
82+
status.Count().ShouldEqual(0);
83+
status.IsDirty.ShouldBeFalse();
84+
85+
status.Untracked.Count().ShouldEqual(0);
86+
status.Modified.Count().ShouldEqual(0);
87+
status.Missing.Count().ShouldEqual(0);
88+
status.Added.Count().ShouldEqual(0);
89+
status.Staged.Count().ShouldEqual(0);
90+
status.Removed.Count().ShouldEqual(0);
91+
}
92+
}
93+
94+
[Test]
95+
public void RetrievingTheStatusOfARepositoryReturnNativeFilePaths()
96+
{
97+
// Initialize a new repository
98+
SelfCleaningDirectory scd = BuildSelfCleaningDirectory();
99+
100+
const string directoryName = "directory";
101+
const string fileName = "Testfile.txt";
102+
103+
// Create a file and insert some content
104+
string directoryPath = Path.Combine(scd.RootedDirectoryPath, directoryName);
105+
string filePath = Path.Combine(directoryPath, fileName);
106+
107+
Directory.CreateDirectory(directoryPath);
108+
File.WriteAllText(filePath, "Anybody out there?");
109+
110+
// Open the repository
111+
using (Repository repo = Repository.Init(scd.DirectoryPath))
112+
{
113+
// Add the file to the index
114+
repo.Index.Stage(filePath);
115+
116+
// Get the repository status
117+
RepositoryStatus repoStatus = repo.Index.RetrieveStatus();
118+
119+
repoStatus.Count().ShouldEqual(1);
120+
StatusEntry statusEntry = repoStatus.Single();
121+
122+
string expectedPath = string.Format("{0}{1}{2}", directoryName, Path.DirectorySeparatorChar, fileName);
123+
statusEntry.FilePath.ShouldEqual(expectedPath);
124+
125+
repoStatus.Added.Single().ShouldEqual(statusEntry.FilePath);
126+
}
127+
}
128+
}
129+
}

0 commit comments

Comments
 (0)