Skip to content

Commit

Permalink
fixed bug for exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
smythi93 committed Jul 24, 2023
1 parent 1a0d8ae commit 1030be2
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 62 deletions.
123 changes: 67 additions & 56 deletions Demo.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@
" src=\"https://www.youtube-nocookie.com/embed/qcnmi6PgrKg\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" \n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.IFrame at 0x10405ffd0>"
"<IPython.lib.display.IFrame at 0x112d27250>"
]
},
"execution_count": 1,
Expand Down Expand Up @@ -91,20 +92,36 @@
"output_type": "stream",
"text": [
"Processing /Users/marius/Desktop/work/projects/sflkit\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hRequirement already satisfied: astor in /Users/marius/.pyenv/versions/3.10.4/lib/python3.10/site-packages (from sflkit==0.0.1) (0.8.1)\n",
"Requirement already satisfied: numpy in /Users/marius/.pyenv/versions/3.10.4/lib/python3.10/site-packages (from sflkit==0.0.1) (1.21.4)\n",
" Installing build dependencies ... \u001b[?25ldone\n",
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
"\u001b[?25hRequirement already satisfied: sflkitlib>=0.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.0.1)\n",
"Requirement already satisfied: astor>=0.8.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.8.1)\n",
"Requirement already satisfied: numpy==1.25.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (1.25.1)\n",
"Requirement already satisfied: matplotlib==3.7.2 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (3.7.2)\n",
"Requirement already satisfied: sortedcollections>=2.1.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (2.1.0)\n",
"Requirement already satisfied: parameterized>=0.8.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sflkit==0.2.6) (0.9.0)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (1.1.0)\n",
"Requirement already satisfied: cycler>=0.10 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (4.40.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (1.4.4)\n",
"Requirement already satisfied: packaging>=20.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (23.1)\n",
"Requirement already satisfied: pillow>=6.2.0 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (9.5.0)\n",
"Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (2.4.7)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from matplotlib==3.7.2->sflkit==0.2.6) (2.8.2)\n",
"Requirement already satisfied: sortedcontainers in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from sortedcollections>=2.1.0->sflkit==0.2.6) (2.4.0)\n",
"Requirement already satisfied: six>=1.5 in /Users/marius/.pyenv/versions/3.11.1/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib==3.7.2->sflkit==0.2.6) (1.16.0)\n",
"Building wheels for collected packages: sflkit\n",
" Building wheel for sflkit (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for sflkit: filename=sflkit-0.0.1-py3-none-any.whl size=36849 sha256=d7f1eb74bf255ce6931a3cf46b9a96d1b4a0115e9a6a1007ba04db8886cd5326\n",
" Stored in directory: /private/var/folders/09/pt1hglws43n7fh5521n6zyyh0000gn/T/pip-ephem-wheel-cache-w99ak0ft/wheels/17/26/2b/95e39722d6155ccf3490ca6319b00bd6c3f0644a3cffeed02e\n",
" Building wheel for sflkit (pyproject.toml) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for sflkit: filename=sflkit-0.2.6-py3-none-any.whl size=39297 sha256=aa8c1331ed527c0a89c0632b24b0ba146eab95760564d41188ef489542d5f516\n",
" Stored in directory: /private/var/folders/09/pt1hglws43n7fh5521n6zyyh0000gn/T/pip-ephem-wheel-cache-1d3qc8oo/wheels/eb/95/8a/7bf6ee4d50417cf8e084552e4c6c5c1932d1e96f61309af921\n",
"Successfully built sflkit\n",
"Installing collected packages: sflkit\n",
" Attempting uninstall: sflkit\n",
" Found existing installation: sflkit 0.0.1\n",
" Uninstalling sflkit-0.0.1:\n",
" Successfully uninstalled sflkit-0.0.1\n",
"Successfully installed sflkit-0.0.1\n"
" Found existing installation: sflkit 0.2.6\n",
" Uninstalling sflkit-0.2.6:\n",
" Successfully uninstalled sflkit-0.2.6\n",
"Successfully installed sflkit-0.2.6\n"
]
}
],
Expand Down Expand Up @@ -651,13 +668,13 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 19,
"id": "b0cd0637-7b4a-4736-80a3-6211b7e529c9",
"metadata": {},
"outputs": [],
"source": [
"def get_config():\n",
" return Config.config(path=middle_py, working=tmp_py, language=language, predicates=predicates, metrics=metrics, passing=passing, failing=failing)"
" return Config.create(path=middle_py, working=tmp_py, language=language, predicates=predicates, metrics=metrics, passing=passing, failing=failing)"
]
},
{
Expand All @@ -670,7 +687,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 20,
"id": "d0a87958-fbf9-4ad8-91c5-c4f9526ebcc5",
"metadata": {},
"outputs": [],
Expand All @@ -692,42 +709,42 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 21,
"id": "c19129e7-cf49-4028-8997-76afeafc9324",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"import sflkit.instrumentation.lib\n",
"import sflkitlib.lib\n",
"\n",
"\n",
"def middle(x, y, z):\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 2, 0)\n",
" sflkitlib.lib.add_line_event('middle.py', 2, 0)\n",
" m = z\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 3, 1)\n",
" sflkitlib.lib.add_line_event('middle.py', 3, 1)\n",
" if y < z:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 4, 2)\n",
" sflkitlib.lib.add_line_event('middle.py', 4, 2)\n",
" if x < y:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 5, 3)\n",
" sflkitlib.lib.add_line_event('middle.py', 5, 3)\n",
" m = y\n",
" else:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 6, 4)\n",
" sflkitlib.lib.add_line_event('middle.py', 6, 4)\n",
" if x < z:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 7, 5)\n",
" sflkitlib.lib.add_line_event('middle.py', 7, 5)\n",
" m = y\n",
" else:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 9, 6)\n",
" sflkitlib.lib.add_line_event('middle.py', 9, 6)\n",
" if x > y:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 10, 7)\n",
" sflkitlib.lib.add_line_event('middle.py', 10, 7)\n",
" m = y\n",
" else:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 11, 8)\n",
" sflkitlib.lib.add_line_event('middle.py', 11, 8)\n",
" if x > z:\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 12, 9)\n",
" sflkitlib.lib.add_line_event('middle.py', 12, 9)\n",
" m = x\n",
" sflkit.instrumentation.lib.add_line_event('middle.py', 13, 10)\n",
" sflkitlib.lib.add_line_event('middle.py', 13, 10)\n",
" return m\n",
"\n"
]
Expand Down Expand Up @@ -763,19 +780,19 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": 32,
"id": "a5daf879-9158-402f-8b5f-bab67f4736da",
"metadata": {},
"outputs": [],
"source": [
"def test_tmp(x, y, z, expected): \n",
" import tmp\n",
" importlib.reload(tmp)\n",
" tmp.sflkit.instrumentation.lib.reset()\n",
" tmp.sflkitlib.lib.reset()\n",
" try:\n",
" return test(tmp.middle, x, y, z, expected)\n",
" finally:\n",
" tmp.sflkit.instrumentation.lib.dump_events()\n",
" tmp.sflkitlib.lib.dump_events()\n",
" del tmp"
]
},
Expand All @@ -789,7 +806,7 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": 33,
"id": "823303be-b13f-4405-9186-857625aec1b1",
"metadata": {},
"outputs": [],
Expand All @@ -807,7 +824,7 @@
},
{
"cell_type": "code",
"execution_count": 21,
"execution_count": 34,
"id": "e084ac5b-b15e-47d0-8cda-4dc14adbb2e9",
"metadata": {},
"outputs": [],
Expand All @@ -834,7 +851,7 @@
},
{
"cell_type": "code",
"execution_count": 22,
"execution_count": 35,
"id": "d922df2e-39a9-4aea-a926-b9275bdd9197",
"metadata": {},
"outputs": [],
Expand All @@ -854,7 +871,7 @@
},
{
"cell_type": "code",
"execution_count": 23,
"execution_count": 36,
"id": "f52db0b7-4423-49a2-b79c-3bff82e9f084",
"metadata": {},
"outputs": [],
Expand All @@ -872,24 +889,20 @@
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": 37,
"id": "cd538827-c2b6-45fe-a3bf-1bae6e213223",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'LINE': {'Tarantula': [[middle.py:7]:1.0,\n",
" [middle.py:4]:0.6666666666666666,\n",
" [middle.py:6]:0.6666666666666666,\n",
" [middle.py:13]:0.5,\n",
" [middle.py:2]:0.5,\n",
" [middle.py:3]:0.5,\n",
" [middle.py:9]:0.0,\n",
" [middle.py:10]:0.0]}}"
" [middle.py:4, middle.py:6]:0.6666666666666666,\n",
" [middle.py:3, middle.py:13, middle.py:2]:0.5,\n",
" [middle.py:9, middle.py:10]:0.0]}}"
]
},
"execution_count": 24,
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
Expand All @@ -916,7 +929,7 @@
},
{
"cell_type": "code",
"execution_count": 25,
"execution_count": 38,
"id": "d2e2b4ed-5c28-45c9-bb12-bd746e7bc966",
"metadata": {},
"outputs": [],
Expand All @@ -930,7 +943,7 @@
},
{
"cell_type": "code",
"execution_count": 26,
"execution_count": 39,
"id": "a7a490d9-7622-4e46-968e-aeb0d7b368b0",
"metadata": {},
"outputs": [
Expand Down Expand Up @@ -965,7 +978,7 @@
"<IPython.core.display.HTML object>"
]
},
"execution_count": 26,
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
Expand Down Expand Up @@ -1010,7 +1023,7 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": 40,
"id": "bf3f66c0-1131-4017-bbd2-a4d68eec4c22",
"metadata": {},
"outputs": [
Expand Down Expand Up @@ -1046,7 +1059,7 @@
"<IPython.core.display.HTML object>"
]
},
"execution_count": 27,
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
Expand Down Expand Up @@ -1082,7 +1095,7 @@
},
{
"cell_type": "code",
"execution_count": 28,
"execution_count": 41,
"id": "416d8d9f-2636-4e79-8dd4-83d5c3a3e68f",
"metadata": {},
"outputs": [
Expand Down Expand Up @@ -1118,7 +1131,7 @@
"<IPython.core.display.HTML object>"
]
},
"execution_count": 28,
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
Expand Down Expand Up @@ -1154,7 +1167,7 @@
},
{
"cell_type": "code",
"execution_count": 29,
"execution_count": 42,
"id": "0c9dcfc0-98db-4151-a0bd-44862985a3b4",
"metadata": {},
"outputs": [
Expand Down Expand Up @@ -1190,7 +1203,7 @@
"<IPython.core.display.HTML object>"
]
},
"execution_count": 29,
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
Expand Down Expand Up @@ -1230,9 +1243,7 @@
"id": "501b70f5-3276-45e8-9e48-7331964004d7",
"metadata": {},
"source": [
"https://github.com/uds-se/sflkit\n",
"\n",
"<img src=\"qrcode.png\" style=\"width:500px\">"
"https://github.com/uds-se/sflkit"
]
}
],
Expand All @@ -1252,7 +1263,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
"version": "3.11.1"
}
},
"nbformat": 4,
Expand Down
18 changes: 12 additions & 6 deletions src/sflkit/language/python/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,18 @@ def visit_ExceptHandler(self, node: ExceptHandler) -> Injection:
)

def visit_Try(self, node: Try) -> Injection:
else_branch_event = BranchEvent(
self.file, node.lineno, self.id_generator.get_next_id(), self.branch_id, -1
)
return Injection(
orelse=[self.get_event_call(else_branch_event)], events=[else_branch_event]
)
if node.handlers:
else_branch_event = BranchEvent(
self.file,
node.lineno,
self.id_generator.get_next_id(),
self.branch_id,
-1,
)
return Injection(
orelse=[self.get_event_call(else_branch_event)],
events=[else_branch_event],
)


class DefEventFactory(PythonEventFactory):
Expand Down

0 comments on commit 1030be2

Please sign in to comment.