You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/02/06 01:00:57 UTC

commons-testing git commit: Add CopyFileTestRule.

Repository: commons-testing
Updated Branches:
  refs/heads/master a5c619156 -> 945be5fa9


Add CopyFileTestRule.

Project: http://git-wip-us.apache.org/repos/asf/commons-testing/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-testing/commit/945be5fa
Tree: http://git-wip-us.apache.org/repos/asf/commons-testing/tree/945be5fa
Diff: http://git-wip-us.apache.org/repos/asf/commons-testing/diff/945be5fa

Branch: refs/heads/master
Commit: 945be5fa9bd75b591a9f9d46b740ccdade3cf1bf
Parents: a5c6191
Author: Gary Gregory <ga...@gmail.com>
Authored: Mon Feb 5 18:00:54 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Mon Feb 5 18:00:54 2018 -0700

----------------------------------------------------------------------
 .../testing/net/AvailableServerPortFinder.java  |  1 +
 .../org/apache/commons/testing/CloserTest.java  |  1 +
 commons-testing-junit4/pom.xml                  |  4 +
 .../testing/junit4/io/CopyFileTestRule.java     | 88 ++++++++++++++++++++
 .../testing/junit4/io/CopyFileTestRuleTest.java | 47 +++++++++++
 .../src/test/resources/test.txt                 |  1 +
 pom.xml                                         |  6 ++
 7 files changed, 148 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-generic/src/main/java/org/apache/commons/testing/net/AvailableServerPortFinder.java
----------------------------------------------------------------------
diff --git a/commons-testing-generic/src/main/java/org/apache/commons/testing/net/AvailableServerPortFinder.java b/commons-testing-generic/src/main/java/org/apache/commons/testing/net/AvailableServerPortFinder.java
index 9a276e9..656a97a 100644
--- a/commons-testing-generic/src/main/java/org/apache/commons/testing/net/AvailableServerPortFinder.java
+++ b/commons-testing-generic/src/main/java/org/apache/commons/testing/net/AvailableServerPortFinder.java
@@ -14,6 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
+
 package org.apache.commons.testing.net;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-generic/src/test/java/org/apache/commons/testing/CloserTest.java
