tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test.py (2152B)


      1 # flake8: noqa: F821
      2 import re
      3 
      4 test.compile("source.cpp")
      5 test.computeGCTypes()
      6 body = test.process_body(test.load_db_entry("src_body", re.compile(r"root_arg"))[0])
      7 
      8 # Rendering positive and negative integers
      9 marker1 = body.assignment_line("MARKER1")
     10 equal(body.edge_from_line(marker1 + 2)["Exp"][1]["String"], "1")
     11 equal(body.edge_from_line(marker1 + 3)["Exp"][1]["String"], "-1")
     12 
     13 equal(body.edge_from_point(body.assignment_point("u1"))["Exp"][1]["String"], "1")
     14 equal(
     15    body.edge_from_point(body.assignment_point("u2"))["Exp"][1]["String"], "4294967295"
     16 )
     17 
     18 assert "obj" in body["Variables"]
     19 assert "random" in body["Variables"]
     20 assert "other1" in body["Variables"]
     21 assert "other2" in body["Variables"]
     22 
     23 # Test function annotations
     24 js_GC = test.process_body(test.load_db_entry("src_body", re.compile(r"js_GC"))[0])
     25 annotations = js_GC["Variables"]["void js_GC()"]["Annotation"]
     26 assert annotations
     27 found_call_annotate = False
     28 for annotation in annotations:
     29    (annType, value) = annotation["Name"]
     30    if annType == "annotate" and value == "GC Call":
     31        found_call_annotate = True
     32 assert found_call_annotate
     33 
     34 # Test type annotations
     35 
     36 # js::gc::Cell first
     37 cell = test.load_db_entry("src_comp", "js::gc::Cell")[0]
     38 assert cell["Kind"] == "Struct"
     39 annotations = cell["Annotation"]
     40 assert len(annotations) == 1
     41 (tag, value) = annotations[0]["Name"]
     42 assert tag == "annotate"
     43 assert value == "GC Thing"
     44 
     45 # Check JSObject inheritance.
     46 JSObject = test.load_db_entry("src_comp", "JSObject")[0]
     47 bases = [b["Base"] for b in JSObject["CSUBaseClass"]]
     48 assert "js::gc::Cell" in bases
     49 assert "Bogon" in bases
     50 assert len(bases) == 2
     51 
     52 # Check type analysis
     53 gctypes = test.load_gcTypes()
     54 assert "js::gc::Cell" in gctypes["GCThings"]
     55 assert "JustACell" in gctypes["GCThings"]
     56 assert "JSObject" in gctypes["GCThings"]
     57 assert "SpecialObject" in gctypes["GCThings"]
     58 assert "UnrootedPointer" in gctypes["GCPointers"]
     59 assert "Bogon" not in gctypes["GCThings"]
     60 assert "Bogon" not in gctypes["GCPointers"]
     61 assert "ErrorResult" not in gctypes["GCPointers"]
     62 assert "OkContainer" not in gctypes["GCPointers"]
     63 assert "class Rooted<JSObject*>" not in gctypes["GCPointers"]