Home | History | Annotate | Download | only in elonen
      1 package fi.iki.elonen;
      2 
      3 /*
      4  * #%L
      5  * NanoHttpd-Core
      6  * %%
      7  * Copyright (C) 2012 - 2015 nanohttpd
      8  * %%
      9  * Redistribution and use in source and binary forms, with or without modification,
     10  * are permitted provided that the following conditions are met:
     11  *
     12  * 1. Redistributions of source code must retain the above copyright notice, this
     13  *    list of conditions and the following disclaimer.
     14  *
     15  * 2. Redistributions in binary form must reproduce the above copyright notice,
     16  *    this list of conditions and the following disclaimer in the documentation
     17  *    and/or other materials provided with the distribution.
     18  *
     19  * 3. Neither the name of the nanohttpd nor the names of its contributors
     20  *    may be used to endorse or promote products derived from this software without
     21  *    specific prior written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     26  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     27  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     30  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     31  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     32  * OF THE POSSIBILITY OF SUCH DAMAGE.
     33  * #L%
     34  */
     35 
     36 import java.io.File;
     37 import java.io.IOException;
     38 import java.util.UUID;
     39 
     40 import org.junit.Assert;
     41 import org.junit.Test;
     42 
     43 import fi.iki.elonen.NanoHTTPD.DefaultTempFile;
     44 
     45 /**
     46  * Created by Victor Nikiforov on 10/16/15.
     47  */
     48 public class JavaIOTempDirExistTest {
     49 
     50     @Test
     51     public void testJavaIoTempDefault() throws Exception {
     52         String tmpdir = System.getProperty("java.io.tmpdir");
     53         NanoHTTPD.DefaultTempFileManager manager = new NanoHTTPD.DefaultTempFileManager();
     54         DefaultTempFile tempFile = (DefaultTempFile) manager.createTempFile("xx");
     55         File tempFileBackRef = new File(tempFile.getName());
     56         Assert.assertEquals(tempFileBackRef.getParentFile(), new File(tmpdir));
     57 
     58         // force an exception
     59         tempFileBackRef.delete();
     60         Exception e = null;
     61         try {
     62             tempFile.delete();
     63         } catch (Exception ex) {
     64             e = ex;
     65         }
     66         Assert.assertNotNull(e);
     67         manager.clear();
     68     }
     69 
     70     @Test
     71     public void testJavaIoTempSpecific() throws IOException {
     72         final String tmpdir = System.getProperty("java.io.tmpdir");
     73         try {
     74             String tempFileName = UUID.randomUUID().toString();
     75             File newDir = new File("target", tempFileName);
     76             System.setProperty("java.io.tmpdir", newDir.getAbsolutePath());
     77             Assert.assertEquals(false, newDir.exists());
     78             new NanoHTTPD.DefaultTempFileManager();
     79             Assert.assertEquals(true, newDir.exists());
     80             newDir.delete();
     81         } finally {
     82             System.setProperty("java.io.tmpdir", tmpdir);
     83         }
     84 
     85     }
     86 
     87 }
     88