----------------------------------------------------------------------
diff --git a/commons-testing-generic/src/test/java/org/apache/commons/testing/CloserTest.java b/commons-testing-generic/src/test/java/org/apache/commons/testing/CloserTest.java
index b812292..ccb939d 100644
--- a/commons-testing-generic/src/test/java/org/apache/commons/testing/CloserTest.java
+++ b/commons-testing-generic/src/test/java/org/apache/commons/testing/CloserTest.java
@@ -14,6 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
+
 package org.apache.commons.testing;
 
 import org.junit.Assert;

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-junit4/pom.xml
----------------------------------------------------------------------
diff --git a/commons-testing-junit4/pom.xml b/commons-testing-junit4/pom.xml
index 836c935..5c27ac3 100644
--- a/commons-testing-junit4/pom.xml
+++ b/commons-testing-junit4/pom.xml
@@ -76,6 +76,10 @@
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+    </dependency>
   </dependencies>
 
   <reporting>

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-junit4/src/main/java/org/apache/commons/testing/junit4/io/CopyFileTestRule.java
----------------------------------------------------------------------
diff --git a/commons-testing-junit4/src/main/java/org/apache/commons/testing/junit4/io/CopyFileTestRule.java b/commons-testing-junit4/src/main/java/org/apache/commons/testing/junit4/io/CopyFileTestRule.java
new file mode 100644
index 0000000..38792c0
--- /dev/null
+++ b/commons-testing-junit4/src/main/java/org/apache/commons/testing/junit4/io/CopyFileTestRule.java
@@ -0,0 +1,88 @@
+/*
+ * 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.commons.testing.junit4.io;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Objects;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.Assert;
+import org.junit.rules.ExternalResource;
+import org.junit.rules.TemporaryFolder;
+
+/**
+ * Copies a file as a JUnit TestRule.
+ * 
+ * @since 1.0.0
+ */
+public class CopyFileTestRule extends ExternalResource {
+
+    /**
+     * Creates a test rule that will copy a file to a given temporary folder.
+     * 
+     * @param sourceFilePath
+     *            the file to copy.
+     * @param targetTemporaryFolder
+     *            the destination folder.
+     * @param targetFilePath
+     * @return a new test rule.
+     */
+    public static CopyFileTestRule create(final String sourceFilePath, final TemporaryFolder targetTemporaryFolder,
+            final String targetFilePath) {
+        return new CopyFileTestRule(sourceFilePath, targetTemporaryFolder, targetFilePath);
+    }
+
+    private final TemporaryFolder targetTemporaryFolder;
+    private final String targetFileName;
+    private final String sourceFilePath;
+
+    CopyFileTestRule(final String sourceFilePath, final TemporaryFolder targetTemporaryFolder,
+            final String targetFilePath) {
+        super();
+        this.sourceFilePath = Objects.requireNonNull(sourceFilePath, "sourceFilePath");
+        this.targetTemporaryFolder = Objects.requireNonNull(targetTemporaryFolder, "targetTemporaryFolder");
+        this.targetFileName = Objects.requireNonNull(targetFilePath, "targetFileName");
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.junit.rules.ExternalResource#before()
+     */
+    @Override
+    protected void before() throws Throwable {
+        copyFile();
+    }
+
+    private void copyFile() throws IOException {
+        final File fromFile = getSourceFile();
+        final File toFile = getTargetFile();
+        FileUtils.copyFile(fromFile, toFile);
+        Assert.assertTrue(toFile.exists());
+    }
+
+    public File getSourceFile() {
+        return new File(sourceFilePath);
+    }
+
+    public File getTargetFile() {
+        return new File(targetTemporaryFolder.getRoot(), targetFileName);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-junit4/src/test/java/org/apache/commons/testing/junit4/io/CopyFileTestRuleTest.java
----------------------------------------------------------------------
diff --git a/commons-testing-junit4/src/test/java/org/apache/commons/testing/junit4/io/CopyFileTestRuleTest.java b/commons-testing-junit4/src/test/java/org/apache/commons/testing/junit4/io/CopyFileTestRuleTest.java
new file mode 100644
index 0000000..022995f
--- /dev/null
+++ b/commons-testing-junit4/src/test/java/org/apache/commons/testing/junit4/io/CopyFileTestRuleTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.commons.testing.junit4.io;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.testing.junit4.RuleChainFactory;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TemporaryFolder;
+
+public class CopyFileTestRuleTest {
+
+    public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+    public CopyFileTestRule copyFileTestRule = CopyFileTestRule.create("src/test/resources/test.txt", temporaryFolder,
+            "test-dest.txt");
+
+    @Rule
+    public RuleChain ruleChain = RuleChainFactory.create(temporaryFolder, copyFileTestRule);
+
+    @Test
+    public void test() throws IOException {
+        Assert.assertEquals("test",
+                FileUtils.readFileToString(copyFileTestRule.getTargetFile(), StandardCharsets.UTF_8).trim());
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/commons-testing-junit4/src/test/resources/test.txt
----------------------------------------------------------------------
diff --git a/commons-testing-junit4/src/test/resources/test.txt b/commons-testing-junit4/src/test/resources/test.txt
new file mode 100644
index 0000000..77356c3
--- /dev/null
+++ b/commons-testing-junit4/src/test/resources/test.txt
@@ -0,0 +1 @@
+test

http://git-wip-us.apache.org/repos/asf/commons-testing/blob/945be5fa/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 909ad78..d784071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,11 @@
         <version>${junit4.version}</version>
       </dependency>
       <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>${commons-io.version}</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>${commons-lang.version}</version>
@@ -139,6 +144,7 @@
     <mongodb2.version>2.14.3</mongodb2.version>
     <mongodb3.version>3.6.1</mongodb3.version>
     <junit4.version>4.12</junit4.version>
+    <commons-io.version>2.6</commons-io.version>
     <commons-lang.version>3.7</commons-lang.version>
   </properties>