Skip to content

Commit d7cd1f3

Browse files
authored
Merge pull request #1259 from wakatime/bugfix/language-gen-ordering
Sort language generation deterministically
2 parents 147a966 + 191bb91 commit d7cd1f3

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

pkg/heartbeat/language_gen.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -769,9 +769,13 @@ func updateTestFile(languageTests, languageTestsAliases map[string]string) {
769769
for k := range languageTests {
770770
testKeys = append(testKeys, k)
771771
}
772-
// Sort case-insensitively for proper alphabetical order
772+
// Sort case-insensitively for proper alphabetical order, with case-sensitive tiebreaker for determinism
773773
sort.Slice(testKeys, func(i, j int) bool {
774-
return strings.ToLower(testKeys[i]) < strings.ToLower(testKeys[j])
774+
li, lj := strings.ToLower(testKeys[i]), strings.ToLower(testKeys[j])
775+
if li != lj {
776+
return li < lj
777+
}
778+
return testKeys[i] < testKeys[j]
775779
})
776780

777781
for _, k := range testKeys {
@@ -789,9 +793,13 @@ func updateTestFile(languageTests, languageTestsAliases map[string]string) {
789793
for k := range languageTestsAliases {
790794
aliasKeys = append(aliasKeys, k)
791795
}
792-
// Sort case-insensitively for proper alphabetical order
796+
// Sort case-insensitively for proper alphabetical order, with case-sensitive tiebreaker for determinism
793797
sort.Slice(aliasKeys, func(i, j int) bool {
794-
return strings.ToLower(aliasKeys[i]) < strings.ToLower(aliasKeys[j])
798+
li, lj := strings.ToLower(aliasKeys[i]), strings.ToLower(aliasKeys[j])
799+
if li != lj {
800+
return li < lj
801+
}
802+
return aliasKeys[i] < aliasKeys[j]
795803
})
796804

797805
for _, k := range aliasKeys {

pkg/heartbeat/language_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -826,8 +826,8 @@ func languageTestsAliases() map[string]heartbeat.Language {
826826
"ada2005": heartbeat.LanguageAda,
827827
"ada95": heartbeat.LanguageAda,
828828
"ahk": heartbeat.LanguageAutoHotkey,
829-
"apacheconf": heartbeat.LanguageApacheConfig,
830829
"ApacheConf": heartbeat.LanguageApacheConfig,
830+
"apacheconf": heartbeat.LanguageApacheConfig,
831831
"ArangoDB AQL": heartbeat.LanguageArangoDBQueryLanguage,
832832
"arexx": heartbeat.LanguageRexx,
833833
"as": heartbeat.LanguageActionScript,
@@ -966,8 +966,8 @@ func languageTestsAliases() map[string]heartbeat.Language {
966966
"Protocol Buffer Text Format": heartbeat.LanguageProtocolBuffer,
967967
"ps1": heartbeat.LanguagePowerShell,
968968
"psd1": heartbeat.LanguagePowerShell,
969-
"psl": heartbeat.LanguagePSL,
970969
"PSL": heartbeat.LanguagePSL,
970+
"psl": heartbeat.LanguagePSL,
971971
"psm1": heartbeat.LanguagePowerShell,
972972
"pwsh": heartbeat.LanguagePowerShell,
973973
"py": heartbeat.LanguagePython,
@@ -979,8 +979,8 @@ func languageTestsAliases() map[string]heartbeat.Language {
979979
"qbs": heartbeat.LanguageQML,
980980
"rb": heartbeat.LanguageRuby,
981981
"react": heartbeat.LanguageJSX,
982-
"reasonml": heartbeat.LanguageReasonML,
983982
"ReasonML": heartbeat.LanguageReasonML,
983+
"reasonml": heartbeat.LanguageReasonML,
984984
"registry": heartbeat.LanguageRegistry,
985985
"rest": heartbeat.LanguageReStructuredText,
986986
"rgbasm": heartbeat.LanguageRGBDSAssembly,
@@ -1004,8 +1004,8 @@ func languageTestsAliases() map[string]heartbeat.Language {
10041004
"st": heartbeat.LanguageSmalltalk,
10051005
"stas": heartbeat.LanguageStas,
10061006
"sv": heartbeat.LanguageSystemVerilog,
1007-
"tal": heartbeat.LanguageUxntal,
10081007
"Tal": heartbeat.LanguageUxntal,
1008+
"tal": heartbeat.LanguageUxntal,
10091009
"tape": heartbeat.LanguageVHS,
10101010
"tf": heartbeat.LanguageTerraform,
10111011
"Transact-SQL": heartbeat.LanguageTransactSQL,

0 commit comments

Comments
 (0)