From b8000c08c0378525bad674bb9ea5c274ba3f8ee1 Mon Sep 17 00:00:00 2001 From: Bogdan Popa Date: Mon, 30 Nov 2020 14:49:31 +0200 Subject: [PATCH] start command: fix default value for port Defaulting the port to "8080" at the `command-line' level breaks customization via `pollen.rkt'. --- pollen/private/command.rkt | 4 +-- pollen/test/data/project-port/hello.txt.pp | 3 ++ pollen/test/data/project-port/pollen.rkt | 6 ++++ pollen/test/test-project-port.rkt | 36 ++++++++++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 pollen/test/data/project-port/hello.txt.pp create mode 100644 pollen/test/data/project-port/pollen.rkt create mode 100644 pollen/test/test-project-port.rkt diff --git a/pollen/private/command.rkt b/pollen/private/command.rkt index 2cb1db9..21cea0e 100644 --- a/pollen/private/command.rkt +++ b/pollen/private/command.rkt @@ -182,13 +182,13 @@ version print the version" (current-server-port) (make-publish-di #:once-each [("--launch" "-l") "Launch browser after start" (set! launch-wanted #t)] [("--local") "Restrict access to localhost" (set! localhost-wanted #t)] - #:args ([dir (current-directory)] [port "8080"]) + #:args ([dir (current-directory)] [port #f]) (define parsed-dir (path->directory-path (normalize-path (very-nice-path dir)))) (unless (directory-exists? parsed-dir) (error (format "~a is not a directory" parsed-dir))) - (define parsed-port (string->number port)) + (define parsed-port (and port (string->number port))) (when (and parsed-port (not (exact-positive-integer? parsed-port))) (error (format "~a is not a valid port number" parsed-port))) (values parsed-dir parsed-port))) diff --git a/pollen/test/data/project-port/hello.txt.pp b/pollen/test/data/project-port/hello.txt.pp new file mode 100644 index 0000000..e33f50f --- /dev/null +++ b/pollen/test/data/project-port/hello.txt.pp @@ -0,0 +1,3 @@ +#lang pollen + +Hello! diff --git a/pollen/test/data/project-port/pollen.rkt b/pollen/test/data/project-port/pollen.rkt new file mode 100644 index 0000000..20cb202 --- /dev/null +++ b/pollen/test/data/project-port/pollen.rkt @@ -0,0 +1,6 @@ +#lang racket/base + +(module setup racket/base + (provide (all-defined-out)) + (define project-server-port + 9876)) diff --git a/pollen/test/test-project-port.rkt b/pollen/test/test-project-port.rkt new file mode 100644 index 0000000..83be40b --- /dev/null +++ b/pollen/test/test-project-port.rkt @@ -0,0 +1,36 @@ +#lang racket/base + +(require rackunit + racket/port + racket/runtime-path) + +(define-runtime-path project-port-dir "data/project-port") + +(define thd #f) +(define-values (in out) (make-pipe)) +(parameterize ([exit-handler (lambda (code) + (fail (format "abnormal exit from raco command~n code: ~a" code)) + (kill-thread thd))]) + (set! thd + (parameterize ([current-output-port out] + [current-error-port out] + [current-directory project-port-dir] + [current-command-line-arguments (vector "start")]) + (thread + (lambda () + (dynamic-require '(submod pollen/private/command raco) #f))))) + + (dynamic-wind + void + (lambda () + (sync + (handle-evt + (regexp-match-evt #rx"project server is http://localhost:9876" in) + void) + (handle-evt + (alarm-evt (+ (current-inexact-milliseconds) 5000)) + (lambda (_) + (fail "timed out while waiting for server to start"))))) + (lambda () + (break-thread thd) + (thread-wait thd))))