Author: jvanzyl Date: Thu Oct 12 05:03:04 2006 New Revision: 463219 URL: http://svn.apache.org/viewvc?view=rev&rev=463219 Log: o doesn't work generally but putting in a script from Dan to turn the ITs into real JUnit tests.
Added: maven/components/trunk/mavenexecute.pl (with props) Added: maven/components/trunk/mavenexecute.pl URL: http://svn.apache.org/viewvc/maven/components/trunk/mavenexecute.pl?view=auto&rev=463219 ============================================================================== --- maven/components/trunk/mavenexecute.pl (added) +++ maven/components/trunk/mavenexecute.pl Thu Oct 12 05:03:04 2006 @@ -0,0 +1,442 @@ +$dirname = "C:\\svn\\maven\\trunk\\maven-core-it"; +$readme = <<'END'; +it0000: The simplest of builds. We have one application class and one test + class. There are no resources, no source generation, no resource + generation and a the super model is employed to provide the build + information. + +it0001: Builds upon it0000: we add an application resource that is packaged + up in the resultant JAR. + +it0002: Builds upon it0001: we add the download of a dependency. We delete + the JAR from the local repository and make sure it is there post build. + +it0003: Builds upon it0001: we add a jar installation step. We delete the JAR + from the local repository to make sure it is there post build. + +it0004: The simplest of pom installation. We have a pom and we install it in + local repository. + +it0005: The simplest of pom installation. We have a snapshot pom and we install + it in local repository. + +it0006: Integration test for the verifier plugin. + +it0007: We specify a parent in the POM and make sure that it is downloaded as + part of the process. + +it0008: Simple goal decoration where a plugin binds to a phase and the plugin must + be downloaded from a remote repository before it can be executed. This + test also checks to make sure that mojo parameters are aligned to the + project basedir when their type is "java.io.File". + +it0009: Test plugin configuration and goal configuration that overrides what the + mojo has specified. + +it0010: Since the artifact resolution does not use the project builder, we must + ensure that the full hierarchy of all dependencies is resolved. This + includes the dependencies of the parent-pom's of dependencies. This test + will check this, by depending on classworlds, which is a dependency of + maven-component, which is the parent of maven-plugin, which is an + explicit dependency of this test. + # TODO: must correct the assumptions of this test + +it0011: Test specification of dependency versions via <dependencyManagement/>. + +it0012: Test simple POM interpolation + +it0013: Test plugin-plugin, which tests maven-plugin-tools-api and + maven-plugin-tools-java. This will generate a plugin descriptor from + java-based mojo sources, install the plugin, and then use it. + +it0014: Test POM configuration by settings the -source and -target for the + compiler to 1.4 + +it0016: Test a WAR generation + +it0017: Test an EJB generation + +it0018: Ensure that managed dependencies for dependency POMs are calculated + correctly when resolved. Removes commons-logging-1.0.3 and checks it is + redownloaded. + +it0019: Test that a version is managed by pluginManagement in the super POM + +it0020: Test beanshell mojo support. + +it0021: Test pom-level profile inclusion (this one is activated by system + property). + +it0022: Test profile inclusion from profiles.xml (this one is activated by system + property). + +it0023: Test profile inclusion from settings.xml (this one is activated by an id + in the activeProfiles section). + +it0024: Test usage of <executions/> inside a plugin rather than <goals/> + that are directly inside th plugin. + +it0025: Test multiple goal executions with different execution-level configs. + +it0026: Test merging of global- and user-level settings.xml files. + +it0027: Test @execute with a custom lifecycle, including configuration + +it0028: Test that unused configuration parameters from the POM don't cause the + mojo to fail...they will show up as warnings in the -X output instead. + +it0029: Test for pluginManagement injection of plugin configuration. + +it0030: Test for injection of dependencyManagement through parents of + dependency poms. + +it0031: Test usage of plugins.xml mapping file on the repository to resolve + plugin artifactId from it's prefix using the pluginGroups in + the provided settings.xml. + +it0032: Tests that a specified Maven version requirement that is lower doesn't cause any problems + +it0033: Test an EAR generation + +it0034: Test version range junit [3.7,) resolves to 3.8.1 + +it0035: Test artifact relocation. + +it0036: Test building from release-pom.xml when it's available + +it0037: Test building with alternate pom file using '-f' + +it0038: Test building project from outside the project directory using '-f' + option + +it0039: Test reactor for projects that have release-pom.xml in addition to + pom.xml. The release-pom.xml file should be chosen above pom.xml for + these projects in the build. + +it0040: Test the use of a packaging from a plugin + +it0041: Test the use of a new type from a plugin + +it0042: Test that the reactor can establish the artifact location of known projects for dependencies + +it0043: Test for repository inheritence - ensure using the same id overrides the defaults + +it0044: Test --settings CLI option + +it0045: Test non-reactor behavior when plugin declares "@requiresProject false" + +it0046: Test fail-never reactor behavior. Forces an exception to be thrown in + the first module, but checks that the second modules is built. + +it0047: Test the use case for having a compile time dependency be transitive: + when you extend a class you need its dependencies at compile time. + +it0048: Verify that default values for mojo parameters are working (indirectly, + by verifying that the Surefire mojo is functioning correctly). + +it0049: Test parameter alias usage. + +it0050: Test surefire inclusion/exclusions + +it0051: Test source attachment when -DperformRelease=true is specified. + +it0052: Test that source attachment doesn't take place when + -DperformRelease=true is missing. + +it0053: Test that attached artifacts have the same buildnumber and timestamp + as the main artifact. This will not correctly verify until we have + some way to pattern-match the buildnumber/timestamp... + +it0054: Test resource filtering. + +it0055: Test that source includes/excludes with in the compiler plugin config. + This will test excludes and testExcludes... + +it0056: Test that multiple executions of the compile goal with different + includes/excludes will succeed. + +it0057: Verify that scope == 'provided' dependencies are available to tests. + +it0058: Verify that profiles from settings.xml do not pollute module lists + across projects in a reactorized build. + +it0059: Verify that maven-1 POMs will be ignored but not stop the resolution + process. + +it0060: Test aggregation of list configuration items when using + 'combine.children=append' attribute. Specifically, merge the list of + excludes for the testCompile mojo. + +it0061: Verify that deployment of artifacts to a legacy-layout repository + results in a groupId directory of 'the.full.group.id' instead of + 'the/full/group/id'. + +it0062: Test that a deployment of a snapshot falls back to a non-snapshot repository if no snapshot repository is + specified. + +it0063: Test the use of a system scoped dependency to tools.jar. + +it0064: Test the use of a mojo that uses setters instead of private fields + for the population of configuration values. + +it0065: Test that the basedir of the parent is set correctly. + +it0066: Test that nonstandard POM files will be installed correctly. + +it0067: Test activation of a profile from the command line. + +it0068: Test repository accumulation. + +it0069: Test offline mode. + +it0070: Test a RAR generation. + +it0071: Verifies that dotted property references work within plugin + configurations. + +it0072: Verifies that property references with dotted notation work within + POM interpolation. + +it0073: Tests context passing between mojos in the same plugin. + +it0074: Test that plugin-level configuration instances are not nullified by + execution-level configuration instances. + +it0075: Verify that direct invocation of a mojo from the command line still + results in the processing of modules included via profiles. + +it0076: Test that plugins in pluginManagement aren't included in the build + unless they are referenced by groupId/artifactId within the plugins + section of a pom. + +it0077: Test test jar attachment. + +it0078: Test that configuration for maven-compiler-plugin is injected from + PluginManagement section even when it's not explicitly defined in the + plugins section. + +it0079: Test that source attachments have the same build number as the main + artifact when deployed. + +it0080: Test that depending on a WAR doesn't also get its dependencies + transitively. + +it0081: Test per-plugin dependencies. + +it0082: Test that the reactor can establish the artifact location of known projects for dependencies + using process-sources to see that it works even when they aren't compiled + +it0083: Verify that overriding a compile time dependency as provided in a WAR ensures it is not included. + +it0084: Verify that the collector selecting a particular version gets the correct subtree + +it0085: Verify that system-scoped dependencies get resolved with system scope + when they are resolved transitively via another (non-system) + dependency. Inherited scope should not apply in the case of + system-scoped dependencies, no matter where they are. + +it0086: Verify that a plugin dependency class can be loaded from both the plugin classloader and the + context classloader available to the plugin. + +it0087: Verify that a project-level plugin dependency class can be loaded from both the plugin classloader + and the context classloader available to the plugin. + +it0088: Test path translation. + +it0089: Test that Checkstyle PackageNamesLoader.loadModuleFactory(..) method will complete as-is with + the context classloader available to the plugin. + +it0090: Test that ensures that envars are interpolated correctly into plugin + configurations. + +it0091: Test that currently demonstrates that properties are not correctly + interpolated into other areas in the POM. This may strictly be a boolean + problem: I captured the problem as it was reported. + +it0092: Test that legacy repositories with legacy snapshots download correctly. + +it0094: Test classloading issues with mojos after 2.0 (MNG-1898). + +it0095: Test URL calculation when modules are in sibling dirs of parent. (MNG-2006) + +it0096: Test that plugin executions from >1 step of inheritance don't run multiple times. + +it0097: Test that the implied relative path for the parent POM works, even two + levels deep. + +it0098: Test that quoted system properties are processed correctly. [MNG-1415] + +it0099: Test that parent-POMs cached during a build are available as parents + to other POMs in the multimodule build. [MNG-2130] + +it0100: Test that ${parent.artifactId} resolves correctly. [MNG-2124] + +it0101: Test that properties defined in an active profile in the user's + settings are available for interpolation of systemPath in a dependency. + [MNG-2052] + +it0102: Test that <activeByDefault/> calculations for profile activation only + use profiles defined in the POM. [MNG-2136] + +it0103: Verify that multimodule builds where one project references another as + a parent can build, even if that parent is not correctly referenced by + <relativePath/> and is not in the local repository. [MNG-2196] + +it0104: Verify that plugin configurations are resolved correctly, particularly + when they contain ${project.build.directory} in the string value of a + Map.Entry. + +it0105: MRESOURCES-18 + +it0106: When a project has modules and its parent is not preinstalled [MNG-2318] + +it0107: Verify that default implementation of an implementation for a complex object works as + expected [MNG-2293] +END + [EMAIL PROTECTED] = $readme =~ m/(it\d+\: .*?)(?=\nit\d+\:|$)/gsx; +for $desc (@descriptions) { + ($name, $value) = ($desc =~ m/^(it\d+)\: (.*)$/s); + # ($value) = ($result =~ m/^it\d+\: (.*)$/s); + # $value =~ s/\s+/ /g; + chomp ($value); + $comment{$name} = $value; +} + +opendir(DIR, $dirname) or die "can't opendir $dirname: $!"; +while (defined($filename = readdir(DIR))) { + next unless (-d "$dirname/$filename"); + next if ($filename eq ".svn"); + next unless ($filename =~ m/^it0\d+$/); + $filePrebuildHook = "$dirname/$filename/prebuild-hook.txt"; + $fileCliOptions = "$dirname/$filename/cli-options.txt"; + $fileSystemProperties = "$dirname/$filename/system.properties"; + $fileVerifierProperties = "$dirname/$filename/verifier.properties"; + $fileGoals = "$dirname/$filename/goals.txt"; + $fileExpectedResults = "$dirname/$filename/expected-results.txt"; + $failOnErrorOutput = 1; + if (!exists($comment{$filename})) { + die "no comment: $filename\n"; + } + print "/** $comment{$filename} */\n"; + print "public void test_$filename() throws Exception {\n"; + print "File basedir = new File(rootdir, \"$filename\");\n"; + print "verifier = new Verifier(basedir.getAbsolutePath());\n"; + + if (-e "$filePrebuildHook") { + open (FILE, "$filePrebuildHook"); + while ($line = <FILE>) { + # print ("OLDLINE: $line"); + if ($line =~ /^(rm|rmdir) (.*)/) { + ($cmd, $path) = ($1, $2); + + if ($cmd eq "rm") { + if ($path =~ m/^\$\{artifact:([^:]*?):([^:]*?):([^:]*?):([^:]*?)\}$/) { + print "verifier.deleteArtifact(\"$1\", \"$2\", \"$3\", \"$4\");\n"; + } else { + print "FileUtils.deleteFile(new File(basedir, \"$path\"));\n"; + } + } elsif ($cmd eq "rmdir") { + print "FileUtils.deleteDirectory(new File(basedir, \"$path\"));\n"; + } else { + die ("wtf? $line\n"); + } + } + else { + die ("unexpected command: $line\n"); + } + } + close FILE; + } + + if (-e "$fileCliOptions") { + open(FILE, $fileCliOptions); + $cliOptions = <FILE>; + chomp ($cliOptions); + $cliOptions =~ s/"/\\"/g; + print "List cliOptions = new ArrayList();\n"; + print "cliOptions.add(\"$cliOptions\");\n"; + print "verifier.setCliOptions(cliOptions);\n"; + close FILE; + } + if (-e "$fileSystemProperties") { + open(FILE, $fileSystemProperties); + print "Properties systemProperties = new Properties();\n"; + while ($line = <FILE>) { + next if ($line =~ m/^\s*\#/); + ($name, $value) = ($line =~ m/^([^=]*)=(.*)/); + print "systemProperties.put(\"$name\", \"$value\");\n"; + } + print "verifier.setSystemProperties(systemProperties);\n"; + close FILE; + } + if (-e "$fileVerifierProperties") { + open(FILE, $fileVerifierProperties); + print "Properties verifierProperties = new Properties();\n"; + while ($line = <FILE>) { + next if ($line =~ m/^\s*\#/); + ($name, $value) = ($line =~ m/^([^=]*)=(.*)/); + if ($name eq "failOnErrorOutput" and $value eq "false") { + $failOnErrorOutput = 0; + } + print "verifierProperties.put(\"$name\", \"$value\");\n"; + } + print "verifier.setVerifierProperties(verifierProperties);\n"; + close FILE; + } + + open (FILE, $fileGoals) or die "Couldn't open $fileGoals: $!\n"; + + @goals = (); + while ($line = <FILE>) { + next if ($line =~ m/^\s*$/); + chomp ($line); + push (@goals, $line); + } + if (scalar(@goals) == 1) { + print "verifier.executeGoal(\"$goals[0]\");\n"; + } else { + print "List goals = Arrays.asList(new String[] {"; + for ($i = 0; $i < @goals; $i++) { + print "\"$goals[$i]\""; + print ", " if ($i != scalar(@goals) -1); + } + print "});\n"; + print "verifier.executeGoals(goals);\n"; + } + + close FILE; + + if (-e $fileExpectedResults) { + + open (FILE, $fileExpectedResults) or die "Couldn't open $fileExpectedResults: $!\n"; + + while ($line = <FILE>) { + chomp ($line); + #print ("OLDLINE: $line\n"); + if ($line =~ /^\#(.*)/) { + print "//$1\n"; + next; + } + if ($line =~ m/^\!\$\{artifact:([^:]*?):([^:]*?):([^:]*?):([^:]*?)\}$/) { + print "verifier.assertArtifactNotPresent(\"$1\", \"$2\", \"$3\", \"$4\");\n"; + } elsif ($line =~ m/^\$\{artifact:([^:]*?):([^:]*?):([^:]*?):([^:]*?)\}$/) { + print "verifier.assertArtifactPresent(\"$1\", \"$2\", \"$3\", \"$4\");\n"; + } elsif ($line =~ m/^\!(.*)/) { + print "verifier.assertFileNotPresent(\"$1\");\n"; + } else { + print "verifier.assertFilePresent(\"$line\");\n"; + } + } + close FILE; + } + + if ($failOnErrorOutput) { + print "verifier.verifyErrorFreeLog();\n"; + } else { + print "// don't verify error free log\n"; + } + print "}\n\n"; + +} +closedir(DIR); \ No newline at end of file Propchange: maven/components/trunk/mavenexecute.pl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/mavenexecute.pl ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"