Skip to content

Commit 62b9775

Browse files
authored
Merge pull request #14 from martinschaef/windows
Adding support for Windows file system names and running on push on any branch
2 parents 551299b + b9fd66e commit 62b9775

File tree

5 files changed

+54
-14
lines changed

5 files changed

+54
-14
lines changed
Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11

22
name: Build with different JDKs
33

4-
on:
5-
push:
6-
branches:
7-
- main
4+
on: push
85

96
permissions:
107
id-token: write
118
contents: write
129

1310
jobs:
1411
build:
15-
runs-on: ubuntu-latest
12+
runs-on: ${{ matrix.os }}
1613
strategy:
1714
matrix:
1815
java: [ '8', '11', '16', '17' ]
19-
name: Java ${{ matrix.Java }} build
16+
os: [ubuntu-latest, windows-latest]
17+
name: Java ${{ matrix.Java }} build on ${{ matrix.os }}
2018

2119
steps:
2220
- uses: actions/checkout@v2
@@ -26,7 +24,7 @@ jobs:
2624
distribution: 'temurin'
2725
java-version: ${{ matrix.java }}
2826
- name: Build project
29-
run: ./gradlew clean installDist
27+
run: ./gradlew clean test installDist --info
3028
- name: Run cli
3129
run: ./build/install/aws-codeguru-cli/bin/aws-codeguru-cli
3230

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ repositories {
4444

4545
defaultTasks('installDist')
4646

47-
version = '0.0.3'
47+
version = '0.0.4'
4848
jar.archiveName = "${jar.baseName}.${jar.extension}"
4949
distZip.archiveName = "${jar.baseName}.zip"
5050

src/main/java/com/amazonaws/gurureviewercli/util/ZipUtils.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public static void pack(final List<Path> sourceDirPaths, final String zipFilePat
3636
try (val walk = Files.walk(pp)) {
3737
walk.filter(path -> !Files.isDirectory(path))
3838
.forEach(path -> {
39-
val normalizedPath = path.normalize().toAbsolutePath();
40-
val relpath = pp.relativize(normalizedPath).toString();
41-
ZipEntry zipEntry = new ZipEntry(relpath);
39+
val relativePath = pp.relativize(path.normalize().toAbsolutePath());
40+
// in case we run on Windows
41+
ZipEntry zipEntry = new ZipEntry(getUnixStylePathName(relativePath));
4242
try {
4343
zs.putNextEntry(zipEntry);
4444
zs.write(Files.readAllBytes(path));
@@ -93,8 +93,9 @@ public static void packFiles(final Collection<Path> files,
9393
Path zipFile = Files.createFile(zipFilePath);
9494
try (ZipOutputStream zs = new ZipOutputStream(Files.newOutputStream(zipFile))) {
9595
for (val file : normalizedFiles) {
96-
val relPath = normalizedRoot.relativize(file).normalize().toString();
97-
ZipEntry zipEntry = new ZipEntry(relPath);
96+
val relPath = normalizedRoot.relativize(file);
97+
// replace Windows file separators
98+
ZipEntry zipEntry = new ZipEntry(getUnixStylePathName(relPath));
9899
try {
99100
zs.putNextEntry(zipEntry);
100101
zs.write(Files.readAllBytes(file));
@@ -138,6 +139,10 @@ public static List<Path> getFilesInDirectory(final Path directory) throws IOExce
138139
}
139140
}
140141

142+
private static String getUnixStylePathName(final Path path) {
143+
return path.normalize().toString().replace('\\', '/' );
144+
}
145+
141146
/**
142147
* private construct.
143148
*/

src/test/java/com/amazonaws/gurureviewercli/adapter/ArtifactAdapterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public void test_zipAndUpload_happyCaseAllFiles() throws Exception {
141141
count++; // count the files that are not in the git folder.
142142
}
143143
}
144-
Assertions.assertEquals(2, count, "Unexpected number of files in zip.");
144+
Assertions.assertEquals(2, count, "Unexpected number of files in zip: " + count);
145145
}
146146
return null;
147147
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.amazonaws.gurureviewercli.util;
2+
3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Paths;
6+
import java.util.Arrays;
7+
import java.util.Enumeration;
8+
import java.util.HashSet;
9+
import java.util.zip.ZipEntry;
10+
import java.util.zip.ZipFile;
11+
12+
import lombok.val;
13+
import org.junit.jupiter.api.Assertions;
14+
import org.junit.jupiter.api.Test;
15+
16+
public class ZipUtilsTest {
17+
18+
@Test
19+
public void test_packUnpack() throws IOException {
20+
val testDir = Paths.get("test-data/fake-repo");
21+
val zipName = Files.createTempDirectory("zip-files").resolve("test.zip").toString();
22+
ZipUtils.pack(Arrays.asList(testDir), testDir, zipName);
23+
ZipFile zipFile = new ZipFile(zipName);
24+
Enumeration<? extends ZipEntry> entries = zipFile.entries();
25+
val expectedFileNames =
26+
new HashSet<String>(Arrays.asList("build-dir/should-not-be-included.txt",
27+
"build-dir/lib/included.txt",
28+
"should-not-be-included.txt"));
29+
while (entries.hasMoreElements()) {
30+
ZipEntry entry = entries.nextElement();
31+
Assertions.assertFalse(entry.toString().contains("\\"), "Unexpected zip entry " + entry);
32+
Assertions.assertTrue(expectedFileNames.contains(entry.toString()));
33+
expectedFileNames.remove(entry.toString());
34+
}
35+
Assertions.assertTrue(expectedFileNames.isEmpty());
36+
}
37+
}

0 commit comments

Comments
 (0)