public void Generate_LicenseAcceptanceRequiredByMainPackage() { // Arrange string outputDir = TestUtils.CreateTestDirectory(this.TestContext, ".out"); RemoteRepoBuilder remoteRepoBuilder = new RemoteRepoBuilder(this.TestContext); // Parent and child: only parent requires license IPackage child = CreatePackageWithAnalyzer(remoteRepoBuilder, "child.id", "1.1", License.NotRequired); CreatePackageWithAnalyzer(remoteRepoBuilder, "parent.requiredAccept.id", "1.0", License.Required, child); TestLogger logger = new TestLogger(); AnalyzerPluginGenerator apg = CreateTestSubjectWithFakeRemoteRepo(remoteRepoBuilder, logger); // 1. User does not accept -> fails with error ProcessedArgs args = CreateArgs("parent.requiredAccept.id", "1.0", "cs", null, false /* accept licenses */ , outputDir); bool result = apg.Generate(args); Assert.IsFalse(result, "Generator should fail because license has not been accepted"); logger.AssertSingleErrorExists("parent.requiredAccept.id", "1.0"); // error listing the main package logger.AssertSingleWarningExists("parent.requiredAccept.id", "1.0"); // warning for each licensed package logger.AssertWarningsLogged(1); // 2. User accepts -> succeeds with warnings logger.Reset(); args = CreateArgs("parent.requiredAccept.id", "1.0", "cs", null, true /* accept licenses */ , outputDir); result = apg.Generate(args); Assert.IsTrue(result, "Generator should succeed if licenses are accepted"); logger.AssertSingleWarningExists(UIResources.APG_NGAcceptedPackageLicenses); // warning that licenses accepted logger.AssertSingleWarningExists("parent.requiredAccept.id", "1.0"); // warning for each licensed package logger.AssertWarningsLogged(2); logger.AssertErrorsLogged(0); }
public void Generate_InvalidSqaleFileSpecified_GeneratorError() { // Arrange string outputDir = TestUtils.CreateTestDirectory(this.TestContext, ".out"); TestLogger logger = new TestLogger(); RemoteRepoBuilder remoteRepoBuilder = new RemoteRepoBuilder(this.TestContext); CreatePackageInFakeRemoteRepo(remoteRepoBuilder, "dummy.id", "1.1"); NuGetPackageHandler nuGetHandler = new NuGetPackageHandler(remoteRepoBuilder.FakeRemoteRepo, GetLocalNuGetDownloadDir(), logger); // Create an invalid sqale file string dummySqaleFilePath = Path.Combine(outputDir, "invalidSqale.xml"); File.WriteAllText(dummySqaleFilePath, "not valid xml"); AnalyzerPluginGenerator apg = new AnalyzerPluginGenerator(nuGetHandler, logger); ProcessedArgs args = CreateArgs("dummy.id", "1.1", "cs", dummySqaleFilePath, false, outputDir); // Act bool result = apg.Generate(args); // Assert Assert.IsFalse(result, "Expecting generation to have failed"); AssertSqaleTemplateDoesNotExist(outputDir); logger.AssertSingleErrorExists("invalidSqale.xml"); // expecting an error containing the invalid sqale file name }
public void ArgProc_SqaleFile() { // 0. Setup TestLogger logger; string[] rawArgs; ProcessedArgs actualArgs; // 1. No sqale file value -> valid logger = new TestLogger(); rawArgs = new string[] { "/a:validId" }; actualArgs = ArgumentProcessor.TryProcessArguments(rawArgs, logger); AssertArgumentsProcessed(actualArgs, logger, "validId", null, null, false); // 2. Missing sqale file logger = new TestLogger(); rawArgs = new string[] { "/sqale:missingFile.txt", "/a:validId" }; actualArgs = ArgumentProcessor.TryProcessArguments(rawArgs, logger); AssertArgumentsNotProcessed(actualArgs, logger); logger.AssertSingleErrorExists("missingFile.txt"); // should be an error containing the missing file name // 3. Existing sqale file string testDir = TestUtils.CreateTestDirectory(this.TestContext); string filePath = TestUtils.CreateTextFile("valid.sqale.txt", testDir, "sqale file contents"); logger = new TestLogger(); rawArgs = new string[] { "/sqale:" + filePath, "/a:valid:1.0" }; actualArgs = ArgumentProcessor.TryProcessArguments(rawArgs, logger); AssertArgumentsProcessed(actualArgs, logger, "valid", "1.0", filePath, false); }
public void Generate_LicenseAcceptanceRequired_ByParentAndDependencies() { // Arrange string outputDir = TestUtils.CreateTestDirectory(this.TestContext, ".out"); RemoteRepoBuilder remoteRepoBuilder = new RemoteRepoBuilder(this.TestContext); // Multi-level: parent and some but not all dependencies require license acceptance IPackage grandchild1 = CreatePackageWithAnalyzer(remoteRepoBuilder, "grandchild1.requiredAccept.id", "3.0", License.Required); IPackage child1 = CreatePackageWithAnalyzer(remoteRepoBuilder, "child1.requiredAccept.id", "2.1", License.Required); IPackage child2 = CreatePackageWithAnalyzer(remoteRepoBuilder, "child2.id", "2.2", License.NotRequired, grandchild1); CreatePackageWithAnalyzer(remoteRepoBuilder, "parent.requiredAccept.id", "1.0", License.Required, child1, child2); TestLogger logger = new TestLogger(); AnalyzerPluginGenerator apg = CreateTestSubjectWithFakeRemoteRepo(remoteRepoBuilder, logger); // 1. User does not accept -> fails with error ProcessedArgs args = CreateArgs("parent.requiredAccept.id", "1.0", "cs", null, false /* accept licenses */ , outputDir); bool result = apg.Generate(args); Assert.IsFalse(result, "Generator should fail because license has not been accepted"); logger.AssertSingleErrorExists("parent.requiredAccept.id", "1.0"); // error referring to the main package logger.AssertSingleWarningExists("grandchild1.requiredAccept.id", "3.0"); // warning for each licensed package logger.AssertSingleWarningExists("child1.requiredAccept.id", "2.1"); logger.AssertSingleWarningExists("parent.requiredAccept.id", "1.0"); // 2. User accepts -> succeeds with warnings logger.Reset(); args = CreateArgs("parent.requiredAccept.id", "1.0", "cs", null, true /* accept licenses */ , outputDir); result = apg.Generate(args); Assert.IsTrue(result, "Generator should succeed if licenses are accepted"); logger.AssertSingleWarningExists(UIResources.APG_NGAcceptedPackageLicenses); // warning that licenses have been accepted logger.AssertSingleWarningExists("grandchild1.requiredAccept.id", "3.0"); // warning for each licensed package logger.AssertSingleWarningExists("child1.requiredAccept.id", "2.1"); logger.AssertSingleWarningExists("parent.requiredAccept.id", "1.0"); logger.AssertWarningsLogged(4); }
public void Generate_LicenseAcceptanceRequired_NoAnalysersInTarget() { // If there are: // Required licenses // No analyzers in the targeted package, but analyzers in the dependencies // We should fail due to the absence of analyzers if we are only generating a plugin for the targeted package // We should fail with an error due to licenses if we are generating plugins for the targeted package and dependencies // Arrange string outputDir = TestUtils.CreateTestDirectory(this.TestContext, ".out"); string dummyContentFile = TestUtils.CreateTextFile("dummy.txt", outputDir, "non-analyzer content file"); RemoteRepoBuilder remoteRepoBuilder = new RemoteRepoBuilder(this.TestContext); // Multi-level: parent and some but not all dependencies require license acceptance // Parent has no analyzers, but dependencies do IPackage child1 = CreatePackageWithAnalyzer(remoteRepoBuilder, "child1.requiredAccept.id", "2.1", License.Required); IPackage child2 = CreatePackageWithAnalyzer(remoteRepoBuilder, "child2.id", "2.2", License.NotRequired); remoteRepoBuilder.CreatePackage("non-analyzer.parent.requireAccept.id", "1.0", dummyContentFile, License.Required, child1, child2); TestLogger logger = new TestLogger(); AnalyzerPluginGenerator apg = CreateTestSubjectWithFakeRemoteRepo(remoteRepoBuilder, logger); // 1. a) Only target package. User does not accept, but no analyzers so no license prompt -> fails due to absence of analyzers ProcessedArgs args = CreateArgs("non-analyzer.parent.requireAccept.id", "1.0", "cs", null, false /* accept licenses */ , false, outputDir); bool result = apg.Generate(args); Assert.IsFalse(result, "Expecting generator to fail"); logger.AssertSingleWarningExists(String.Format(UIResources.APG_NoAnalyzersFound, "non-analyzer.parent.requireAccept.id")); logger.AssertSingleWarningExists(UIResources.APG_NoAnalyzersInTargetSuggestRecurse); logger.AssertWarningsLogged(2); logger.AssertErrorsLogged(0); // 1. b) Target package and dependencies. User does not accept. // No analyzers in the target package, but analyzers in the dependencies -> fails with error logger.Reset(); args = CreateArgs("non-analyzer.parent.requireAccept.id", "1.0", "cs", null, false /* accept licenses */ , true /* generate plugins for dependencies */, outputDir); result = apg.Generate(args); Assert.IsFalse(result, "Generator should fail because license has not been accepted"); logger.AssertSingleWarningExists(String.Format(UIResources.APG_NoAnalyzersFound, "non-analyzer.parent.requireAccept.id")); logger.AssertSingleWarningExists("non-analyzer.parent.requireAccept.id", "1.0"); // warning for each licensed package logger.AssertSingleWarningExists(child1.Id, child1.Version.ToString()); logger.AssertWarningsLogged(3); logger.AssertSingleErrorExists("non-analyzer.parent.requireAccept.id", "1.0"); // error listing the main package logger.AssertErrorsLogged(1); // 2. b) Target package and dependencies. User accepts. // No analyzers in the target package, but analyzers in the dependencies -> succeeds with warnings logger.Reset(); args = CreateArgs("non-analyzer.parent.requireAccept.id", "1.0", "cs", null, true /* accept licenses */ , true /* generate plugins for dependencies */, outputDir); result = apg.Generate(args); Assert.IsTrue(result, "Generator should succeed if licenses are accepted"); logger.AssertSingleWarningExists(String.Format(UIResources.APG_NoAnalyzersFound, "non-analyzer.parent.requireAccept.id")); logger.AssertSingleWarningExists(UIResources.APG_NGAcceptedPackageLicenses); // warning that licenses have been accepted logger.AssertSingleWarningExists("non-analyzer.parent.requireAccept.id", "1.0"); // warning for each licensed package logger.AssertSingleWarningExists(child1.Id, child1.Version.ToString()); logger.AssertWarningsLogged(5); logger.AssertErrorsLogged(0); }