1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package searls.jasmine;
17
18 import java.io.File;
19 import java.io.IOException;
20
21 import org.apache.maven.artifact.DefaultArtifact;
22 import org.apache.maven.plugin.MojoExecutionException;
23 import org.apache.maven.plugin.MojoFailureException;
24 import org.apache.maven.project.MavenProject;
25 import org.codehaus.mojo.javascript.archive.JavascriptArtifactManager;
26 import org.codehaus.plexus.archiver.ArchiverException;
27 import org.codehaus.plexus.util.DirectoryScanner;
28 import org.codehaus.plexus.util.FileUtils;
29
30
31
32
33
34
35
36
37 public class PrepareJasmineTestsMojo extends AbstractJasmineMojo
38 {
39
40
41
42
43
44
45
46 private MavenProject project;
47
48
49
50
51 private JavascriptArtifactManager javascriptArtifactManager;
52
53
54
55
56
57
58 public void execute()
59 throws MojoExecutionException, MojoFailureException
60 {
61 if(skipTests || !jasmineTestSourceDirectory.exists()) {
62 getLog().info("No Jasmine tests, skipping Jasmine tests preparation.");
63 return;
64 }
65
66 DirectoryScanner scanner = new DirectoryScanner();
67 scanner.addDefaultExcludes();
68 try
69 {
70 File destDir;
71 String[] files;
72
73 if( sourceDirectory.exists() ) {
74 destDir = new File(jasmineTargetDir, srcDirectoryName);
75 scanner.setBasedir( sourceDirectory );
76 scanner.scan();
77 files = scanner.getIncludedFiles();
78 for ( int i = 0; i < files.length; i++ )
79 {
80 File destFile = new File( destDir, files[i] );
81 destFile.getParentFile().mkdirs();
82 FileUtils.copyFile( new File( sourceDirectory, files[i] ), destFile );
83 }
84 }
85
86 destDir = new File(jasmineTargetDir, specDirectoryName);
87 scanner.setBasedir( jasmineTestSourceDirectory );
88 scanner.scan();
89 files = scanner.getIncludedFiles();
90 for ( int i = 0; i < files.length; i++ )
91 {
92 File destFile = new File( destDir, files[i] );
93 destFile.getParentFile().mkdirs();
94 FileUtils.copyFile( new File( jasmineTestSourceDirectory, files[i] ), destFile );
95 }
96 }
97 catch ( IOException e )
98 {
99 throw new MojoExecutionException( "Failed to copy scripts in " + jasmineTargetDir );
100 }
101
102 try
103 {
104 javascriptArtifactManager.unpack( project, DefaultArtifact.SCOPE_TEST, new File(
105 jasmineTargetDir, libsDirectory ), useArtifactId );
106 }
107 catch ( ArchiverException e )
108 {
109 throw new MojoExecutionException( "Failed to unpack javascript dependencies", e );
110 }
111 }
112 }