ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject ant git commit: unxz task - PR 60350
Date Tue, 10 Jan 2017 20:14:22 GMT
Repository: ant
Updated Branches:
  refs/heads/master d1e64cc7f -> 5ed0aeaa4


unxz task - PR 60350


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/5ed0aeaa
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/5ed0aeaa
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/5ed0aeaa

Branch: refs/heads/master
Commit: 5ed0aeaa46b2dceb5cdab6c33609076c829e7598
Parents: d1e64cc
Author: Stefan Bodewig <bodewig@apache.org>
Authored: Tue Jan 10 21:13:46 2017 +0100
Committer: Stefan Bodewig <bodewig@apache.org>
Committed: Tue Jan 10 21:13:46 2017 +0100

----------------------------------------------------------------------
 build.xml                                       |   2 +-
 .../testcases/taskdefs/expected/asf-logo.gif.xz | Bin 0 -> 7024 bytes
 .../tools/ant/taskdefs/defaults.properties      |   1 +
 .../tools/ant/taskdefs/optional/xz/Unxz.java    |  93 +++++++++++++++++++
 .../antunit/taskdefs/optional/xz/unxz-test.xml  |  63 +++++++++++++
 .../antunit/taskdefs/optional/xz/xz-test.xml    |  47 ++++++++++
 6 files changed, 205 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index a0d4fc3..1804274 100644
--- a/build.xml
+++ b/build.xml
@@ -294,7 +294,7 @@
 
   <selector id="needs.xz">
       <or>
-         <filename name="${optional.package}/xz/Xz*"/>
+         <filename name="${optional.package}/xz/"/>
       </or>
   </selector>
 

http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/src/etc/testcases/taskdefs/expected/asf-logo.gif.xz
----------------------------------------------------------------------
diff --git a/src/etc/testcases/taskdefs/expected/asf-logo.gif.xz b/src/etc/testcases/taskdefs/expected/asf-logo.gif.xz
new file mode 100644
index 0000000..139eea4
Binary files /dev/null and b/src/etc/testcases/taskdefs/expected/asf-logo.gif.xz differ

http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/src/main/org/apache/tools/ant/taskdefs/defaults.properties
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
index 69b29b4..8db1ebc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
@@ -108,6 +108,7 @@ typedef=org.apache.tools.ant.taskdefs.Typedef
 unjar=org.apache.tools.ant.taskdefs.Expand
 untar=org.apache.tools.ant.taskdefs.Untar
 unwar=org.apache.tools.ant.taskdefs.Expand
+unxz=org.apache.tools.ant.taskdefs.optional.xz.Unxz
 unzip=org.apache.tools.ant.taskdefs.Expand
 uptodate=org.apache.tools.ant.taskdefs.UpToDate
 waitfor=org.apache.tools.ant.taskdefs.WaitFor

