protected override PolicyResult CheckPolicy(DirectoryInfo databaseScriptsRoot) { PolicyResult result = new PolicyResult(); IEnumerable <FileInfo> allFiles = FileListFilter.FilterFileListWithIgnoreDirectoryFilter( databaseScriptsRoot.GetFiles(ToolConfiguration.SqlFileSearchPattern, SearchOption.AllDirectories)); IEnumerable <FileInfo> allFilesWithoutCreateDatabase = allFiles.Where(x => !ToolConfiguration.CreateDatabaseSqlFileSearchPattern.Equals(x.Name)); IEnumerable <FileInfo> invalidFilenames = (from fileInfo in allFilesWithoutCreateDatabase where VersionNumberHelper.FilenameHasValidVersionPrefix(fileInfo.Name) == false select fileInfo).ToList(); if (!invalidFilenames.Any()) { result.Success = true; } else { result.Messages.Add( string.Format( "FilenamePrefixPolicy failed. The following files do not have a valid prefix: {0}.", string.Join(",", invalidFilenames.Select(fileinfo => fileinfo.FullName).ToArray()))); } return(result); }
private static void AssertThatFilenameHasValidPrefix(string filenameToTest) { Assert.IsTrue( VersionNumberHelper.FilenameHasValidVersionPrefix(filenameToTest), string.Format("{0} does not contains a valid version number.", filenameToTest)); }
public virtual ExcecutionResult ExecuteAllScriptsForDatabase( string fromVersion, string toVersion, DatabaseConnectionParameters connectionParameters, Encoding encodingForReadingSqlScripts) { if (string.IsNullOrEmpty(fromVersion)) { throw new ArgumentException(@"Cannot be null or empty.", "fromVersion"); } if (string.IsNullOrEmpty(toVersion)) { throw new ArgumentException(@"Cannot be null or empty.", "toVersion"); } if (encodingForReadingSqlScripts == null) { encodingForReadingSqlScripts = Encoding.Default; } Version fromVersionObject; Version toVersionObject; try { fromVersionObject = VersionNumberHelper.RemoveNegativeNumbersFromVersionObject(new Version(fromVersion)); } catch (Exception ex) { var result = new ExcecutionResult { Success = false }; result.Errors.Add( string.Format("Invalid fromVersion. Could not parse fromVersion to a usable version object. {0}", ex.Message)); return(result); } try { toVersionObject = VersionNumberHelper.RemoveNegativeNumbersFromVersionObject(new Version(toVersion)); } catch (Exception ex) { var result = new ExcecutionResult { Success = false }; result.Errors.Add(string.Format("Invalid toVersion. Could not parse toVersion to a usable version object. {0}", ex.Message)); return(result); } // Execute optional FileStructurePolicy if (_fileStructurePolicy != null) { PolicyResult policyResult = _fileStructurePolicy.Check(_databaseScriptsDirInfo); if (!policyResult.Success) { // Policy failed Return errors ExcecutionResult result = new ExcecutionResult { Success = false }; result.Errors.AddRange(policyResult.Messages); return(result); } } SqlFilesListReader filesReader = new SqlFilesListReader(_databaseScriptsDirInfo); Dictionary <string, FileInfo> filesToExecute = filesReader.GetSpecificVersionedFilesToExecute(fromVersionObject, toVersionObject); return(ExecuteSqlScripts(connectionParameters, filesToExecute, encodingForReadingSqlScripts)); }