          (temp-dir (if-let ((dir (car (alist-get :user-dir keywords))))
                        (expand-file-name dir temporary-file-directory)
                      (make-temp-file "straight.el-test-" 'directory)))
+         (executable (or (car (alist-get :executable keywords))
+                         (concat invocation-directory invocation-name)))
          ;; Construct metaprogram to be evaled by subprocess
          ;; Convert the keywords and their args into a proper plist.
          (pargs (let ((plist '()))

                           (alist-get :post-bootstrap keywords)))))
    `(let* ((,preserve-files    ,(car (alist-get :preserve keywords)))
            (,interactive       ,(car (alist-get :interactive keywords)))
            (,emacs-executable  ,(or (car (alist-get :executable keywords))
                                     "emacs"))
            (,emacs-args-symbol (append (unless ,interactive '("--batch"))
                                        ',straight-bug-report--default-args))
            (,raw               ,(car (alist-get :raw keywords)))

                                                                 (cdr pair))
                                                       (cadr pair))))))
                  ;; Add full path of user-dir.
                  (setq plist (plist-put plist :executable executable))
                  (setq plist (plist-put plist :user-dir temp-dir))))
         (program (pp-to-string
                   ;; The top-level `let' is an intentional local
