(case_setup, pyfile, data_regression)
| 1923 | |
| 1924 | |
| 1925 | def 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" |
nothing calls this directly
no test coverage detected