private static void ResolveTestProject(DotvvmProjectMetadata dotvvmProjectMetadata) { var metadataService = new DotvvmProjectMetadataService(); if (string.IsNullOrEmpty(dotvvmProjectMetadata.UITestProjectPath)) { var hintProjectName = $"..\\{dotvvmProjectMetadata.ProjectName}.Tests"; if (!Console.IsInputRedirected) { dotvvmProjectMetadata.UITestProjectPath = ConsoleHelpers.AskForValue($"Enter the path to the test project\n(relative to DotVVM project directory, e.g. '{hintProjectName}'): ", hintProjectName); } else { dotvvmProjectMetadata.UITestProjectPath = hintProjectName; } Console.WriteLine($@"Path to test project is set to ""{dotvvmProjectMetadata.UITestProjectPath}"""); } // make sure the test directory exists var testProjectDirectory = dotvvmProjectMetadata.GetUITestProjectFullPath(); if (!Directory.Exists(testProjectDirectory)) { var relativeWebDirectory = Path.GetRelativePath(dotvvmProjectMetadata.GetUITestProjectFullPath(), dotvvmProjectMetadata.ProjectDirectory); GenerateTestProject(testProjectDirectory, relativeWebDirectory); } // make sure we know the test project namespace if (string.IsNullOrEmpty(dotvvmProjectMetadata.UITestProjectRootNamespace)) { dotvvmProjectMetadata.UITestProjectRootNamespace = Path.GetFileName(testProjectDirectory); } // save the metadata metadataService.Save(dotvvmProjectMetadata); }
public override void Handle(Arguments args, DotvvmProjectMetadata dotvvmProjectMetadata) { // make sure the test directory exists if (string.IsNullOrEmpty(dotvvmProjectMetadata.UITestProjectPath)) { dotvvmProjectMetadata.UITestProjectPath = ConsoleHelpers.AskForValue($"Enter the path to the test project\n(relative to DotVVM project directory, e.g. '..\\{dotvvmProjectMetadata.ProjectName}.Tests'): "); } var testProjectDirectory = dotvvmProjectMetadata.GetUITestProjectFullPath(); if (!Directory.Exists(testProjectDirectory)) { throw new Exception($"The directory {testProjectDirectory} doesn't exist!"); } // make sure we know the test project namespace if (string.IsNullOrEmpty(dotvvmProjectMetadata.UITestProjectRootNamespace)) { var csprojService = new CSharpProjectService(); var csproj = csprojService.FindCsprojInDirectory(testProjectDirectory); if (csproj != null) { csprojService.Load(csproj); dotvvmProjectMetadata.UITestProjectRootNamespace = csprojService.GetRootNamespace(); } else { dotvvmProjectMetadata.UITestProjectRootNamespace = ConsoleHelpers.AskForValue("Enter the test project root namespace: "); if (string.IsNullOrEmpty(dotvvmProjectMetadata.UITestProjectRootNamespace)) { throw new Exception("The test project root namespace must not be empty!"); } } } // generate the test stubs var name = args[0]; var files = ExpandFileNames(name); foreach (var file in files) { Console.WriteLine($"Generating stub for {file}..."); // determine full type name and target file var relativePath = PathHelpers.GetDothtmlFileRelativePath(dotvvmProjectMetadata, file); var relativeTypeName = PathHelpers.TrimFileExtension(relativePath) + "Helper"; var fullTypeName = dotvvmProjectMetadata.UITestProjectRootNamespace + "." + PathHelpers.CreateTypeNameFromPath(relativeTypeName); var targetFileName = Path.Combine(dotvvmProjectMetadata.UITestProjectPath, "Helpers", relativeTypeName + ".cs"); // generate the file //var generator = new SeleniumHelperGenerator(); //var config = new SeleniumGeneratorConfiguration() //{ // TargetNamespace = PathHelpers.GetNamespaceFromFullType(fullTypeName), // HelperName = PathHelpers.GetTypeNameFromFullType(fullTypeName), // HelperFileFullPath = targetFileName, // ViewFullPath = file //}; //generator.ProcessMarkupFile(DotvvmConfiguration.CreateDefault(), config); } }