@@ -2736,9 +2736,19 @@ def setUpClass(cls):
2736
2736
tar .errorlevel = 0
2737
2737
tar .extractall (cls .control_dir , filter = cls .extraction_filter )
2738
2738
tar .close ()
2739
+ try :
2740
+ paths = list (pathlib .Path (cls .control_dir ).glob ('**/*' ))
2741
+ except OSError as err :
2742
+ if getattr (err , 'winerror' , None ) == 123 :
2743
+ # 123 is Windows error ERROR_INVALID_NAME
2744
+ # glob() fails this way when symlink targets are too long
2745
+ # Fixed in 3.8+: https://github.com/python/cpython/issues/79487
2746
+ raise unittest .SkipTest ('Path.glob failed' )
2747
+ else :
2748
+ raise
2739
2749
cls .control_paths = set (
2740
2750
p .relative_to (cls .control_dir )
2741
- for p in pathlib . Path ( cls . control_dir ). glob ( '**/*' ) )
2751
+ for p in paths )
2742
2752
2743
2753
@classmethod
2744
2754
def tearDownClass (cls ):
@@ -3031,7 +3041,16 @@ def check_context(self, tar, filter):
3031
3041
self .expected_paths = set ()
3032
3042
else :
3033
3043
self .raised_exception = None
3034
- self .expected_paths = set (self .outerdir .glob ('**/*' ))
3044
+ try :
3045
+ self .expected_paths = set (self .outerdir .glob ('**/*' ))
3046
+ except OSError as err
3047
+ if getattr (err , 'winerror' , None ) == 123 :
3048
+ # 123 is Windows error ERROR_INVALID_NAME
3049
+ # glob() fails this way when symlink targets are too long
3050
+ # Fixed in 3.8+: https://github.com/python/cpython/issues/79487
3051
+ raise unittest .SkipTest ('Path.glob failed' )
3052
+ else :
3053
+ raise
3035
3054
self .expected_paths .discard (self .destdir )
3036
3055
try :
3037
3056
yield
0 commit comments