diff --git a/collects/tests/xml/test.rkt b/collects/tests/xml/test.rkt index 0df3754318..cbf56eb0af 100644 --- a/collects/tests/xml/test.rkt +++ b/collects/tests/xml/test.rkt @@ -481,7 +481,10 @@ END [(define (test-xml->xexpr str xe) (test-equal? str (string->xexpr str) xe)) (define (test-xexpr->string xe str) - (test-equal? (format "~S" xe) (xexpr->string xe) str))] + (test-equal? (format "~S" xe) (xexpr->string xe) str) + (test-string->xexpr str xe)) + (define (test-string->xexpr str xe) + (test-equal? str (string->xexpr str) xe))] (test-suite "XML and X-expression Conversions" @@ -519,12 +522,20 @@ END ; XXX more xexpr->string tests ) + (test-suite + "string->xexpr" + (test-string->xexpr "\n\n\n" + '(html ())) + (parameterize ([xexpr-drop-empty-attributes #t]) + (test-string->xexpr "\n\n\n" + '(html)))) + (local [(define (test-eliminate-whitespace tags choose str res) (test-equal? (format "~S" (list tags choose str)) (with-output-to-string - (lambda () - (write-xml/content ((eliminate-whitespace tags choose) (read-xml/element (open-input-string str)))))) + (lambda () + (write-xml/content ((eliminate-whitespace tags choose) (read-xml/element (open-input-string str)))))) res)) (define (test-eliminate-whitespace/exn tags choose str msg) (test-exn (format "~S" (list tags choose str)) @@ -533,8 +544,8 @@ END (regexp-match (regexp-quote msg) (exn-message x)))) (lambda () (with-output-to-string - (lambda () - (write-xml/content ((eliminate-whitespace tags choose) (read-xml/element (open-input-string str))))))))) + (lambda () + (write-xml/content ((eliminate-whitespace tags choose) (read-xml/element (open-input-string str))))))))) (define (truer x) #t)] (test-suite "eliminate-whitespace" @@ -601,8 +612,8 @@ END (test-equal? (format "~S" (list v istr)) (parameterize ([param v]) (with-output-to-string - (lambda () - (write-xml (read-xml (open-input-string istr)))))) + (lambda () + (write-xml (read-xml (open-input-string istr)))))) ostr)) (define test-empty-tag-shorthand (mk-test-param empty-tag-shorthand)) (define test-collapse-whitespace (mk-test-param collapse-whitespace)) @@ -715,8 +726,8 @@ END (test-equal? "write-plist" (with-output-to-string - (lambda () - (write-plist example (current-output-port)))) + (lambda () + (write-plist example (current-output-port)))) example-str) (local [(define (test-plist-round-trip plist) diff --git a/collects/xml/private/xexpr.rkt b/collects/xml/private/xexpr.rkt index 03b84eb710..ef7a65815f 100644 --- a/collects/xml/private/xexpr.rkt +++ b/collects/xml/private/xexpr.rkt @@ -233,7 +233,7 @@ (get-output-string port))) (define (string->xexpr str) - (xml->xexpr (read-xml/element (open-input-string str)))) + (xml->xexpr (document-element (read-xml (open-input-string str))))) ;; bcompose : (a a -> c) (b -> a) -> (b b -> c) (define (bcompose f g)