mirror of
https://github.com/discourse/discourse.git
synced 2025-04-26 05:24:30 +08:00
DEV: ensure state is clean prior to spec (#12399)
Corrects flaky spec Previously we were only clearing state after our spec ran, leaving possible edge cases where `Discourse.plugins` had data. Clean-up source of the plugin leak 1 pop was not enough to clear the plugin, plus make specs a bit more deliberate
This commit is contained in:
parent
139a547f22
commit
6c57f6f49d
@ -78,8 +78,14 @@ describe Discourse do
|
|||||||
let(:plugin1) { plugin_class.new.tap { |p| p.enabled = true; p.path = "my-plugin-1" } }
|
let(:plugin1) { plugin_class.new.tap { |p| p.enabled = true; p.path = "my-plugin-1" } }
|
||||||
let(:plugin2) { plugin_class.new.tap { |p| p.enabled = false; p.path = "my-plugin-1" } }
|
let(:plugin2) { plugin_class.new.tap { |p| p.enabled = false; p.path = "my-plugin-1" } }
|
||||||
|
|
||||||
before { Discourse.plugins.append(plugin1, plugin2) }
|
before do
|
||||||
after { Discourse.plugins.clear }
|
Discourse.plugins.append(plugin1, plugin2)
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
Discourse.plugins.delete plugin1
|
||||||
|
Discourse.plugins.delete plugin2
|
||||||
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
plugin_class.any_instance.stubs(:css_asset_exists?).returns(true)
|
plugin_class.any_instance.stubs(:css_asset_exists?).returns(true)
|
||||||
@ -87,13 +93,13 @@ describe Discourse do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'can find plugins correctly' do
|
it 'can find plugins correctly' do
|
||||||
expect(Discourse.plugins).to contain_exactly(plugin1, plugin2)
|
expect(Discourse.plugins).to include(plugin1, plugin2)
|
||||||
|
|
||||||
# Exclude disabled plugins by default
|
# Exclude disabled plugins by default
|
||||||
expect(Discourse.find_plugins({})).to contain_exactly(plugin1)
|
expect(Discourse.find_plugins({})).to include(plugin1)
|
||||||
|
|
||||||
# Include disabled plugins when requested
|
# Include disabled plugins when requested
|
||||||
expect(Discourse.find_plugins(include_disabled: true)).to contain_exactly(plugin1, plugin2)
|
expect(Discourse.find_plugins(include_disabled: true)).to include(plugin1, plugin2)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'can find plugin assets' do
|
it 'can find plugin assets' do
|
||||||
|
@ -28,14 +28,20 @@ describe Stylesheet::Compiler do
|
|||||||
end
|
end
|
||||||
|
|
||||||
context "with a plugin" do
|
context "with a plugin" do
|
||||||
before do
|
let :plugin1 do
|
||||||
plugin1 = Plugin::Instance.new
|
plugin1 = Plugin::Instance.new
|
||||||
plugin1.path = "#{Rails.root}/spec/fixtures/plugins/my_plugin/plugin.rb"
|
plugin1.path = "#{Rails.root}/spec/fixtures/plugins/my_plugin/plugin.rb"
|
||||||
plugin1.register_css "body { background: $primary }"
|
plugin1.register_css "body { background: $primary }"
|
||||||
|
plugin1
|
||||||
|
end
|
||||||
|
|
||||||
|
let :plugin2 do
|
||||||
plugin2 = Plugin::Instance.new
|
plugin2 = Plugin::Instance.new
|
||||||
plugin2.path = "#{Rails.root}/spec/fixtures/plugins/scss_plugin/plugin.rb"
|
plugin2.path = "#{Rails.root}/spec/fixtures/plugins/scss_plugin/plugin.rb"
|
||||||
|
plugin2
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
Discourse.plugins << plugin1
|
Discourse.plugins << plugin1
|
||||||
Discourse.plugins << plugin2
|
Discourse.plugins << plugin2
|
||||||
plugin1.activate!
|
plugin1.activate!
|
||||||
@ -44,7 +50,8 @@ describe Stylesheet::Compiler do
|
|||||||
end
|
end
|
||||||
|
|
||||||
after do
|
after do
|
||||||
Discourse.plugins.pop
|
Discourse.plugins.delete plugin1
|
||||||
|
Discourse.plugins.delete plugin2
|
||||||
Stylesheet::Importer.register_imports!
|
Stylesheet::Importer.register_imports!
|
||||||
DiscoursePluginRegistry.reset!
|
DiscoursePluginRegistry.reset!
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user