public void GetSuperprojectCurrentCheckout() { // Create super and sub repo using (CommonTestUtils.GitModuleTestHelper moduleTestHelperSuper = new CommonTestUtils.GitModuleTestHelper("super repo"), moduleTestHelperSub = new CommonTestUtils.GitModuleTestHelper("sub repo")) { // Inital commit in super project moduleTestHelperSuper.Module.GitExecutable.GetOutput(@"commit --allow-empty -m ""Initial commit"""); // Submodules require at least one commit moduleTestHelperSub.Module.GitExecutable.GetOutput(@"commit --allow-empty -m ""Empty commit"""); // Add submodule moduleTestHelperSuper.Module.GitExecutable.GetOutput(GitCommandHelpers.AddSubmoduleCmd(moduleTestHelperSub.Module.WorkingDir.ToPosixPath(), "sub repo", null, true)); moduleTestHelperSuper.Module.GitExecutable.GetOutput(@"commit -am ""Add submodule"""); VsrModule moduleSub = new VsrModule(Path.Combine(moduleTestHelperSuper.Module.WorkingDir, "sub repo").ToPosixPath()); // Init submodule moduleTestHelperSuper.Module.GitExecutable.GetOutput(@"submodule update --init --recursive"); // Commit in submodule moduleSub.GitExecutable.GetOutput(@"commit --allow-empty -am ""First commit"""); string commitRef = moduleSub.GitExecutable.GetOutput("show HEAD").Split('\n')[0].Split(' ')[1]; // Update ref in superproject moduleTestHelperSuper.Module.GitExecutable.GetOutput(@"add ""sub repo"""); moduleTestHelperSuper.Module.GitExecutable.GetOutput(@"commit -am ""Update submodule ref"""); // Assert ThreadHelper.JoinableTaskFactory.Run(async() => { (char code, ObjectId commitId) = await moduleSub.GetSuperprojectCurrentCheckoutAsync(); Assert.AreEqual(32, code); Assert.AreEqual(commitRef, commitId.ToString()); }); } }