spec/cc/config/yaml_adapter_spec.rb (152 lines of code) (raw):

require "spec_helper" describe CC::Config::YAMLAdapter do describe "#engines" do it "moves engines to plugins" do yaml = load_cc_yaml(<<-EOYAML) engines: rubocop: enabled: true EOYAML expect(yaml.config).to eq( "plugins" => { "rubocop" => { "enabled" => true } } ) end it "includes enabled plugins" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: enabled: true eslint: enabled: true tslint: enabled: false EOYAML expect(yaml.config["plugins"].length).to eq(3) expect(yaml.config["plugins"].keys).to eq( %w[rubocop eslint tslint], ) end it "supports a plugin:true|false shorthand" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: true eslint: false EOYAML plugins = yaml.config["plugins"] expect(plugins["rubocop"]).to eq("enabled" => true) expect(plugins["eslint"]).to eq("enabled" => false) end it "respects channel, and config" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: enabled: true channel: beta config: yo: "sup" EOYAML _, config = yaml.config["plugins"].detect { |name, _| name == "rubocop" } expect(config).to eq( "enabled" => true, "channel" => "beta", "config" => { "yo" => "sup" }, ) end it "re-writes as legacy file config values" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: enabled: true config: file: "foo.rb" EOYAML _, config = yaml.config["plugins"].detect { |name, _| name == "rubocop" } expect(config).to eq( "enabled" => true, "config" => "foo.rb", ) end it "respects legacy file config values" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: enabled: true config: "foo.rb" EOYAML _, config = yaml.config["plugins"].detect { |name, _| name == "rubocop" } expect(config).to eq( "enabled" => true, "config" => "foo.rb", ) end it "updates legacy engine excludes" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: exclude_paths: - foo EOYAML _, config = yaml.config["plugins"].detect { |name, _| name == "rubocop" } expect(config).to eq( "exclude_patterns" => ["foo"], ) end it "does not overwrite engine excludes with legacy" do yaml = load_cc_yaml(<<-EOYAML) plugins: rubocop: exclude_paths: - bar exclude_patterns: - foo EOYAML _, config = yaml.config["plugins"].detect { |name, _| name == "rubocop" } expect(config).to eq( "exclude_paths" => ["bar"], "exclude_patterns" => ["foo"], ) end end describe "#exclude_patterns" do it "uses explicitly-configured excludes when defined" do yaml = load_cc_yaml(<<-EOYAML) exclude_patterns: - "**/*.rb" - foo/ EOYAML expect(yaml.config["exclude_patterns"]).to eq(%w[**/*.rb foo/]) end it "converts legacy exclude_paths" do yaml = load_cc_yaml(<<-EOYAML) exclude_paths: - "**/*.rb" - foo/ EOYAML expect(yaml.config["exclude_patterns"]).to eq(%w[**/*.rb foo/]) end it "converts legacy engine exclude_paths from a string" do yaml = load_cc_yaml(<<-EOYAML) engines: foo: exclude_paths: - "**/*.rb" - foo/ EOYAML expect(yaml.config["plugins"]["foo"]["exclude_patterns"]).to eq(%w[**/*.rb foo/]) end it "converts legacy engine exclude_paths" do yaml = load_cc_yaml(<<-EOYAML) engines: foo: exclude_paths: foo/ EOYAML expect(yaml.config["plugins"]["foo"]["exclude_patterns"]).to eq(%w[foo/]) end end def load_cc_yaml(yaml) Tempfile.open("") do |tmp| tmp.puts(yaml) tmp.rewind described_class.load(tmp.path) end end end