diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh
index 2b071186cf58751aed1af6d963bf1d213da5dba7..6add2b5ae434071ee42237c05f3b94cd973c7be1 100755
--- a/.gitlab/ci.sh
+++ b/.gitlab/ci.sh
@@ -364,14 +364,23 @@ function build_hadrian() {
 
 function test_hadrian() {
   cd _build/bindist/ghc-*/
-  run ./configure --prefix="$TOP"/_build/install
-  run "$MAKE" install
+  case "$(uname)" in
+    MSYS_*|MINGW*)
+      mkdir -p "$TOP"/_build/install
+      cp -a * "$TOP"/_build/install
+      ;;
+    *)
+      run ./configure --prefix="$TOP"/_build/install
+      run "$MAKE" install
+      ;;
+  esac
   cd ../../../
 
   run_hadrian \
     test \
     --summary-junit=./junit.xml \
-    --test-compiler="$TOP"/_build/install/bin/ghc
+    --test-compiler="$TOP/_build/install/bin/ghc$exe" \
+    "runtest.opts+=${RUNTEST_ARGS:-}"
 }
 
 function clean() {