MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / test_case_variable_access

Function test_case_variable_access

tests_python/test_debugger.py:1925–2013  ·  view source on GitHub ↗
(case_setup, pyfile, data_regression)

Source from the content-addressed store, hash-verified

1923
1924
1925def test_case_variable_access(case_setup, pyfile, data_regression):
1926 @pyfile
1927 def case_custom():
1928 obj = [
1929 tuple(range(9)),
1930 [
1931 tuple(range(5)),
1932 ],
1933 ]
1934
1935 print("TEST SUCEEDED")
1936
1937 with case_setup.test_file(case_custom) as writer:
1938 line = writer.get_line_index_with_content("TEST SUCEEDED")
1939 writer.write_add_breakpoint(line)
1940 writer.write_make_initial_run()
1941
1942 hit = writer.wait_for_breakpoint_hit("111")
1943 writer.write_get_frame(hit.thread_id, hit.frame_id)
1944
1945 frame_vars = writer.wait_for_untangled_message(accept_message=lambda cmd_id, untangled: cmd_id == CMD_GET_FRAME)
1946
1947 obj_var = [v for v in frame_vars.var if v["name"] == "obj"][0]
1948 assert obj_var["type"] == "list"
1949 assert unquote_plus(obj_var["value"]) == "<class 'list'>: [(0, 1, 2, 3, 4, 5, 6, 7, 8), [(0, 1, 2, 3, 4)]]"
1950 assert obj_var["isContainer"] == "True"
1951
1952 def _skip_key_in_dict(key):
1953 try:
1954 int(key)
1955 except ValueError:
1956 if "more" in key or "[" in key:
1957 return False
1958 return True
1959 return False
1960
1961 def collect_vars(locator, level=0):
1962 writer.write("%s\t%s\t%s\t%s" % (CMD_GET_VARIABLE, writer.next_seq(), hit.thread_id, locator))
1963 obj_vars = writer.wait_for_untangled_message(accept_message=lambda cmd_id, _untangled: cmd_id == CMD_GET_VARIABLE)
1964
1965 for v in obj_vars.var:
1966 if _skip_key_in_dict(v["name"]):
1967 continue
1968 new_locator = locator + "\t" + v["name"]
1969 yield level, v, new_locator
1970 if v["isContainer"] == "True":
1971 yield from collect_vars(new_locator, level + 1)
1972
1973 found = []
1974 for level, val, _locator in collect_vars("%s\tFRAME\tobj" % hit.frame_id):
1975 found.append(((" " * level) + val["name"] + ": " + unquote_plus(val["value"])))
1976
1977 data_regression.check(found)
1978
1979 # Check referrers
1980 full_loc = "%s\t%s\t%s" % (hit.thread_id, hit.frame_id, "FRAME\tobj\t1\t0")
1981 writer.write_custom_operation(
1982 full_loc, "EXEC", "from _pydevd_bundle.pydevd_referrers import get_referrer_info", "get_referrer_info"

Callers

nothing calls this directly

Calls 12

collect_varsFunction · 0.85
test_fileMethod · 0.80
write_add_breakpointMethod · 0.80
write_get_frameMethod · 0.80
write_run_threadMethod · 0.80
appendMethod · 0.45
checkMethod · 0.45

Tested by

no test coverage detected