From c8da7ec534c959db815f272819dafaf61e49a9bd Mon Sep 17 00:00:00 2001 From: mattinger Date: Tue, 7 Nov 2006 21:16:39 +0000 Subject: Initial import of cpptasks code git-svn-id: file:///home/sven/projects/JOGL/temp/ant-contrib/svn/ant-contrib-code/trunk/cpptasks@62 32d7a393-a5a9-423c-abd3-5d954feb1f2f --- .../cpptasks/TestTargetHistoryTable.java | 141 +++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 test/junit/net/sf/antcontrib/cpptasks/TestTargetHistoryTable.java (limited to 'test/junit/net/sf/antcontrib/cpptasks/TestTargetHistoryTable.java') diff --git a/test/junit/net/sf/antcontrib/cpptasks/TestTargetHistoryTable.java b/test/junit/net/sf/antcontrib/cpptasks/TestTargetHistoryTable.java new file mode 100644 index 0000000..1b3a656 --- /dev/null +++ b/test/junit/net/sf/antcontrib/cpptasks/TestTargetHistoryTable.java @@ -0,0 +1,141 @@ +/* + * + * Copyright 2003-2004 The Ant-Contrib project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.antcontrib.cpptasks; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +import net.sf.antcontrib.cpptasks.compiler.ProcessorConfiguration; +import net.sf.antcontrib.cpptasks.VersionInfo; +/** + * Tests for TargetHistoryTable + * + * @author CurtA + */ +public class TestTargetHistoryTable extends TestXMLConsumer { + private static class MockProcessorConfiguration + implements + ProcessorConfiguration { + public MockProcessorConfiguration() { + } + public int bid(String fileName) { + return 100; + } + public String getIdentifier() { + return "Mock Configuration"; + } + public String[] getOutputFileNames(String baseName, VersionInfo versionInfo) { + return new String[] { baseName }; + } + public ProcessorParam[] getParams() { + return new ProcessorParam[0]; + } + public boolean getRebuild() { + return false; + } + } + /** + * Constructor + * + * @param name + * test case name + * @see junit.framework.TestCase#TestCase(String) + */ + public TestTargetHistoryTable(String name) { + super(name); + } + /** + * Tests loading a stock history file + * + * @throws IOException + */ + public void testLoadOpenshore() throws IOException { + try { + copyResourceToTmpDir("files/openshore/history.xml", "history.xml"); + CCTask task = new CCTask(); + String tmpDir = System.getProperty("java.io.tmpdir"); + TargetHistoryTable history = new TargetHistoryTable(task, new File( + tmpDir)); + } finally { + deleteTmpFile("history.xml"); + } + } + /** + * Tests loading a stock history file + * + * @throws IOException + */ + public void testLoadXerces() throws IOException { + try { + copyResourceToTmpDir("files/xerces-c/history.xml", "history.xml"); + CCTask task = new CCTask(); + String tmpDir = System.getProperty("java.io.tmpdir"); + TargetHistoryTable history = new TargetHistoryTable(task, new File( + tmpDir)); + } finally { + deleteTmpFile("history.xml"); + } + } + /** + * Tests for bug fixed by patch [ 650397 ] Fix: Needless rebuilds on Unix + * + * @throws IOException + */ + public void testUpdateTimeResolution() throws IOException { + File compiledFile = null; + try { + // + // delete any history file that might exist + // in the test output directory + String tempDir = System.getProperty("java.io.tmpdir"); + File historyFile = new File(tempDir, "history.xml"); + if (historyFile.exists()) { + historyFile.delete(); + } + TargetHistoryTable table = new TargetHistoryTable(null, new File( + tempDir)); + // + // create a dummy compiled unit + // + compiledFile = new File(tempDir, "dummy.o"); + FileOutputStream compiledStream = new FileOutputStream(compiledFile); + compiledStream.close(); + // + // lastModified times can be slightly less than + // task start time due to file system resolution. + // Mimic this by slightly incrementing the last modification time. + // + long startTime = compiledFile.lastModified() + 1; + // + // update the table + // + table.update(new MockProcessorConfiguration(), + new String[]{"dummy.o"}, null); + // + // commit. If "compiled" file was judged to be + // valid we should have a history file. + // + table.commit(); + assertTrue("History file was not created", historyFile.exists()); + assertTrue("History file was empty", historyFile.length() > 10); + } finally { + if (compiledFile != null && compiledFile.exists()) { + compiledFile.delete(); + } + } + } +} -- cgit v1.2.3