@ -662,21 +662,54 @@ class PathMapper:
def _classify_ansible ( self , path : str ) - > t . Optional [ dict [ str , str ] ] :
""" Return the classification for the given path using rules specific to Ansible. """
dirname = os . path . dirname ( path )
filename = os . path . basename ( path )
name , ext = os . path . splitext ( filename )
minimal : dict [ str , str ] = { }
# Early classification that needs to occur before common classification belongs here.
if path . startswith ( ' test/units/compat/ ' ) :
return {
' units ' : ' test/units/ ' ,
}
if dirname == ' .azure-pipelines/commands ' :
test_map = {
' cloud.sh ' : ' integration:cloud/ ' ,
' linux.sh ' : ' integration:all ' ,
' network.sh ' : ' network-integration:all ' ,
' remote.sh ' : ' integration:all ' ,
' sanity.sh ' : ' sanity:all ' ,
' units.sh ' : ' units:all ' ,
' windows.sh ' : ' windows-integration:all ' ,
}
test_match = test_map . get ( filename )
if test_match :
test_command , test_target = test_match . split ( ' : ' )
return {
test_command : test_target ,
}
cloud_target = f ' cloud/ { name } / '
if cloud_target in self . integration_targets_by_alias :
return {
' integration ' : cloud_target ,
}
# Classification common to both ansible and collections.
result = self . _classify_common ( path )
if result is not None :
return result
dirname = os . path . dirname ( path )
filename = os . path . basename ( path )
name , ext = os . path . splitext ( filename )
minimal : dict [ str , str ] = { }
# Classification here is specific to ansible, and runs after common classification.
if path . startswith ( ' bin/ ' ) :
return all_tests ( self . args ) # broad impact, run all tests
@ -792,39 +825,6 @@ class PathMapper:
if path . startswith ( ' test/support/ ' ) :
return all_tests ( self . args ) # test infrastructure, run all tests
if path . startswith ( ' test/utils/shippable/ ' ) :
if dirname == ' test/utils/shippable ' :
test_map = {
' cloud.sh ' : ' integration:cloud/ ' ,
' linux.sh ' : ' integration:all ' ,
' network.sh ' : ' network-integration:all ' ,
' remote.sh ' : ' integration:all ' ,
' sanity.sh ' : ' sanity:all ' ,
' units.sh ' : ' units:all ' ,
' windows.sh ' : ' windows-integration:all ' ,
}
test_match = test_map . get ( filename )
if test_match :
test_command , test_target = test_match . split ( ' : ' )
return {
test_command : test_target ,
}
cloud_target = ' cloud/ %s / ' % name
if cloud_target in self . integration_targets_by_alias :
return {
' integration ' : cloud_target ,
}
return all_tests ( self . args ) # test infrastructure, run all tests
if path . startswith ( ' test/utils/ ' ) :
return minimal
if ' / ' not in path :
if path in (
' .gitattributes ' ,