Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test/cask/dsl_spec: fix test for certain locale settings
As I mentioned in Homebrew#15146, two `Cask::DSL` tests failed on my local machine, even on `master`. `git bisect` suggested that it was Homebrew#14998 that introduced those failures. It turned out that the tests here could fail under certain locale settings, like this one below: $ defaults read -g AppleLanguages ( "en-GB", "zh-Hans-SG" ) This is not actually a regression. With the aforementioned locale settings, an explicit `let(:languages) { ["en"] }` setting would result in locales being considered in the following order: `en`, `en-GB`, `zh-Hans-SG`. For each of them, the `detect` method from `Locale` is called, with `locale_groups` as `[["zh"], ["en-US"]]`, the list of locales defined in the test cask. def detect(locale_groups) locale_groups.find { |locales| locales.any? { |locale| eql?(locale) } } || locale_groups.find { |locales| locales.any? { |locale| include?(locale) } } end Neither of `en` and `en-GB` satisfies the `detect` conditions. (Note that `Locale.parse("en").include?("en-US")` evaluates to `false`.) But `zh-Hans-SG` does (because `Locale.parse("zh-Hans-SG").include?("zh")` is `true`). So, despite having `:languages` set to `en`, the Chinese locale was still used. This could be fixed by generalising the test cask's English locale settings from `en-US` to `en`. This is already the case for most existing casks: $ grep 'language "en.*", default: true' Casks/*.rb Casks/battle-net.rb: language "en", default: true do Casks/cave-story.rb: language "en", default: true do Casks/firefox.rb: language "en", default: true do Casks/libreoffice-language-pack.rb: language "en-GB", default: true do Casks/libreoffice-language-pack.rb: language "en-GB", default: true do Casks/openoffice.rb: language "en", default: true do Casks/seamonkey.rb: language "en-US", default: true do Casks/thunderbird.rb: language "en", default: true do Casks/wondershare-edrawmax.rb: language "en", default: true do Note that this should make the language stanza tests independent of locale settings, because `zh` and `en` should be able to capture all the test cases. Signed-off-by: Ruoyu Zhong <zhongruoyu@outlook.com>
- Loading branch information