Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions exercises/practice/linked-list/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,23 @@
{%- if error_operation == "pop" or error_operation == "shift" %}
with self.assertRaises(IndexError) as err:
lst.{{ error_operation }}()
self.assertEqual(type(err.exception), IndexError)

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), IndexError)
self.assertEqual(to_validate_msg, "{{ error_msg }}")

{%- elif error_operation == "delete" %}
with self.assertRaises(ValueError) as err:
lst.{{ error_operation }}({{ value if value else 0 }})
self.assertEqual(type(err.exception), ValueError)

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), ValueError)
self.assertEqual(to_validate_msg, "{{ error_msg }}")
{%- endif %}
self.assertEqual(err.exception.args[0], "{{ error_msg }}")
{%- endif %}
{%- endmacro %}

Expand Down
50 changes: 37 additions & 13 deletions exercises/practice/linked-list/linked_list_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# These tests are auto-generated with test data from:
# https://github.com/exercism/problem-specifications/tree/main/exercises/linked-list/canonical-data.json
# File last updated on 2023-07-19
# File last updated on 2025-08-24

import unittest

Expand Down Expand Up @@ -168,8 +168,12 @@ def test_using_pop_raises_an_error_if_the_list_is_empty(self):
lst = LinkedList()
with self.assertRaises(IndexError) as err:
lst.pop()
self.assertEqual(type(err.exception), IndexError)
self.assertEqual(err.exception.args[0], "List is empty")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), IndexError)
self.assertEqual(to_validate_msg, "List is empty")

def test_can_return_with_pop_and_then_raise_an_error_if_empty(self):
lst = LinkedList()
Expand All @@ -179,15 +183,23 @@ def test_can_return_with_pop_and_then_raise_an_error_if_empty(self):
self.assertEqual(lst.pop(), 5)
with self.assertRaises(IndexError) as err:
lst.pop()
self.assertEqual(type(err.exception), IndexError)
self.assertEqual(err.exception.args[0], "List is empty")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), IndexError)
self.assertEqual(to_validate_msg, "List is empty")

def test_using_shift_raises_an_error_if_the_list_is_empty(self):
lst = LinkedList()
with self.assertRaises(IndexError) as err:
lst.shift()
self.assertEqual(type(err.exception), IndexError)
self.assertEqual(err.exception.args[0], "List is empty")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), IndexError)
self.assertEqual(to_validate_msg, "List is empty")

def test_can_return_with_shift_and_then_raise_an_error_if_empty(self):
lst = LinkedList()
Expand All @@ -197,15 +209,23 @@ def test_can_return_with_shift_and_then_raise_an_error_if_empty(self):
self.assertEqual(lst.shift(), 5)
with self.assertRaises(IndexError) as err:
lst.shift()
self.assertEqual(type(err.exception), IndexError)
self.assertEqual(err.exception.args[0], "List is empty")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), IndexError)
self.assertEqual(to_validate_msg, "List is empty")

def test_using_delete_raises_an_error_if_the_list_is_empty(self):
lst = LinkedList()
with self.assertRaises(ValueError) as err:
lst.delete(0)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(err.exception.args[0], "Value not found")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), ValueError)
self.assertEqual(to_validate_msg, "Value not found")

def test_using_delete_raises_an_error_if_the_value_is_not_found(self):
lst = LinkedList()
Expand All @@ -214,5 +234,9 @@ def test_using_delete_raises_an_error_if_the_value_is_not_found(self):
self.assertEqual(lst.pop(), 7)
with self.assertRaises(ValueError) as err:
lst.delete(0)
self.assertEqual(type(err.exception), ValueError)
self.assertEqual(err.exception.args[0], "Value not found")

to_validate = err.exception
to_validate_msg = err.exception.args[0]

self.assertEqual(type(to_validate), ValueError)
self.assertEqual(to_validate_msg, "Value not found")
Loading