You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

TarRoundTripTest.java 2.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. */
  18. package org.apache.tools.tar;
  19. import java.io.IOException;
  20. import java.io.ByteArrayInputStream;
  21. import java.io.ByteArrayOutputStream;
  22. import junit.framework.TestCase;
  23. public class TarRoundTripTest extends TestCase {
  24. private static final String LONG_NAME
  25. = "this/path/name/contains/more/than/one/hundred/characters/in/order/"
  26. + "to/test/the/GNU/long/file/name/capability/round/tripped";
  27. public TarRoundTripTest(String name) {
  28. super(name);
  29. }
  30. /**
  31. * test round-tripping long (GNU) entries
  32. */
  33. public void testLongRoundTripping() throws IOException {
  34. TarEntry original = new TarEntry(LONG_NAME);
  35. assertTrue("over 100 chars", LONG_NAME.length() > 100);
  36. assertEquals("original name", LONG_NAME, original.getName());
  37. ByteArrayOutputStream buff = new ByteArrayOutputStream();
  38. TarOutputStream tos = new TarOutputStream(buff);
  39. tos.setLongFileMode(TarOutputStream.LONGFILE_GNU);
  40. tos.putNextEntry(original);
  41. tos.closeEntry();
  42. tos.close();
  43. TarInputStream tis
  44. = new TarInputStream(new ByteArrayInputStream(buff.toByteArray()));
  45. TarEntry tripped = tis.getNextEntry();
  46. assertEquals("round-tripped name", LONG_NAME, tripped.getName());
  47. assertNull("no more entries", tis.getNextEntry());
  48. tis.close();
  49. }
  50. }