示例#1
0
        public void AreFilesIdentical()
        {
            MockFileOS fileOs = new MockFileOS();
            string     junk1  = fileOs.MakeFile("bla", Encoding.Default);
            string     junk2  = fileOs.MakeFile("bla", Encoding.Default);
            string     junk3  = fileOs.MakeFile("alb", Encoding.Default);

            FileUtils.Manager.SetFileAdapter(fileOs);
            try
            {
                Assert.IsTrue(FileUtils.AreFilesIdentical(junk1, junk2));
                Assert.IsFalse(FileUtils.AreFilesIdentical(junk1, junk3));
            }
            finally
            {
                FileUtils.Manager.Reset();
            }
        }
示例#2
0
        /// <summary>
        /// Check for changed (or missing) files in the Extensions subdirectory (as
        /// compared to the corresponding "Available Plugins" subdirectory).
        /// </summary>
        /// <param name="paths"></param>
        /// <param name="pluginBaseDir"></param>
        /// <param name="extensionBaseDir"></param>
        private void UpdateExtensionFilesIfNeeded(StringCollection paths, string pluginBaseDir,
                                                  string extensionBaseDir)
        {
            if (paths.Count == 0)
            {
                return;
            }
            List <string> obsoletePaths = new List <string>();

            foreach (string extensionPath in paths)
            {
                string pluginPathname = Path.Combine(pluginBaseDir, extensionPath);
                pluginPathname = pluginPathname.Replace("Extensions", "Available Plugins");
                if (File.Exists(pluginPathname))
                {
                    string extensionPathname = Path.Combine(extensionBaseDir, extensionPath);
                    Debug.Assert(File.Exists(extensionPathname));
                    if (!FileUtils.AreFilesIdentical(pluginPathname, extensionPathname))
                    {
                        string extensionDir = Path.GetDirectoryName(extensionPathname);
                        Directory.Delete(extensionDir, true);
                        Directory.CreateDirectory(extensionDir);
                        File.Copy(pluginPathname, extensionPathname);
                        File.SetAttributes(extensionPathname, FileAttributes.Normal);
                        // plug-ins usually have localization strings-XX.xml files.
                        foreach (string pluginFile in Directory.GetFiles(Path.GetDirectoryName(pluginPathname), "strings-*.xml"))
                        {
                            string extensionFile = Path.Combine(extensionDir, Path.GetFileName(pluginFile));
                            File.Copy(pluginFile, extensionFile);
                            File.SetAttributes(extensionFile, FileAttributes.Normal);
                        }
                    }
                }
                else
                {
                    obsoletePaths.Add(extensionPath);
                }
            }
            foreach (string badPath in obsoletePaths)
            {
                paths.Remove(badPath);
            }
        }