feature: add jst template file have cache #167

Open
hysios wants to merge 21 commits from hysios/master into master
7 changed files with 55 additions and 5 deletions

View File

@ -66,7 +66,8 @@ void Runner::loadSpec()
QVectorIterator<QString> iterator(reportFiles); QVectorIterator<QString> iterator(reportFiles);
while (iterator.hasNext()) { while (iterator.hasNext()) {
QFile *outputFile = new QFile(iterator.next()); QString fileName = iterator.next();
QFile *outputFile = new QFile(fileName);
outputFile->open(QIODevice::WriteOnly); outputFile->open(QIODevice::WriteOnly);
outputFiles.enqueue(outputFile); outputFiles.enqueue(outputFile);
} }
@ -157,6 +158,14 @@ void Runner::print(const QString &fh, const QString &content) {
} }
} }
void Runner::printFile(const QString &fileName, const QString &content) {
QFile *outputFile = new QFile(fileName);
outputFile->open(QIODevice::WriteOnly);
QTextStream ts(outputFile);
ts << qPrintable(content);
ts.flush();
}
void Runner::finishSuite() { void Runner::finishSuite() {
isFinished = true; isFinished = true;
runs = 0; runs = 0;

View File

@ -40,6 +40,7 @@ class Runner: public QObject {
QString getSeed(); QString getSeed();
void print(const QString &fh, const QString &content); void print(const QString &fh, const QString &content);
void printFile(const QString &fileName, const QString &content);
void finishSuite(); void finishSuite();
void ping(); void ping();

View File

@ -24,6 +24,7 @@ module Jasmine
autoload :CoffeeTemplate, 'jasmine/headless/coffee_template' autoload :CoffeeTemplate, 'jasmine/headless/coffee_template'
autoload :JSTemplate, 'jasmine/headless/js_template' autoload :JSTemplate, 'jasmine/headless/js_template'
autoload :JSTTemplateCache, 'jasmine/headless/jst_template_cache'
autoload :JSTTemplate, 'jasmine/headless/jst_template' autoload :JSTTemplate, 'jasmine/headless/jst_template'
autoload :CSSTemplate, 'jasmine/headless/css_template' autoload :CSSTemplate, 'jasmine/headless/css_template'
autoload :NilTemplate, 'jasmine/headless/nil_template' autoload :NilTemplate, 'jasmine/headless/nil_template'
@ -58,4 +59,3 @@ module Jasmine
end end
require 'jasmine/headless/errors' require 'jasmine/headless/errors'

View File

@ -8,7 +8,21 @@ module Jasmine::Headless
alert_bad_format(file) alert_bad_format(file)
return '' return ''
end end
%{<script type="text/javascript">#{super}</script>} begin
data = super
cache = Jasmine::Headless::JSTTemplateCache.new(file, data)
source = cache.handle
if cache.cached?
%{<script type="text/javascript" src="#{cache.cache_file}"></script>
<script type="text/javascript">window.CSTF['#{File.split(cache.cache_file).last}'] = '#{file}';</script>}
else
%{<script type="text/javascript">#{source}</script>}
end
rescue StandardError => e
puts "[%s] Error in compiling file: %s" % [ 'jst'.color(:red), file.color(:yellow) ]
raise e
end
end end
end end
end end

View File

@ -0,0 +1,26 @@
require 'sprockets/jst_processor'
require 'digest/sha1'
require 'fileutils'
module Jasmine
module Headless
class JSTTemplateCache < CacheableAction
def initialize(file, data)
@file = file
@data = data
end
class << self
def cache_type
"jst_template"
end
end
def action
@data
end
end
end
end

View File

@ -49,7 +49,8 @@ module Jasmine::Headless
end end
def jhw_reporters def jhw_reporters
reporters.collect do |reporter, output| reporters.collect do |reporter, report, output|
output = output || "spec/reports"
%{jasmine.getEnv().addReporter(new jasmine.HeadlessReporter.#{reporter}("#{output}"));} %{jasmine.getEnv().addReporter(new jasmine.HeadlessReporter.#{reporter}("#{output}"));}
end.join("\n") end.join("\n")
end end

View File

@ -68,7 +68,6 @@
checker(); checker();
}); });
} }
jasmine.getEnv().execute(); jasmine.getEnv().execute();
} }
</script> </script>