1 package org.codehaus.mojo.javascript;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.File;
20 import java.io.IOException;
21
22 import org.apache.maven.artifact.DefaultArtifact;
23 import org.apache.maven.plugin.AbstractMojo;
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.MojoFailureException;
26 import org.apache.maven.project.MavenProject;
27 import org.codehaus.mojo.javascript.archive.JavascriptArtifactManager;
28 import org.codehaus.plexus.archiver.ArchiverException;
29 import org.codehaus.plexus.util.DirectoryScanner;
30 import org.codehaus.plexus.util.FileUtils;
31
32
33
34
35
36
37
38
39
40 public class PrepareJsunitTestsMojo
41 extends AbstractMojo
42 {
43
44
45
46
47
48
49
50
51 private MavenProject project;
52
53
54
55
56
57
58
59 private boolean skipTests;
60
61
62
63
64
65
66 protected File sourceDirectory;
67
68
69
70
71
72
73 protected File jsunitTestSourceDirectory;
74
75
76
77
78 protected File jasmineTestSourceDirectory;
79
80
81
82
83
84
85 protected File workDirectory;
86
87
88
89
90
91
92 private String libsDirectory;
93
94
95
96
97
98
99 private boolean useArtifactId;
100
101
102
103
104 private JavascriptArtifactManager javascriptArtifactManager;
105
106
107
108
109
110
111 public void execute()
112 throws MojoExecutionException, MojoFailureException
113 {
114 if(skipTests) {
115 return;
116 }
117
118 if(jsunitTestSourceDirectory.equals(jasmineTestSourceDirectory) || !jsunitTestSourceDirectory.exists()) {
119 getLog().info("No JsUnit tests, skipping JsUnit tests preparation.");
120 return;
121 }
122
123 DirectoryScanner scanner = new DirectoryScanner();
124 scanner.addDefaultExcludes();
125 try
126 {
127 scanner.setBasedir( sourceDirectory );
128 scanner.scan();
129 String[] files = scanner.getIncludedFiles();
130 for ( int i = 0; i < files.length; i++ )
131 {
132 File destFile = new File(workDirectory, files[i] );
133 destFile.getParentFile().mkdirs();
134 FileUtils.copyFile( new File( sourceDirectory, files[i] ), destFile );
135 }
136
137 scanner.setBasedir(jsunitTestSourceDirectory);
138 scanner.scan();
139 files = scanner.getIncludedFiles();
140 for ( int i = 0; i < files.length; i++ )
141 {
142 File destFile = new File(workDirectory, files[i] );
143 destFile.getParentFile().mkdirs();
144 FileUtils.copyFile( new File(jsunitTestSourceDirectory, files[i] ), destFile );
145 }
146 }
147 catch ( IOException e )
148 {
149 throw new MojoExecutionException( "Failed to copy scripts in " + workDirectory);
150 }
151
152 try
153 {
154 javascriptArtifactManager.unpack( project, DefaultArtifact.SCOPE_TEST, new File(
155 workDirectory, libsDirectory ), useArtifactId );
156 }
157 catch ( ArchiverException e )
158 {
159 throw new MojoExecutionException( "Failed to unpack javascript dependencies", e );
160 }
161 }
162 }