@@ -22,16 +22,55 @@ def test_slugify_hashed_filename_special_chars(self):
2222 # Test the slugify_hashed_filename function with special characters
2323 self .assertEqual (slugify_hashed_filename ("my@ex#ample!" ), "myexample_3366b5" )
2424
25+ def test_slugify_hashed_filename_invalid_characters_common_filesystems (self ):
26+ # Test the slugify_hashed_filename function with invalid characters for common filesystems
27+ self .assertEqual (
28+ slugify_hashed_filename ("xblock.v1:problem:my_component" ), "xblockv1problemmy_component_d346b1"
29+ )
30+ self .assertEqual (
31+ slugify_hashed_filename ("xblock.v1/problem/my_component" ), "xblockv1problemmy_component_2648c6"
32+ )
33+ self .assertEqual (
34+ slugify_hashed_filename ("xblock.v1?problem?my_component" ), "xblockv1problemmy_component_12a86d"
35+ )
36+ self .assertEqual (
37+ slugify_hashed_filename ("xblock.v1\\ problem_[my_component]" ), "xblockv1problem_my_component_a59bb3"
38+ )
39+ self .assertEqual (
40+ slugify_hashed_filename ("xblock.v1>problem_>my_component" ), "xblockv1problem_my_component_8497eb"
41+ )
42+ self .assertEqual (
43+ slugify_hashed_filename ("xblock.v1*problem*EndsWith|" ), "xblockv1problemendswith_b88aab"
44+ )
45+ self .assertEqual (
46+ slugify_hashed_filename ("xblock.v1*problem*EndsWith." ), "xblockv1problemendswith_7fa0cf"
47+ )
48+
49+ def test_slugify_hashed_filename_unicode (self ):
50+ # Test the slugify_hashed_filename function with unicode characters
51+
52+ # Example with accents
53+ self .assertEqual (slugify_hashed_filename ("café" ), "café_07f4df" )
54+ self .assertEqual (slugify_hashed_filename ("naïve" ), "naïve_308c7e" )
55+
56+ # Example with non-latin (e.g., Japanese)
57+ identifier = "テスト用"
58+ result = slugify_hashed_filename (identifier )
59+ self .assertEqual (result , "テスト用_be48ab" )
60+
61+ # Example with mixed characters
62+ identifier = "café_テスト用"
63+ result = slugify_hashed_filename (identifier )
64+ self .assertEqual (result , "café_テスト用_3cf9ef" )
65+
2566 def test_slugify_hashed_filename_long_string (self ):
2667 # Test the slugify_hashed_filename function with a long string
2768 long_string = "a" * 100
2869 self .assertEqual (slugify_hashed_filename (long_string ), f"{ long_string } _4e84b3" )
2970
3071 def test_slugify_hashed_filename_case_insensitivity (self ):
3172 # Test the slugify_hashed_filename function for case insensitivity
32- self .assertEqual (slugify_hashed_filename ("My_Example" ), "my_example_4f859c" )
33- self .assertEqual (slugify_hashed_filename ("MY_EXAMPLE" ), "my_example_49be65" )
34- self .assertEqual (slugify_hashed_filename ("my_example" ), "my_example_880989" )
35- self .assertEqual (slugify_hashed_filename ("mY_eXamPle" ), "my_example_d28c02" )
36- self .assertEqual (slugify_hashed_filename ("My_ExAmPlE" ), "my_example_79232e" )
37- self .assertEqual (slugify_hashed_filename ("mY_EXAMPLE" ), "my_example_b91dc0" )
73+ upper_case_value = slugify_hashed_filename ("MY_EXAMPLE" )
74+ lower_case_value = slugify_hashed_filename ("my_example" )
75+ # The values should be different even though they are the same but with different cases
76+ self .assertNotEqual (upper_case_value , lower_case_value )
0 commit comments