http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/src/main/org/apache/tools/ant/taskdefs/optional/xz/Unxz.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/xz/Unxz.java b/src/main/org/apache/tools/ant/taskdefs/optional/xz/Unxz.java
new file mode 100644
index 0000000..a98ae6d
--- /dev/null
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/xz/Unxz.java
@@ -0,0 +1,93 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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 org.apache.tools.ant.taskdefs.optional.xz;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Unpack;
+import org.apache.tools.ant.util.FileUtils;
+import org.tukaani.xz.XZInputStream;
+
+/**
+ * Expands a file that has been compressed with the XZ
+ * algorithm. Normally used to compress non-compressed archives such
+ * as TAR files.
+ *
+ * @since Ant 1.10.1
+ *
+ * @ant.task category="packaging"
+ */
+
+public class Unxz extends Unpack {
+    private static final int BUFFER_SIZE = 8 * 1024;
+    private static final String DEFAULT_EXTENSION = ".xz";
+
+    /**
+     * Get the default extension.
+     * @return the value ".xz"
+     */
+    protected String getDefaultExtension() {
+        return DEFAULT_EXTENSION;
+    }
+
+    /**
+     * Implement the gunzipping.
+     */
+    protected void extract() {
+        if (srcResource.getLastModified() > dest.lastModified()) {
+            log("Expanding " + srcResource.getName() + " to "
+                        + dest.getAbsolutePath());
+
+            FileOutputStream out = null;
+            XZInputStream zIn = null;
+            InputStream fis = null;
+            try {
+                out = new FileOutputStream(dest);
+                fis = srcResource.getInputStream();
+                zIn = new XZInputStream(fis);
+                byte[] buffer = new byte[BUFFER_SIZE];
+                int count = 0;
+                do {
+                    out.write(buffer, 0, count);
+                    count = zIn.read(buffer, 0, buffer.length);
+                } while (count != -1);
+            } catch (IOException ioe) {
+                String msg = "Problem expanding xz " + ioe.getMessage();
+                throw new BuildException(msg, ioe, getLocation());
+            } finally {
+                FileUtils.close(fis);
+                FileUtils.close(out);
+                FileUtils.close(zIn);
+            }
+        }
+    }
+
+    /**
+     * Whether this task can deal with non-file resources.
+     *
+     * <p>This implementation returns true only.</p>
+     * @return true
+     */
+    protected boolean supportsNonFileResources() {
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/src/tests/antunit/taskdefs/optional/xz/unxz-test.xml
----------------------------------------------------------------------
diff --git a/src/tests/antunit/taskdefs/optional/xz/unxz-test.xml b/src/tests/antunit/taskdefs/optional/xz/unxz-test.xml
new file mode 100644
index 0000000..0cfffb4
--- /dev/null
+++ b/src/tests/antunit/taskdefs/optional/xz/unxz-test.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+  <import file="../../../antunit-base.xml" />
+
+  <target name="setup">
+    <mkdir dir="${output}"/>
+    <available property="xz.present" classname="org.tukaani.xz.XZOutputStream"/>
+  </target>
+
+  <target name="testWithFileResourceToFile" depends="setup" if="xz.present">
+    <unxz dest="${output}/asf-logo.gif">
+      <file file="../../../../../etc/testcases/taskdefs/expected/asf-logo.gif.xz"/>
+    </unxz>
+    <au:assertFilesMatch expected="../../../../../etc/testcases/asf-logo.gif"
+                         actual="${output}/asf-logo.gif"/>
+  </target>
+
+  <target name="testWithFileResourceToDirectory" depends="setup" if="xz.present">
+    <unxz dest="${output}">
+      <file file="../../../../../etc/testcases/taskdefs/expected/asf-logo.gif.xz"/>
+    </unxz>
+    <au:assertFilesMatch expected="../../../../../etc/testcases/asf-logo.gif"
+                         actual="${output}/asf-logo.gif"/>
+  </target>
+
+  <target name="testWithNonFileResourceToFile" depends="setup" if="xz.present">
+    <unxz dest="${output}/greeting.txt">
+      <url url="http://ant.apache.org/webtest/xz/greeting.txt.xz"/>
+    </unxz>
+    <get src="http://ant.apache.org/webtest/gunzip/greeting.txt"
+         dest="${output}/orig.greeting.txt"/>
+    <au:assertFilesMatch expected="${output}/orig.greeting.txt"
+                         actual="${output}/greeting.txt"/>
+  </target>
+
+  <target name="testWithNonFileResourceToDir" depends="setup" if="xz.present">
+    <unxz dest="${output}">
+      <url url="http://ant.apache.org/webtest/xz/greeting.txt.xz"/>
+    </unxz>
+    <get src="http://ant.apache.org/webtest/gunzip/greeting.txt"
+         dest="${output}/orig.greeting.txt"/>
+    <au:assertFilesMatch expected="${output}/orig.greeting.txt"
+                         actual="${output}/greeting.txt"/>
+  </target>
+
+</project>
+

http://git-wip-us.apache.org/repos/asf/ant/blob/5ed0aeaa/src/tests/antunit/taskdefs/optional/xz/xz-test.xml
----------------------------------------------------------------------
diff --git a/src/tests/antunit/taskdefs/optional/xz/xz-test.xml b/src/tests/antunit/taskdefs/optional/xz/xz-test.xml
new file mode 100644
index 0000000..5854123
--- /dev/null
+++ b/src/tests/antunit/taskdefs/optional/xz/xz-test.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+
+    <!-- note relies on antunit 1.1 -->
+    <import file="../../../antunit-base.xml" />
+
+    <target name="setUp">
+        <mkdir dir="${output}" />
+        <mkdir dir="${output}/empty" />
+        <touch file="${output}/fileone" />
+        <touch file="${output}/filetwo" />
+        <available property="xz.present" classname="org.tukaani.xz.XZOutputStream"/>
+    </target>
+
+    <target name="testFailNone" if="xz.present">
+        <au:expectfailure expectedmessage="No resource selected, xz needs exactly one
resource." message="Should have thrown an exception">
+            <xz destfile="${output}/file.gz">
+                <fileset dir="${output}/empty" />
+            </xz>
+        </au:expectfailure>
+    </target>
+
+    <target name="testFailTwo" if="xz.present">
+        <au:expectfailure expectedmessage="xz cannot handle multiple resources at once.
(2 resources were selected.)" message="Should have thrown an exception">
+            <xz destfile="${output}/file.gz">
+                <fileset dir="${output}" />
+            </xz>
+        </au:expectfailure>
+    </target>
+
+</project>


Mime
View raw message