Skip to content

Commit fb388ba

Browse files
committed
Expand StudentFileAwareZipper test coverage
1 parent 1b2b5d2 commit fb388ba

File tree

7 files changed

+51
-1
lines changed

7 files changed

+51
-1
lines changed

tmc-langs-framework/src/test/java/fi/helsinki/cs/tmc/langs/io/zip/StudentFileAwareZipperTest.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static org.junit.Assert.fail;
66

77
import fi.helsinki.cs.tmc.langs.io.EverythingIsStudentFileStudentFilePolicy;
8+
import fi.helsinki.cs.tmc.langs.io.StudentFilePolicy;
89
import fi.helsinki.cs.tmc.langs.utils.TestUtils;
910

1011
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
@@ -20,6 +21,7 @@
2021
import java.nio.file.FileVisitor;
2122
import java.nio.file.Files;
2223
import java.nio.file.Path;
24+
import java.nio.file.Paths;
2325
import java.nio.file.attribute.BasicFileAttributes;
2426
import java.util.Enumeration;
2527
import java.util.HashMap;
@@ -77,10 +79,16 @@ public FileVisitResult postVisitDirectory(Path path, IOException ex)
7779
}
7880

7981
@Test(expected = FileNotFoundException.class)
80-
public void zipperThrowsExceptionWhenUnzippingNonExistentFile() throws IOException {
82+
public void zipperThrowsExceptionWhenZippingNonExistentFile() throws IOException {
8183
zipper.zip(TEST_ASSETS_DIR.resolve("noSuchDir"));
8284
}
8385

86+
@Test(expected = IllegalArgumentException.class)
87+
public void zipperThrowsExceptionWhenZippingRoot() throws IOException {
88+
// platform-specific root
89+
zipper.zip(Paths.get("/").toAbsolutePath());
90+
}
91+
8492
@Test
8593
public void zipperCorrectlyZipsSingleFile() throws IOException {
8694

@@ -137,7 +145,43 @@ public void zipperDetectectsAndObeysTmcnosubmitFiles() throws IOException {
137145
expected.close();
138146
actual.close();
139147
Files.deleteIfExists(compressed);
148+
}
149+
150+
@Test
151+
public void zipperFollowsStudentPolicy() throws IOException {
152+
Path uncompressed = TestUtils.getPath(StudentFileAwareUnzipperTest.class,
153+
"zip_studentpolicy_test_case");
154+
155+
// Policy: zip every directory and file whose name starts with "include"
156+
zipper.setStudentFilePolicy(new StudentFilePolicy() {
157+
@Override
158+
public boolean isStudentFile(Path path, Path projectRootPath) {
159+
if (path.equals(projectRootPath)) {
160+
return true;
161+
}
162+
return path.getFileName().toString().startsWith("include");
163+
}
164+
165+
@Override
166+
public boolean mayDelete(Path file, Path projectRoot) {
167+
return true;
168+
}
169+
});
140170

171+
byte[] zip = zipper.zip(uncompressed);
172+
Path compressed = Files.createTempFile("testZip", ".zip");
173+
Files.write(compressed, zip);
174+
175+
Path referenceZip = TEST_ASSETS_DIR.resolve("zip_studentpolicy_test_case.zip");
176+
177+
ZipFile expected = new ZipFile(referenceZip.toFile());
178+
ZipFile actual = new ZipFile(compressed.toFile());
179+
180+
assertZipsEqualDecompressed(expected, actual);
181+
182+
expected.close();
183+
actual.close();
184+
Files.deleteIfExists(compressed);
141185
}
142186

143187
private void assertZipsEqualDecompressed(ZipFile expected, ZipFile actual)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
liirum laarum
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec venenatis ac ante id egestas. Praesent at enim id lorem egestas iaculis eu pharetra dolor. Nullam ullamcorper laoreet massa, sit amet sodales ex pharetra vitae. Aliquam id vehicula nunc, bibendum mattis orci. Nunc fringilla sem enim, a suscipit justo convallis id. Etiam maximus urna lorem, ac maximus nulla sagittis nec. Curabitur nec mauris finibus, fringilla mauris eu, elementum neque. Sed et sem tellus. Suspendisse eget ipsum vel odio mattis venenatis. Morbi egestas elementum felis eu aliquet.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Suspendisse tincidunt vehicula sem. Cras sit amet enim nec arcu euismod tincidunt nec sed eros. Curabitur tempor enim sit amet accumsan dictum. Fusce tempus lorem eget odio imperdiet fringilla. Proin lobortis consequat finibus. Praesent in nunc metus. Fusce hendrerit lacus id orci vulputate, vitae consequat velit tempor. Sed iaculis ac eros id sollicitudin. Proin vitae feugiat justo. Nunc ac diam aliquet, lacinia nibh eget, commodo nibh. Mauris ipsum leo, finibus non risus non, egestas semper nulla. Sed sit amet maximus tortor, a rhoncus neque. Morbi eu venenatis eros. Etiam imperdiet viverra vestibulum. Mauris tristique rhoncus ante et porta. Etiam consequat a orci eu scelerisque.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
In iaculis quam eu accumsan condimentum. Proin molestie lectus magna, ac rutrum ex elementum eget. Duis tincidunt ante ex. Suspendisse aliquam venenatis aliquam. Nullam viverra consequat tincidunt. Praesent ut odio ac arcu consequat hendrerit. Proin rutrum sapien convallis accumsan pharetra.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Lorem;Ipsum
2+
Yes;No

0 commit comments

Comments
 (0)