public List <ChangeScript> GetChangeScriptsForDirectory(DirectoryInfo directory) { try { Console.Out.WriteLine("Reading change scripts from directory " + directory.FullName + "..."); } catch (IOException) { // ignore } List <ChangeScript> scripts = new List <ChangeScript>(); foreach (FileInfo file in directory.GetFiles()) { if ((file.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) { continue; } string filename = file.Name; try { Int64 id = filenameParser.ExtractIdFromFilename(filename); scripts.Add(new ChangeScript(id, file)); } catch (UnrecognisedFilenameException) { // ignore } } return(scripts); }
public void CanParseAnyFilenameThatStartsWithANumber() { FilenameParser parser = new FilenameParser(); Assert.AreEqual(1, parser.ExtractIdFromFilename("0001_a_filename.txt")); Assert.AreEqual(1, parser.ExtractIdFromFilename("1_a_filename.txt")); Assert.AreEqual(1, parser.ExtractIdFromFilename("1 a filename.txt")); Assert.AreEqual(1, parser.ExtractIdFromFilename("1.txt")); Assert.AreEqual(123, parser.ExtractIdFromFilename("00123_something.txt")); Assert.AreEqual(1, parser.ExtractIdFromFilename("1.foo.2.txt")); Assert.AreEqual(200808231059, parser.ExtractIdFromFilename("200808231059.timestamped_filename.sql")); }