diff --git a/spec/tests/test-hyperscript-behavioral.sx b/spec/tests/test-hyperscript-behavioral.sx
index 555e4a31..44041288 100644
--- a/spec/tests/test-hyperscript-behavioral.sx
+++ b/spec/tests/test-hyperscript-behavioral.sx
@@ -2467,13 +2467,28 @@
;; ── core/sourceInfo (4 tests) ──
(defsuite "hs-upstream-core/sourceInfo"
(deftest "debug"
- (error "SKIP (untranslated): debug"))
+ (assert= (hs-src "") ""))
(deftest "get line works for statements"
- (error "SKIP (untranslated): get line works for statements"))
+ (assert= (hs-line-at "if true\n log 'it was true'\n log 'it was true'" (list)) "if true")
+ (assert= (hs-line-at "if true\n log 'it was true'\n log 'it was true'" (list :true-branch)) " log 'it was true'")
+ (assert= (hs-line-at "if true\n log 'it was true'\n log 'it was true'" (list :true-branch :next)) " log 'it was true'"))
(deftest "get source works for expressions"
- (error "SKIP (untranslated): get source works for expressions"))
+ (assert= (hs-src "1") "1")
+ (assert= (hs-src "a.b") "a.b")
+ (assert= (hs-src-at "a.b" (list :root)) "a")
+ (assert= (hs-src "a.b()") "a.b()")
+ (assert= (hs-src-at "a.b()" (list :root)) "a.b")
+ (assert= (hs-src-at "a.b()" (list :root :root)) "a")
+ (assert= (hs-src "") "")
+ (assert= (hs-src "x + y") "x + y")
+ (assert= (hs-src-at "x + y" (list :lhs)) "x")
+ (assert= (hs-src-at "x + y" (list :rhs)) "y")
+ (assert= (hs-src "'foo'") "'foo'")
+ (assert= (hs-src ".foo") ".foo")
+ (assert= (hs-src "#bar") "#bar"))
(deftest "get source works for statements"
- (error "SKIP (untranslated): get source works for statements"))
+ (assert= (hs-src "if true log 'it was true'") "if true log 'it was true'")
+ (assert= (hs-src "for x in [1, 2, 3] log x then log x end") "for x in [1, 2, 3] log x then log x end"))
)
;; ── core/tokenizer (17 tests) ──
diff --git a/tests/playwright/generate-sx-tests.py b/tests/playwright/generate-sx-tests.py
index 73c4aa5c..9dfc494b 100644
--- a/tests/playwright/generate-sx-tests.py
+++ b/tests/playwright/generate-sx-tests.py
@@ -2015,6 +2015,47 @@ def generate_eval_only_test(test, idx):
f' )'
)
+ # Special case: cluster-38 sourceInfo tests.
+ if test['name'] == 'debug':
+ return (
+ f' (deftest "{safe_name}"\n'
+ f' (assert= (hs-src "") ""))'
+ )
+
+ if test['name'] == 'get source works for expressions':
+ return (
+ f' (deftest "{safe_name}"\n'
+ f' (assert= (hs-src "1") "1")\n'
+ f' (assert= (hs-src "a.b") "a.b")\n'
+ f' (assert= (hs-src-at "a.b" (list :root)) "a")\n'
+ f' (assert= (hs-src "a.b()") "a.b()")\n'
+ f' (assert= (hs-src-at "a.b()" (list :root)) "a.b")\n'
+ f' (assert= (hs-src-at "a.b()" (list :root :root)) "a")\n'
+ f' (assert= (hs-src "") "")\n'
+ f' (assert= (hs-src "x + y") "x + y")\n'
+ f' (assert= (hs-src-at "x + y" (list :lhs)) "x")\n'
+ f' (assert= (hs-src-at "x + y" (list :rhs)) "y")\n'
+ f" (assert= (hs-src \"'foo'\") \"'foo'\")\n"
+ f' (assert= (hs-src ".foo") ".foo")\n'
+ f' (assert= (hs-src "#bar") "#bar"))'
+ )
+
+ if test['name'] == 'get source works for statements':
+ return (
+ f' (deftest "{safe_name}"\n'
+ f" (assert= (hs-src \"if true log 'it was true'\") \"if true log 'it was true'\")\n"
+ f' (assert= (hs-src "for x in [1, 2, 3] log x then log x end") "for x in [1, 2, 3] log x then log x end"))'
+ )
+
+ if test['name'] == 'get line works for statements':
+ src = "if true\\n log 'it was true'\\n log 'it was true'"
+ return (
+ f' (deftest "{safe_name}"\n'
+ f' (assert= (hs-line-at "{src}" (list)) "if true")\n'
+ f" (assert= (hs-line-at \"{src}\" (list :true-branch)) \" log 'it was true'\")\n"
+ f" (assert= (hs-line-at \"{src}\" (list :true-branch :next)) \" log 'it was true'\"))"
+ )
+
lines.append(f' (deftest "{safe_name}"')
assertions = []