private void OnExport()
        {
            if (selectedSetting == null)
            {
                return;
            }
            ClearLogs();
            SaveSettings();
            OutLog("Start exporting with validation.");
            var baseFolderPath = AssetDatabase.GetAssetPath(baseFolder);

            result = ValidatedExporter.ValidatedExport(baseFolderPath, selectedSetting, forceExport);
            AssetDatabase.Refresh();
            var header = string.Format("- version:{0}", ProductInfoUtility.GetVersion()) + Environment.NewLine;

            header += string.Format("- Rule set:{0}", selectedSetting.SettingName) + Environment.NewLine;
            header += string.Format("- Base folder:{0}", baseFolderPath) + Environment.NewLine;
            if (forceExport)
            {
                header += string.Format("- Force export:{0}", forceExport) + Environment.NewLine;
            }
            var log = header + result.GetValidationLog() + result.GetExportLog() + result.log;

            forceExport = false;
            SetMessages(header, result);
            OutLog(log);
            OutLog("Export completed.");
        }
 private void Init()
 {
     settings     = null;
     settingNames = null;
     forceExport  = false;
     ruleSetName  = "";
     exportLog    = "";
     result       = null;
     messages     = new List <Message>();
     LoadSettings();
 }
 private void SetMessages(string header, ValidatedExportResult exportResult)
 {
     if (exportResult != null && exportResult.validationResults != null)
     {
         foreach (var result in exportResult.validationResults)
         {
             var ruleResultLog = result.GetResultLog(false);
             if (!string.IsNullOrEmpty(ruleResultLog))
             {
                 messages.Add(new Message(ruleResultLog, MessageType.Info, null));
             }
             foreach (var issue in result.Issues)
             {
                 var txt = result.RuleName + Environment.NewLine;
                 if (issue.target != null)
                 {
                     txt += issue.target.name + Environment.NewLine;
                 }
                 txt += issue.message + Environment.NewLine + issue.solution;
                 messages.Add(new Message(txt, GetMessageType(issue.level), issue));
             }
         }
     }
     if (exportResult.IsExportSuccess)
     {
         messages.Add(new Message(LocalizedMessage.Get("ValidatedExporterWindow.Succeeded") + Environment.NewLine + header, MessageType.Info));
         if (exportResult.GetValidationLog() != "")
         {
             messages.Add(new Message(exportResult.GetValidationLog(), MessageType.Info));
         }
         if (exportResult.GetExportLog() != "")
         {
             messages.Add(new Message(exportResult.GetExportLog(), MessageType.Info));
         }
         var package = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(exportResult.exportResult.exportFilePath);
         var result  = new Issue(package, IssueLevel.Info, LocalizedMessage.Get("ValidatedExporterWindow.Succeeded"));
         messages.Add(new Message(LocalizedMessage.Get("ValidatedExporterWindow.SucceededDetail") + Environment.NewLine + exportResult.exportResult.exportFilePath, MessageType.Info, result));
     }
     else
     {
         messages.Add(new Message(LocalizedMessage.Get("ValidatedExporterWindow.Aborted") + Environment.NewLine + header, MessageType.Error));
         messages.Add(new Message(exportResult.log, MessageType.Info));
         if (exportResult.GetExportLog() != "")
         {
             messages.Add(new Message(exportResult.GetExportLog(), MessageType.Error));
         }
     }
 }
        public void TestExportError()
        {
            var filename       = "testError.unitypackage";
            var baseFolderPath = "Assets/VitDeck/Exporter/Tests/TestBaseFolder";
            var setting        = new ExportSetting();

            setting.SettingName      = "";
            setting.Description      = "";
            setting.ExportFolderPath = testExportFolder;
            setting.fileNameFormat   = filename;
            setting.ruleSetName      = "";
            ValidatedExporter.ValidatedExport(baseFolderPath, setting, false);
            //ファイル重複していた場合
            ValidatedExportResult willFailResult = new ValidatedExportResult(false);

            LogAssert.Expect(LogType.Error, new Regex(@"^System\.IO\.IOException.*"));
            Assert.DoesNotThrow(() => willFailResult = ValidatedExporter.ValidatedExport(baseFolderPath, setting, false));
            Assert.That(willFailResult.exportResult, Is.Not.Null);
            var willPassResult = ValidatedExporter.ValidatedExport(baseFolderPath, setting, true);

            Assert.That(willPassResult.exportResult.exportResult, Is.True);
        }