diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml
index 805d411..dda7306 100644
--- a/.github/workflows/workflow.yml
+++ b/.github/workflows/workflow.yml
@@ -1,8 +1,7 @@
 name: Main workflow
 on: [push, pull_request]
 jobs:
-  run:
-    name: Run
+  build:
     runs-on: ${{ matrix.operating-system }}
     strategy:
       matrix:
@@ -10,48 +9,77 @@ jobs:
     steps:
     - name: Checkout
       uses: actions/checkout@v2
-
-    - name: Setup Node.js 12.x
+    - name: Setup Node.js 12
       uses: actions/setup-node@v1
       with:
         node-version: 12.x
-
     - name: npm install
       run: npm install
-
     - name: Lint
       run: npm run format-check
-
     - name: npm test
       run: npm test
-  run-with-proxy:
-    name: Run with proxy
-    runs-on: ubuntu-latest
-    services:
-      squid:
-        image: dakale/squid
-        ports: ['3128:3128']
-        options: '--health-cmd "exit 0" --health-interval 3s'
-    env:
-      http_proxy: http://localhost:3128
-      https_proxy: http://localhost:3128
+
+  test:
+    runs-on: ${{ matrix.operating-system }}
+    strategy:
+      matrix:
+        operating-system: [ubuntu-latest, windows-latest]
     steps:
-    - name: Block non proxied traffic
-      run: |
-        echo "127.0.0.0 registry.npm.js nodejs.org github.com api.github.com download.java.net static.azul.com" | sudo tee -a /etc/hosts
     - name: Checkout
       uses: actions/checkout@v2
-
-    - name: Setup Node.js 12.x
-      uses: actions/setup-node@v1
+    - name: Clear tool cache
+      if: runner.os != 'windows'
+      run: mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old"
+    - name: Clear tool cache (Windows)
+      if: runner.os == 'windows'
+      run: move "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old"
+    - name: Setup Java 13
+      uses: ./
       with:
-        node-version: 12.x
+        java-version: 13.0.2
+    - name: Verify Java 13
+      if: runner.os != 'windows'
+      run: __tests__/verify-java.sh 13.0.2
+    - name: Verify Java 13 (Windows)
+      if: runner.os == 'windows'
+      run: __tests__/verify-java.ps1 13.0.2
 
-    - name: npm install
-      run: npm install
+  test-proxy:
+    runs-on: ubuntu-latest
+    container:
+      image: ubuntu:latest
+      options: --dns 127.0.0.1
+    services:
+      squid-proxy:
+        image: datadog/squid:latest
+        ports:
+          - 3128:3128
+    env:
+      https_proxy: http://squid-proxy:3128
+    steps:
+    - uses: actions/checkout@v2
+    - name: Clear tool cache
+      run: rm -rf $RUNNER_TOOL_CACHE/*
+    - name: Setup Java 13
+      uses: ./
+      with:
+        java-version: 13.0.2
+    - name: Verify Java 13
+      run: __tests__/verify-java.sh 13.0.2
 
-    - name: Lint
-      run: npm run format-check
-
-    - name: npm test
-      run: npm test
+  test-bypass-proxy:
+    runs-on: ubuntu-latest
+    env:
+      https_proxy: http://no-such-proxy:3128
+      no_proxy: github.com,static.azul.com
+    steps:
+    - uses: actions/checkout@v2
+    - name: Clear tool cache
+      run: rm -rf $RUNNER_TOOL_CACHE/*
+    - name: Setup Java 13
+      uses: ./
+      with:
+        java-version: 13.0.2
+    - name: Verify Java 13
+      run: __tests__/verify-java.sh 13.0.2
diff --git a/__tests__/verify-java.ps1 b/__tests__/verify-java.ps1
new file mode 100644
index 0000000..9f675c8
--- /dev/null
+++ b/__tests__/verify-java.ps1
@@ -0,0 +1,11 @@
+if (!$args.Count -or !$args[0])
+{
+  throw "Must supply java version argument"
+}
+
+$java_version = & cmd.exe /c "java -version 2>&1" | Out-String
+Write-Host "Found java version: $java_version"
+if (!$java_version.Contains($args[0]))
+{
+  throw "Unexpected version"
+}
diff --git a/__tests__/verify-java.sh b/__tests__/verify-java.sh
new file mode 100755
index 0000000..f34aba5
--- /dev/null
+++ b/__tests__/verify-java.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+if [ -z "$1" ]; then
+  echo "Must supply java version argument"
+  exit 1
+fi
+
+java_version="$(java -version 2>&1)"
+echo "Found java version: $java_version"
+if [ -z "$(echo $java_version | grep --fixed-strings $1)" ]; then
+  echo "Unexpected version"
+  exit 1
+fi