< prev index next >

test/demo/zipfs/ZFSTests.java

Print this page
rev 13714 : 8028480: (zipfs) NoSuchFileException on creating a file in ZipFileSystem with CREATE and WRITE
8034773: (zipfs) newOutputstream uses CREATE_NEW when no options specified
Summary: to open the new steram with appropricate open options
Reviewed-by:

*** 1,7 **** /* ! * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 20,43 **** * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! @bug 7156873 @summary ZipFileSystem regression tests */ ! import java.net.URI; import java.nio.file.*; ! import java.util.Map; ! import java.util.HashMap; public class ZFSTests { public static void main(String[] args) throws Throwable { test7156873(); } static void test7156873() throws Throwable { String DIRWITHSPACE = "testdir with spaces"; Path dir = Paths.get(DIRWITHSPACE); --- 20,46 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! @bug 7156873 8028480 8034773 @summary ZipFileSystem regression tests */ ! import java.io.OutputStream; import java.net.URI; + import java.nio.ByteBuffer; + import java.nio.channels.*; import java.nio.file.*; ! import java.nio.file.spi.*; ! import java.util.*; public class ZFSTests { public static void main(String[] args) throws Throwable { test7156873(); + testOpenOptions(); } static void test7156873() throws Throwable { String DIRWITHSPACE = "testdir with spaces"; Path dir = Paths.get(DIRWITHSPACE);
*** 51,56 **** --- 54,99 ---- } finally { Files.deleteIfExists(path); Files.deleteIfExists(dir); } } + + static void testOpenOptions() throws Throwable { + Path path = Paths.get("file.zip"); + try { + URI uri = URI.create("jar:" + path.toUri()); + Map<String, Object> env = new HashMap<String, Object>(); + env.put("create", "true"); + try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { + FileSystemProvider fsp = fs.provider(); + Set<? extends OpenOption> options; + Path p = fs.getPath("test.txt"); + // 8028480 + options = EnumSet.of(StandardOpenOption.CREATE, + StandardOpenOption.WRITE, + StandardOpenOption.APPEND); + try (FileChannel ch = fsp.newFileChannel(p, options)) { + ch.write(ByteBuffer.wrap("Hello!".getBytes("ASCII"))); + } + // 8034773 + try (OutputStream os = fsp.newOutputStream(p, new OpenOption[0])) { + os.write("Hello2!".getBytes("ASCII")); + } + if (!"Hello2!".equals(new String( + Files.readAllBytes(fs.getPath("test.txt"))))) { + throw new RuntimeException("failed to open as truncate_existing"); + } + + options = EnumSet.of(StandardOpenOption.CREATE, + StandardOpenOption.APPEND, + StandardOpenOption.TRUNCATE_EXISTING); + try (FileChannel ch = fsp.newFileChannel(p, options)) { + throw new RuntimeException("expected IAE not thrown!"); + } catch (IllegalArgumentException x) { + // expected x.printStackTrace(); + } + } + } finally { + Files.deleteIfExists(path); + } + } }
< prev index next >