/** * This file is part of git-as-svn. It is subject to the license terms * in the LICENSE file found in the top-level directory of this distribution * and at http://www.gnu.org/licenses/gpl-2.0.html. No part of git-as-svn, * including this file, may be copied, modified, propagated, or distributed * except according to the terms contained in the LICENSE file. */ package svnserver.ext.gitlfs.storage.local; import com.google.common.io.CharStreams; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import svnserver.TestHelper; import svnserver.ext.gitlfs.config.LfsLayout; import svnserver.ext.gitlfs.storage.LfsReader; import svnserver.ext.gitlfs.storage.LfsWriter; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; /** * Simple test for LfsLocalStorage. * * @author Artem V. Navrotskiy <bozaro@users.noreply.github.com> */ public class LfsLocalStorageTest { @DataProvider(name = "compressProvider") public static Object[][] compressProvider() { return new Object[][]{ {true}, {false}, }; } @Test(dataProvider = "compressProvider") public void simple(boolean compress) throws IOException { final File tempDir = TestHelper.createTempDir("git-as-svn"); try { LfsLocalStorage storage = new LfsLocalStorage(LfsLayout.TwoLevels, new File(tempDir, "data"), new File(tempDir, "meta"), compress); // Check file is not exists Assert.assertNull(storage.getReader("sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308")); // Write new file try (final LfsWriter writer = storage.getWriter(null)) { writer.write("Hello, world!!!".getBytes(StandardCharsets.UTF_8)); Assert.assertEquals(writer.finish(null), "sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); } // Read old file. final LfsReader reader = storage.getReader("sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); Assert.assertNotNull(reader); Assert.assertEquals("9fe77772b085e3533101d59d33a51f19", reader.getMd5()); Assert.assertEquals(15, reader.getSize()); try (final InputStream stream = reader.openStream()) { Assert.assertEquals(CharStreams.toString(new InputStreamReader(stream, StandardCharsets.UTF_8)), "Hello, world!!!"); } } finally { TestHelper.deleteDirectory(tempDir); } } @Test(dataProvider = "compressProvider") public void nometa(boolean compress) throws IOException { final File tempDir = TestHelper.createTempDir("git-as-svn"); try { LfsLocalStorage storage = new LfsLocalStorage(LfsLayout.GitLab, new File(tempDir, "data"), null, compress); // Check file is not exists Assert.assertNull(storage.getReader("sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308")); // Write new file try (final LfsWriter writer = storage.getWriter(null)) { writer.write("Hello, world!!!".getBytes(StandardCharsets.UTF_8)); Assert.assertEquals(writer.finish(null), "sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); } // Read old file. final LfsReader reader = storage.getReader("sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); Assert.assertNotNull(reader); Assert.assertNull(reader.getMd5()); Assert.assertEquals(15, reader.getSize()); try (final InputStream stream = reader.openStream()) { Assert.assertEquals(CharStreams.toString(new InputStreamReader(stream, StandardCharsets.UTF_8)), "Hello, world!!!"); } } finally { TestHelper.deleteDirectory(tempDir); } } @Test(dataProvider = "compressProvider") public void alreadyAdded(boolean compress) throws IOException { final File tempDir = TestHelper.createTempDir("git-as-svn"); try { LfsLocalStorage storage = new LfsLocalStorage(LfsLayout.TwoLevels, new File(tempDir, "data"), new File(tempDir, "meta"), compress); // Check file is not exists Assert.assertNull(storage.getReader("sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308")); // Write new file try (final LfsWriter writer = storage.getWriter(null)) { writer.write("Hello, world!!!".getBytes(StandardCharsets.UTF_8)); Assert.assertEquals(writer.finish(null), "sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); } // Write new file try (final LfsWriter writer = storage.getWriter(null)) { writer.write("Hello, world!!!".getBytes(StandardCharsets.UTF_8)); Assert.assertEquals(writer.finish(null), "sha256:61f27ddd5b4e533246eb76c45ed4bf4504daabce12589f97b3285e9d3cd54308"); } } finally { TestHelper.deleteDirectory(tempDir); } } }