public void Success_AlreadyOnIt() { // Setup var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, LcmCache.ModelVersion); MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Is.Empty); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.CLONED)); Assert.That(ModelVersion, Is.EqualTo(LcmCache.ModelVersion)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.True); }
public void Error_NoCommitsInRepository() { // Setup // Create a hg repo that doesn't contain a branch for the current model version var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, LcmCache.ModelVersion); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Does.Contain("new repository with no commits")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.ERROR)); Assert.That(ModelVersion, Is.EqualTo(0)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.False); }
public void Error_NoCommitsInRepository() { // Setup // Create a empty hg repo var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, LcmCache.ModelVersion); MercurialTestHelper.CloneRepo(lDProjectFolderPath, _lfProject.ProjectDir); LanguageDepotMock.Server.Start(); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Does.Contain("Cannot do first commit.")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.HOLD)); }
public void Error_NoBranch_OlderSupportedBranch() { // Setup // Create a hg repo that doesn't contain a branch for the current model version var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, 7000065); // simulate a too old version MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath); MagicStrings.SetMinimalModelVersion(7000065); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.CLONING)); Assert.That(ModelVersion, Is.EqualTo(7000065)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.True); }
public void Success_NoNewChangesFromOthersAndUs() { // Setup TestEnvironment.CopyFwProjectTo(TestLangProj, _lDSettings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _env.Settings.WebWorkDirectory); LanguageDepotMock.Server.Start(); var ldDirectory = Path.Combine(_lDSettings.WebWorkDirectory, TestLangProj); var oldHashOfLd = MercurialTestHelper.GetRevisionOfTip(ldDirectory); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(MercurialTestHelper.GetRevisionOfTip(ldDirectory), Is.EqualTo(oldHashOfLd)); Assert.That(MercurialTestHelper.GetRevisionOfWorkingSet(_lfProject.ProjectDir), Is.EqualTo(oldHashOfLd)); Assert.That(_env.Logger.GetErrors(), Is.Null.Or.Empty); Assert.That(_env.Logger.GetMessages(), Does.Contain("No changes from others")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }
public void Error_CloneHasHigherModelVersion() { // Setup var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, LcmCache.ModelVersion); MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, 7600000); MercurialTestHelper.HgCommit(lDProjectFolderPath, "on branch"); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Does.Contain("clone has higher model")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.ERROR)); Assert.That(ModelVersion, Is.EqualTo(0)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.False); }
public void Error_NotAFlexProject() { // Setup // Create a non-FLEx hg repo (in this case an empty repo) var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); File.WriteAllText(Path.Combine(lDProjectFolderPath, "some.file"), "just a test file"); MercurialTestHelper.HgCommit(lDProjectFolderPath, "Initial commit"); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Does.Contain("clone is not a FLEx project")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.ERROR)); Assert.That(ModelVersion, Is.EqualTo(0)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.False); }
public void Success_ChangesFromOthersNoChangesFromUs() { // Setup var ldDirectory = CopyModifiedProjectAsTestLangProj(_lDSettings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _env.Settings.WebWorkDirectory); LanguageDepotMock.Server.Start(); var oldHashOfLd = MercurialTestHelper.GetRevisionOfTip(ldDirectory); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(MercurialTestHelper.GetRevisionOfWorkingSet(_lfProject.ProjectDir), Is.EqualTo(MercurialTestHelper.GetRevisionOfTip(ldDirectory)), "Our repo doesn't have the changes from LanguageDepot"); Assert.That(MercurialTestHelper.GetRevisionOfTip(ldDirectory), Is.EqualTo(oldHashOfLd)); Assert.That(_env.Logger.GetErrors(), Is.Null.Or.Empty); Assert.That(_env.Logger.GetMessages(), Does.Contain("Received changes from others")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }
public void Success_NewBranchFormat_LfMerge68() { // Setup var ldDirectory = CopyModifiedProjectAsTestLangProj(_lDSettings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _env.Settings.WebWorkDirectory); TestEnvironment.WriteTextFile(Path.Combine(_env.Settings.WebWorkDirectory, TestLangProj, "FLExProject.ModelVersion"), "{\"modelversion\": 7000068}"); LanguageDepotMock.Server.Start(); var oldHashOfLd = MercurialTestHelper.GetRevisionOfTip(ldDirectory); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(MercurialTestHelper.GetRevisionOfWorkingSet(_lfProject.ProjectDir), Is.EqualTo(MercurialTestHelper.GetRevisionOfTip(ldDirectory)), "Our repo doesn't have the changes from LanguageDepot"); Assert.That(MercurialTestHelper.GetRevisionOfTip(ldDirectory), Is.EqualTo(oldHashOfLd)); Assert.That(_env.Logger.GetErrors(), Is.Null.Or.Empty); Assert.That(_env.Logger.GetMessages(), Does.Contain("Received changes from others")); }
public void Error_NewerBranch() { // Setup var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, LcmCache.ModelVersion); MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath); MercurialTestHelper.CloneRepo(lDProjectFolderPath, _lfProject.ProjectDir); // Simulate a user with a newer FLEx version doing a S/R MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, 7600000); MercurialTestHelper.HgCommit(lDProjectFolderPath, "Commit with newer FLEx version"); LanguageDepotMock.Server.Start(); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetMessages(), Does.Contain("Allow data migration for project")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }
public void Success_ChangesFromUsNoChangesFromOthers() { // Setup CopyModifiedProjectAsTestLangProj(_env.Settings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _lDSettings.WebWorkDirectory); LanguageDepotMock.Server.Start(); var oldHashOfUs = MercurialTestHelper.GetRevisionOfWorkingSet(_lfProject.ProjectDir); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(MercurialTestHelper.GetRevisionOfWorkingSet(_lfProject.ProjectDir), Is.EqualTo(oldHashOfUs)); Assert.That(MercurialTestHelper.GetRevisionOfTip( Path.Combine(_lDSettings.WebWorkDirectory, TestLangProj)), Is.EqualTo(oldHashOfUs), "LanguageDepot doesn't have our changes"); Assert.That(_env.Logger.GetErrors(), Is.Null.Or.Empty); Assert.That(_env.Logger.GetMessages(), Is.StringContaining("No changes from others")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }
public void Error_DifferentBranch() { // Setup // Create a hg repo that doesn't contain a branch for the current model version const int modelVersion = 7000067; MagicStrings.SetMinimalModelVersion(modelVersion); var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, modelVersion); MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath, modelVersion); MercurialTestHelper.CloneRepo(lDProjectFolderPath, _lfProject.ProjectDir); LanguageDepotMock.Server.Start(); // Execute _synchronizeAction.Run(_lfProject); // Verify Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); Assert.That(ModelVersion, Is.EqualTo(modelVersion)); }
public void Error_NoBranch_UnsupportedBranch() { // Setup // Create a hg repo that doesn't contain a branch for the current model version var lDProjectFolderPath = LanguageDepotMock.ProjectFolderPath; MercurialTestHelper.InitializeHgRepo(lDProjectFolderPath); MercurialTestHelper.HgCreateBranch(lDProjectFolderPath, 7000060); // simulate a too old version MercurialTestHelper.CreateFlexRepo(lDProjectFolderPath); MagicStrings.SetMinimalModelVersion(7000068); // Execute _EnsureCloneAction.Run(_lfProject); // Verify Assert.That(_env.Logger.GetErrors(), Does.Contain("no such branch")); Assert.That(_env.Logger.GetErrors(), Does.Contain( "clone model version '7000060' less than minimal supported model version '7000068'.")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.ERROR)); Assert.That(ModelVersion, Is.EqualTo(0)); Assert.That(Directory.Exists(_lfProject.ProjectDir), Is.False); }
public void Error_InvalidUtf8InXml() { // Setup TestEnvironment.CopyFwProjectTo(TestLangProj, _lDSettings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _env.Settings.WebWorkDirectory); LanguageDepotMock.Server.Start(); var ldDirectory = Path.Combine(_lDSettings.WebWorkDirectory, TestLangProj); var oldHashOfLd = MercurialTestHelper.GetRevisionOfTip(ldDirectory); var fwdataPath = Path.Combine(_env.Settings.WebWorkDirectory, TestLangProj, TestLangProj + ".fwdata"); TestEnvironment.OverwriteBytesInFile(fwdataPath, new byte[] { 0xc0, 0xc1 }, 25); // 0xC0 and 0xC1 are always invalid byte values in UTF-8 // Execute _synchronizeAction.Run(_lfProject); // Verify string errors = _env.Logger.GetErrors(); Assert.That(errors, Does.Contain("System.Xml.XmlException")); // Stack trace should also have been logged Assert.That(errors, Does.Contain("\n at Chorus.sync.Synchronizer.SyncNow (Chorus.sync.SyncOptions options)")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }
public void Error_WrongXmlEncoding() { // Setup TestEnvironment.CopyFwProjectTo(TestLangProj, _lDSettings.WebWorkDirectory); TestEnvironment.CopyFwProjectTo(TestLangProj, _env.Settings.WebWorkDirectory); LanguageDepotMock.Server.Start(); var ldDirectory = Path.Combine(_lDSettings.WebWorkDirectory, TestLangProj); var oldHashOfLd = MercurialTestHelper.GetRevisionOfTip(ldDirectory); var fwdataPath = Path.Combine(_env.Settings.WebWorkDirectory, TestLangProj, TestLangProj + ".fwdata"); TestEnvironment.ChangeFileEncoding(fwdataPath, System.Text.Encoding.UTF8, System.Text.Encoding.UTF32); // Note that the XML file will still claim the encoding is UTF-8! // Execute _synchronizeAction.Run(_lfProject); // Verify string errors = _env.Logger.GetErrors(); Assert.That(errors, Does.Contain("System.Xml.XmlException: '.', hexadecimal value 0x00, is an invalid character.")); // Stack trace should also have been logged Assert.That(errors, Does.Contain("\n at Chorus.sync.Synchronizer.SyncNow (Chorus.sync.SyncOptions options)")); Assert.That(_lfProject.State.SRState, Is.EqualTo(ProcessingState.SendReceiveStates.SYNCING)); }