File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed 
src/pysonar_scanner/configuration Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change @@ -63,7 +63,10 @@ def __read_sonar_properties(toml_dict) -> Dict[str, str]:
6363            sonar_config  =  toml_dict ["tool" ]["sonar" ]
6464            python_to_java_names  =  {prop .python_name (): prop .name  for  prop  in  properties .PROPERTIES }
6565            flattened_sonar_config  =  TomlConfigurationLoader .__flatten_config_dict (sonar_config , prefix = "sonar." )
66-             return  {python_to_java_names .get (key , key ): value  for  key , value  in  flattened_sonar_config .items ()}
66+             return  {
67+                 python_to_java_names .get (key , TomlConfigurationLoader .__kebab_to_camel_case (key )): value 
68+                 for  key , value  in  flattened_sonar_config .items ()
69+             }
6770        return  {}
6871
6972    @staticmethod  
@@ -104,3 +107,12 @@ def __convert_arrays_to_string(property) -> str:
104107            return  "," .join (str (item ) for  item  in  property )
105108        else :
106109            return  property 
110+ 
111+     @staticmethod  
112+     def  __kebab_to_camel_case (key : str ) ->  str :
113+         if  "-"  in  key :
114+             parts  =  key .split ("-" )
115+             result  =  parts [0 ] +  "" .join (word .capitalize () for  word  in  parts [1 :])
116+             logging .debug (f"Converting kebab-case property '{ key }  ' to camelCase: '{ result }  '" )
117+             return  result 
118+         return  key 
Original file line number Diff line number Diff line change @@ -65,6 +65,33 @@ def test_load_toml_file_kebab_case(self):
6565        self .assertEqual (properties .sonar_properties .get ("sonar.projectKey" ), "my-project" )
6666        self .assertEqual (properties .sonar_properties .get ("sonar.projectName" ), "My Project" )
6767
68+     @patch ("pysonar_scanner.configuration.pyproject_toml.logging" ) 
69+     def  test_load_toml_file_kebab_case_unknown_properties (self , mock_logging ):
70+         self .fs .create_file (
71+             "pyproject.toml" ,
72+             contents = """ 
73+             [tool.sonar] 
74+             coverage-report-paths = "coverage.xml" 
75+             some-unknown-property = "some-value" 
76+             nested-property.some-nested-key = "nested-value" 
77+             """ ,
78+         )
79+         properties  =  TomlConfigurationLoader .load (Path ("." ))
80+ 
81+         self .assertEqual (properties .sonar_properties .get ("sonar.coverageReportPaths" ), "coverage.xml" )
82+         self .assertEqual (properties .sonar_properties .get ("sonar.someUnknownProperty" ), "some-value" )
83+         self .assertEqual (properties .sonar_properties .get ("sonar.nestedProperty.someNestedKey" ), "nested-value" )
84+ 
85+         mock_logging .debug .assert_any_call (
86+             "Converting kebab-case property 'sonar.coverage-report-paths' to camelCase: 'sonar.coverageReportPaths'" 
87+         )
88+         mock_logging .debug .assert_any_call (
89+             "Converting kebab-case property 'sonar.some-unknown-property' to camelCase: 'sonar.someUnknownProperty'" 
90+         )
91+         mock_logging .debug .assert_any_call (
92+             "Converting kebab-case property 'sonar.nested-property.some-nested-key' to camelCase: 'sonar.nestedProperty.someNestedKey'" 
93+         )
94+ 
6895    def  test_load_toml_file_without_sonar_section (self ):
6996        self .fs .create_file (
7097            "pyproject.toml" ,
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments