1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   */ 
19  package org.apache.rat.annotation;
20  
21  import java.io.BufferedReader;
22  import java.io.File;
23  import java.io.FileReader;
24  import java.io.FileWriter;
25  import java.io.IOException;
26  import java.util.Random;
27  
28  import junit.framework.TestCase;
29  
30  public class TestLicenceAppender extends TestCase {
31    /** Used to ensure that temporary files have unq */
32    private Random random = new Random();
33      
34    public void testAddLicenceToUnknownFile() throws IOException {
35      String filename = "tmp" + random.nextLong() + ".unkownTyoe";
36      File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
37      FileWriter writer = new FileWriter(file);
38      writer.write("Unkown file type\n");
39      writer.close();
40      
41      ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
42      appender.append(file);
43      
44      File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
45      assertFalse("No new file should have been written", newFile.exists());
46    }
47    
48    public void testAddLicenceToJava() throws IOException {
49      String filename = "tmp.java";
50      String firstLine = "package foo;";
51      String secondLine = "/*";
52      
53      File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
54      FileWriter writer = new FileWriter(file);
55      writer.write(firstLine + "\n");
56      writer.write("\n");
57      writer.write("public class test {\n");
58      writer.write("}\n");
59      writer.close();
60      
61      ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
62      appender.append(file);
63      
64      File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
65      BufferedReader reader = new BufferedReader(new FileReader(newFile));
66      String line = reader.readLine();
67      assertEquals("First line is incorrect", firstLine, line);
68      line = reader.readLine();
69      assertEquals("Second line is incorrect", secondLine, line);
70      
71      file.delete();
72      newFile.delete();
73    }
74    
75    public void testAddLicenceToXML() throws IOException {
76      String filename = "tmp.xml";
77      String firstLine = "<?xml version='1.0'?>";
78      String secondLine = "<!--";
79      
80      File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
81      FileWriter writer = new FileWriter(file);
82      writer.write(firstLine + "\n");
83      writer.write("\n");
84      writer.write("<xml>\n");
85      writer.write("</xml>\n");
86      writer.close();
87      
88      ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
89      appender.append(file);
90      
91      File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
92      
93      BufferedReader reader = new BufferedReader(new FileReader(newFile));
94      String line = reader.readLine();
95      assertEquals("First line is incorrect", firstLine, line);
96      line = reader.readLine();
97      assertEquals("Second line is incorrect", secondLine, line);
98      
99      file.delete();
100     newFile.delete();
101   }
102   public void testAddLicenceToHTML() throws IOException {
103     String filename = "tmp.html";
104     String commentLine = "<!--";
105     
106     File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
107     FileWriter writer = new FileWriter(file);
108     writer.write("<html>\n");
109     writer.write("\n");
110     writer.write("</html>\n");
111     writer.close();
112     
113     ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
114     appender.append(file);
115     
116     File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
117     
118     BufferedReader reader = new BufferedReader(new FileReader(newFile));
119     String line = reader.readLine();
120     assertEquals("First line is incorrect", commentLine, line);
121     
122     file.delete();
123     newFile.delete();
124   }
125   
126   public void testAddLicenceToCSS() throws IOException {
127     String filename = "tmp.css";
128     String firstLine = "/*";
129     
130     File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
131     FileWriter writer = new FileWriter(file);
132     writer.write(".class {\n");
133     writer.write(" background-color: red;");
134     writer.write("}\n");
135     writer.close();
136     
137     ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
138     appender.append(file);
139     
140     File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
141     
142     BufferedReader reader = new BufferedReader(new FileReader(newFile));
143     String line = reader.readLine();
144     assertEquals("First line is incorrect", firstLine, line);
145     
146     file.delete();
147     newFile.delete();
148   }
149   
150   public void testAddLicenceToJavascript() throws IOException {
151     String filename = "tmp.js";
152     String firstLine = "/*";
153     
154     File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
155     FileWriter writer = new FileWriter(file);
156     writer.write("if (a ==b) {>\n");
157     writer.write(" alert(\"how useful!\");");
158     writer.write("}\n");
159     writer.close();
160     
161     ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
162     appender.append(file);
163     
164     File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
165     
166     BufferedReader reader = new BufferedReader(new FileReader(newFile));
167     String line = reader.readLine();
168     assertEquals("First line is incorrect", firstLine, line);
169     
170     file.delete();
171     newFile.delete();
172   }
173   
174   public void testAddLicenceToAPT() throws IOException {
175     String filename = "tmp.apt";
176     String firstLine = "~~";
177     
178     File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
179     FileWriter writer = new FileWriter(file);
180     writer.write("A Simple APT file");
181     writer.write(" This file contains nothing\n");
182     writer.write(" of any importance\n");
183     writer.close();
184     
185     ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
186     appender.append(file);
187     
188     File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
189     
190     BufferedReader reader = new BufferedReader(new FileReader(newFile));
191     String line = reader.readLine();
192     assertEquals("First line is incorrect", firstLine, line);
193     
194     file.delete();
195     newFile.delete();
196   }
197   
198   public void testAddLicenceToProperties() throws IOException {
199     String filename = "tmp.properties";
200     String firstLine = "#";
201     
202     File file = new File(System.getProperty("java.io.tmpdir") + File.separator + filename);
203     FileWriter writer = new FileWriter(file);
204     writer.write("property = value\n");
205     writer.write("fun = true\n");
206     writer.write("cool = true\n");
207     writer.close();
208     
209     ApacheV2LicenceAppender appender = new ApacheV2LicenceAppender();
210     appender.append(file);
211     
212     File newFile = new File(System.getProperty("java.io.tmpdir") + File.separator + filename + ".new");
213     
214     BufferedReader reader = new BufferedReader(new FileReader(newFile));
215     String line = reader.readLine();
216     assertEquals("First line is incorrect", firstLine, line);
217     
218     file.delete();
219     newFile.delete();
220   }
221 }