Я работаю над набором тестов, который также сравнивает множество путей, например что-то вроде этого:
expect(all_classes).to contain_exactly(
File.expand_path("lib/#{plugin_info.actions_path}/#{plugin_name}_action.rb"),
File.expand_path("lib/#{plugin_info.helper_path}/#{plugin_name}_helper.rb")
)
К сожалению, в Windows это иногда приводит к ошибкам теста, если сгенерированные временные пути содержат каталог, который вызывает 8.3 имен файлов . Пример:
2018-09-11T20:52:42.9346535Z 1) Fastlane::PluginGenerator#generate creates a plugin.rb file for the plugin
2018-09-11T20:52:42.9346797Z Failure/Error:
2018-09-11T20:52:42.9347031Z expect(all_classes).to contain_exactly(
2018-09-11T20:52:42.9347330Z File.expand_path("lib/#{plugin_info.actions_path}/#{plugin_name}_action.rb"),
2018-09-11T20:52:42.9347673Z File.expand_path("lib/#{plugin_info.helper_path}/#{plugin_name}_helper.rb")
2018-09-11T20:52:42.9347922Z )
2018-09-11T20:52:42.9348040Z
2018-09-11T20:52:42.9348443Z expected collection contained: ["C:/Users/VSSADM~1/AppData/Local/Temp/d20180911-3656-1muipt1/fastlane-plugin-tester_thing/lib/fastla...muipt1/fastlane-plugin-tester_thing/lib/fastlane/plugin/tester_thing/helper/tester_thing_helper.rb"]
2018-09-11T20:52:42.9349108Z actual collection contained: ["C:/Users/VssAdministrator/AppData/Local/Temp/d20180911-3656-1muipt1/fastlane-plugin-tester_thing/li...muipt1/fastlane-plugin-tester_thing/lib/fastlane/plugin/tester_thing/helper/tester_thing_helper.rb"]
2018-09-11T20:52:42.9349732Z the missing elements were: ["C:/Users/VSSADM~1/AppData/Local/Temp/d20180911-3656-1muipt1/fastlane-plugin-tester_thing/lib/fastla...muipt1/fastlane-plugin-tester_thing/lib/fastlane/plugin/tester_thing/helper/tester_thing_helper.rb"]
2018-09-11T20:52:42.9350359Z the extra elements were: ["C:/Users/VssAdministrator/AppData/Local/Temp/d20180911-3656-1muipt1/fastlane-plugin-tester_thing/li...muipt1/fastlane-plugin-tester_thing/lib/fastlane/plugin/tester_thing/helper/tester_thing_helper.rb"]
2018-09-11T20:52:42.9350855Z # ./fastlane/spec/plugins_specs/plugin_generator_spec.rb:135:in `block (4 levels) in <top (required)>'
2018-09-11T20:52:42.9351199Z # ./fastlane/spec/plugins_specs/plugin_generator_spec.rb:119:in `chdir'
2018-09-11T20:52:42.9351541Z # ./fastlane/spec/plugins_specs/plugin_generator_spec.rb:119:in `block (3 levels) in <top (required)>'
В этом случае проблема заключается в пути к временному каталогу, созданному на машине конвейеров Azure DevOps: C:/Users/VssAdministrator/AppData/...
против C:/Users/VSSADM~1/AppData/...
Некоторые из методов ruby возвращают длинную версию, другие - короткую. Сложно кажется, что одни и те же методы иногда возвращают один, а затем другой - в зависимости от некоторого контекста, который я еще не понял, по крайней мере, так мне кажется после небольшой отладки теста.
Может кто-нибудь объяснить мне, что происходит и какие-нибудь идеи, как я могу это исправить? Есть ли способ «стандартизировать» все на одном «методе» представления пути?
Что-нибудь еще, что я должен прочитать или посмотреть, чтобы это исправить?