mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
DEV: Add a spec for assets:precompile:js_processor
(#23220)
This commit is contained in:
@ -6,9 +6,6 @@ class DiscourseJsProcessor
|
|||||||
class TranspileError < StandardError
|
class TranspileError < StandardError
|
||||||
end
|
end
|
||||||
|
|
||||||
JS_PROCESSOR_PATH =
|
|
||||||
Rails.env.production? ? "tmp/js-processor.js" : "tmp/js-processor/#{Process.pid}.js"
|
|
||||||
|
|
||||||
# To generate a list of babel plugins used by ember-cli, set
|
# To generate a list of babel plugins used by ember-cli, set
|
||||||
# babel: { debug: true } in ember-cli-build.js, then run `yarn ember build -prod`
|
# babel: { debug: true } in ember-cli-build.js, then run `yarn ember build -prod`
|
||||||
DISCOURSE_COMMON_BABEL_PLUGINS = [
|
DISCOURSE_COMMON_BABEL_PLUGINS = [
|
||||||
@ -101,6 +98,9 @@ class DiscourseJsProcessor
|
|||||||
end
|
end
|
||||||
|
|
||||||
class Transpiler
|
class Transpiler
|
||||||
|
JS_PROCESSOR_PATH =
|
||||||
|
Rails.env.production? ? "tmp/js-processor.js" : "tmp/js-processor/#{Process.pid}.js"
|
||||||
|
|
||||||
@mutex = Mutex.new
|
@mutex = Mutex.new
|
||||||
@ctx_init = Mutex.new
|
@ctx_init = Mutex.new
|
||||||
@processor_mutex = Mutex.new
|
@processor_mutex = Mutex.new
|
||||||
@ -121,6 +121,7 @@ class DiscourseJsProcessor
|
|||||||
"app/assets/javascripts/js-processor.js",
|
"app/assets/javascripts/js-processor.js",
|
||||||
"--outfile=#{JS_PROCESSOR_PATH}",
|
"--outfile=#{JS_PROCESSOR_PATH}",
|
||||||
)
|
)
|
||||||
|
JS_PROCESSOR_PATH
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.create_new_context
|
def self.create_new_context
|
||||||
|
@ -301,7 +301,8 @@ task "assets:precompile:compress_js": "environment" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
task "assets:precompile:js_processor": "environment" do
|
task "assets:precompile:js_processor": "environment" do
|
||||||
DiscourseJsProcessor::Transpiler.generate_js_processor
|
path = DiscourseJsProcessor::Transpiler.generate_js_processor
|
||||||
|
puts "Compiled js-processor: #{path}"
|
||||||
end
|
end
|
||||||
|
|
||||||
# Run these tasks **before** Rails' "assets:precompile" task
|
# Run these tasks **before** Rails' "assets:precompile" task
|
||||||
|
18
spec/tasks/assets_precompile_spec.rb
Normal file
18
spec/tasks/assets_precompile_spec.rb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec.describe "assets:precompile" do
|
||||||
|
before do
|
||||||
|
Rake::Task.clear
|
||||||
|
Discourse::Application.load_tasks
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "assets:precompile:js_processor" do
|
||||||
|
it "compiles the js processor" do
|
||||||
|
out = capture_stdout { Rake::Task["assets:precompile:js_processor"].invoke }
|
||||||
|
|
||||||
|
expect(out).to match(%r{Compiled js-processor: tmp/js-processor})
|
||||||
|
path = out.match(/: (.+)/)[1]
|
||||||
|
expect(File.exist?(path)).to eq(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user