public static void RunTests <T>(Settings settings, string resultFolder) { if (settings == null) { throw new ArgumentNullException("settings"); } if (resultFolder == null) { throw new ArgumentNullException("settings"); } settings.FileSystem = new MemoryFileSystem(); settings.FileSystem.WriteFile("AutoRest.json", File.ReadAllText("AutoRest.json")); settings.FileSystem.CreateDirectory(Path.GetDirectoryName(settings.Input)); settings.FileSystem.WriteFile(settings.Input, File.ReadAllText(settings.Input)); var flavor = (CodeGenerator)typeof(T).GetConstructor(new[] { typeof(Settings) }).Invoke(new object[] { settings }); settings.CodeGenerator = flavor.Name; var expectedWithSeparator = "Expected" + Path.DirectorySeparatorChar; var specFileName = resultFolder.StartsWith(expectedWithSeparator, StringComparison.Ordinal) ? resultFolder.Substring(expectedWithSeparator.Length) : resultFolder; settings.Namespace = string.IsNullOrEmpty(settings.Namespace) ? "Fixtures." + (flavor.Name.Contains("Azure") ? "Azure." : "") + specFileName. Replace(".cs", "").Replace(".Cs", "").Replace(".java", ""). Replace(".js", "").Replace(".", ""). Replace(Path.DirectorySeparatorChar.ToString(), "").Replace("-", "") : settings.Namespace; AutoRest.Generate(settings); Assert.NotEmpty(((MemoryFileSystem)settings.FileSystem).VirtualStore); var actualFiles = settings.FileSystem.GetFiles("X:\\Output", "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray(); var expectedFiles = Directory.GetFiles(resultFolder, "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray(); Assert.Equal(expectedFiles.Length, actualFiles.Length); for (int i = 0; i < expectedFiles.Length; i++) { var actualFile = actualFiles[i]; var expectedFile = expectedFiles[i]; EnsureFilesMatch(File.ReadAllText(expectedFile), settings.FileSystem.ReadFileAsText(actualFile)); } }
protected void GenerateClient(string swagger, string destFolder) { try { Directory.Delete(destFolder, true); } catch (DirectoryNotFoundException) { } AutoRest.Generate(new Settings { Input = swagger, OutputDirectory = destFolder, CodeGenerator = CodeGenerator, Modeler = Modeler, Namespace = Namespace }); Assert.True(Directory.Exists(destFolder), String.Format("Client generation for \"{0}\" failed", swagger)); }
private static int Main(string[] args) { int exitCode = (int)ExitCode.Error; try { Settings settings = null; try { settings = Settings.Create(args); if (settings.ShowHelp && IsShowMarkdownHelpIncluded(args)) { Console.WriteLine(HelpGenerator.Generate(Resources.HelpMarkdownTemplate, settings)); } else if (settings.ShowHelp) { Console.WriteLine(HelpGenerator.Generate(Resources.HelpTextTemplate, settings)); } else { AutoRest.Generate(settings); } } catch (CodeGenerationException) { // Do not add the CodeGenerationException again. Will be written in finally block } catch (Exception exception) { Logger.LogError(exception, exception.Message); } finally { if ( Logger.Entries.Any( e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal)) { Console.ForegroundColor = ConsoleColor.Red; } else if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Warning)) { Console.ForegroundColor = ConsoleColor.Yellow; } if (settings != null && !settings.ShowHelp) { if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal)) { Console.WriteLine(Resources.GenerationFailed); Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0} {1}", typeof(Program).Assembly.ManifestModule.Name, string.Join(" ", args))); } else { Console.WriteLine(Resources.GenerationComplete, settings.CodeGenerator, settings.Input); exitCode = (int)ExitCode.Success; } } Console.ResetColor(); // Include LogEntrySeverity.Infos for verbose logging. if (args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase))) { Console.ForegroundColor = ConsoleColor.White; Logger.WriteInfos(Console.Out); } Console.ForegroundColor = ConsoleColor.Yellow; Logger.WriteWarnings(Console.Out); Console.ForegroundColor = ConsoleColor.Red; Logger.WriteErrors(Console.Error, args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase))); Console.ResetColor(); } } catch (Exception exception) { Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message); Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace); } return(exitCode); }
private static void Main(string[] args) { try { if (IsShowMarkdownHelpIncluded(args)) { Console.WriteLine(HelpGenerator.Generate(Resources.HelpMarkdownTemplate)); } else if (IsShowHelpIncluded(args)) { Console.WriteLine(HelpGenerator.Generate(Resources.HelpTextTemplate)); } else { Settings settings = null; try { settings = Settings.Create(args); AutoRest.Generate(settings); var codeGenerator = ExtensionsLoader.GetCodeGenerator(settings); Console.WriteLine(codeGenerator.UsageInstructions); } catch (CodeGenerationException) { // Do not add the CodeGenerationException again. Will be written in finally block } catch (Exception exception) { Logger.LogError(exception, exception.Message); } finally { if ( Logger.Entries.Any( e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal)) { Console.ForegroundColor = ConsoleColor.Red; } else if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Warning)) { Console.ForegroundColor = ConsoleColor.Yellow; } Logger.WriteErrors(Console.Error, args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase))); Logger.WriteWarnings(Console.Out); // Include LogEntrySeverity.Infos for verbose logging. if (args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase))) { Logger.WriteInfos(Console.Out); } if (settings != null) { Console.WriteLine(Resources.GenerationComplete, settings.CodeGenerator, settings.Input); } Console.ResetColor(); } } } catch (Exception exception) { Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message); Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace); } }