|
17 | 17 | package com.madgag.git |
18 | 18 |
|
19 | 19 | import net.lingala.zip4j.ZipFile |
20 | | - |
21 | | -import java.io.File |
22 | | -import java.io.File.separatorChar |
23 | | -import java.net.URL |
24 | 20 | import org.eclipse.jgit.internal.storage.file.FileRepository |
25 | 21 | import org.eclipse.jgit.storage.file.FileRepositoryBuilder |
26 | 22 |
|
27 | | -import java.nio.file.Files.createTempDirectory |
| 23 | +import java.io.File |
| 24 | +import java.net.URL |
| 25 | +import java.nio.file.{Files, Path} |
28 | 26 |
|
29 | 27 | package object test { |
30 | | - def unpackRepo(fileName: String): FileRepository = { |
31 | | - val resolvedGitDir = unpackRepoAndGetGitDir(fileName) |
32 | | - require(resolvedGitDir.exists) |
33 | | - FileRepositoryBuilder.create(resolvedGitDir).asInstanceOf[FileRepository] |
34 | | - } |
| 28 | + def unpackRepo(zippedRepoResource: String): FileRepository = unpackRepo(pathForResource(zippedRepoResource)) |
| 29 | + |
| 30 | + def unpackRepo(zippedRepo: Path): FileRepository = fileRepoFor(unpackRepoAndGetGitDir(zippedRepo)) |
35 | 31 |
|
36 | | - def unpackRepoAndGetGitDir(fileName: String): File = { |
37 | | - val resource: URL = getClass.getResource(fileName) |
| 32 | + def pathForResource(fileName: String, clazz: Class[_] = getClass): Path = { |
| 33 | + val resource: URL = clazz.getResource(fileName) |
38 | 34 | assert(resource != null, s"Resource for $fileName is null.") |
| 35 | + new File(resource.toURI).toPath |
| 36 | + } |
39 | 37 |
|
40 | | - val file = new File(resource.toURI) |
41 | | - assert(file.exists(), s"File $file does not exist.") |
| 38 | + private def unpackRepoAndGetGitDir(zippedRepo: Path): File = { |
| 39 | + assert(Files.exists(zippedRepo), s"File $zippedRepo does not exist.") |
42 | 40 |
|
43 | | - val repoParentFolder = new File(createTempDirectory("test").toFile, fileName.replace(separatorChar, '_') + "-unpacked") |
44 | | - repoParentFolder.mkdir() |
| 41 | + val repoParentFolder = Files.createTempDirectory(s"test-${zippedRepo.getFileName}-unpacked").toFile |
45 | 42 |
|
46 | | - new ZipFile(file.getAbsolutePath).extractAll(repoParentFolder.getAbsolutePath) |
| 43 | + new ZipFile(zippedRepo.toFile.getAbsolutePath).extractAll(repoParentFolder.getAbsolutePath) |
47 | 44 |
|
48 | 45 | repoParentFolder |
49 | 46 | } |
| 47 | + |
| 48 | + private def fileRepoFor(resolvedGitDir: File): FileRepository = { |
| 49 | + require(resolvedGitDir.exists) |
| 50 | + FileRepositoryBuilder.create(resolvedGitDir).asInstanceOf[FileRepository] |
| 51 | + } |
50 | 52 | } |
0 commit comments