namespace :test do
namespace :functionals do
desc "Generate functional testing skeleton"
task :generate => :environment do
dir = ENV['dir']
if dir.blank?
puts "Warning! \nNothing is done, please identify the controllers directory! \ne.g. rake test:functionals:generate dir=contents/courses"
else
Gen.new.build(File.expand_path('app/controllers/'+dir, RAILS_ROOT))
end
end
end
end
class Gen
def build(dir)
Dir[dir + '/*'].each{|f|
File.directory?(f) ? build(f) : parse_controller_file(f)
}
end
def parse_controller_file(file)
@clauses = ["all_fixtures"]
@actions = [{:action => "setup", :text => " login_as users(:admin)"}]
action_name, params, response = nil, nil, "success"
File.open(file).each{|line|
break if line =~ /private/
# A new action begins, store the info of privious action
if line =~ /def\s/
create_action(action_name, params, response)
action_name, params, response = $'.chop.strip , [], "success"
else
#get needed params and response
if line =~/params\[:\w*\]/
para = $&.gsub(/params\[|\]/,"")
params << (para) unless params.nil? or params.include?(para)
end
response = "redirect" if line =~ /redirect_to/
end
}
create_action(action_name, params, response)
write_test_file(file)
end
def write_test_file(file)
test_file_name = file.gsub(/app\/controllers/,"#{$`}test/functional#{$'}").gsub(".rb","_test.rb")
return unless File.exist?(test_file_name)
to_write = []
test_file = File.open(test_file_name)
ignore = false
test_file.each{|line|
if line =~ /def\s/
action_name = $'.chop.strip
ignore = action_name =~ /test_truth/ #delete test_truth
#don't append actions that have exist
if @actions.map{|t| t[:action]}.include?(action_name)
@actions = @actions.select{|t| t[:action]!=action_name}
end
end
line = line.chop
@clauses.delete(line.strip)
to_write << line unless ignore
}
@clauses = @clauses.map{|t| " "+t}
@actions.each{|t|
@clauses << %{ def #{t[:action]}\n#{t[:text]}\n end}
}
to_write.insert(to_write.size-1, @clauses.join("\n\n")) unless @clauses.join("\n\n").blank?
to_write[to_write.size-1] = "end"
test_file.close
File.open(test_file_name, 'w') do |f|
f.puts to_write.join("\n")
end
end
def create_action(action_name, params, response)
unless action_name.nil?
method = ["create", "update", "destroy"].include?(action_name) ? "post" : "get"
text = %{ #{method} :#{action_name}#{', '+ params.map{|t| t+" =>''"}.join(", ") unless params.blank?}\n assert_response :#{response}}
@actions << {:action=> "test_"+action_name, :text=>text}
end
end
end
分享到:
相关推荐
C++小游戏 Skeleton (VisualCPP代码作业)C++小游戏 Skeleton (VisualCPP代码作业)C++小游戏 Skeleton (VisualCPP代码作业)C++小游戏 Skeleton (VisualCPP代码作业)C++小游戏 Skeleton (VisualCPP代码作业)C++小游戏 ...
USB Skeleton是Linux操作系统下用于USB设备驱动开发的一个基础框架,它是开发者进行自定义USB设备驱动程序编写时的一个起点。这个框架提供了基本的USB驱动结构,包括枚举、配置、接口选择、端点处理等核心功能,让...
骨骼查看器(Skeleton Viewer)是一个加载和显示骨骼数据的工具。它能用于测试 Spine 导出的骨骼数据在实际运行时的渲染效果。
人体行为识别open-mmlab/mmskeleton中的kinetics-skeleton数据集,包含了kinetics_train_label.json,kinetics_val_label.json,还有生成之前的各个视频的json文件
skeletonViewer.jar
USB Skeleton源代码是一个开源项目,遵循GPL(GNU General Public License)协议,旨在为开发者提供一个基础框架,用于理解和开发USB设备驱动程序。这个框架对于学习USB通信协议、驱动程序开发,以及创建自己的USB...
在深入探讨"examples-kinetics-skeleton.zip"这个压缩包文件之前,让我们先理解一下相关的关键概念和技术。ST-GCN(Spatial-Temporal Graph Convolutional Network)是一种用于行为识别的深度学习模型,它利用图卷积...
骨架布局(Skeleton Screen)在IT行业中,特别是在网页和应用程序设计中,是一种常用的技术,用于提供一个加载中的界面,展示内容即将出现的结构,从而改善用户体验。骨架布局通常在数据加载时显示,给予用户一种...
### Spine 骨骼动画查看器 Skeleton Viewer 官方文档中文版 #### 总述 (Overview) **Spine 骨骼动画查看器(Skeleton Viewer)** 是一款由 Esoteric Software 开发的专用工具,主要用于加载和显示 Spine 导出的...
《Kinetics-Skeleton 数据集详解及其在行为识别中的应用》 Kinetics-Skeleton 是一个针对人体骨架数据的行为识别数据集,其主要目的是推动基于深度学习的行为识别技术的发展。该数据集提供了一种标准化的方式来表示...
在MATLAB中进行3D骨架(Skeleton3D)开发是一项涉及图像处理和计算机图形学的技术。骨架化是图像分析中的一个重要步骤,它旨在提取物体的主要结构,通常用于形状描述、特征提取以及对象识别等任务。"Skeleton3D"项目...
【前端项目-skeleton-framework.zip】是一个包含前端开发框架的压缩包,主要针对移动设备优化,设计为简洁且响应迅速。这个框架,名为"Skeleton Framework",是为快速构建移动优先的网页应用而创建的,旨在简化开发...
Kinect Skeleton State Check 是一个基于微软Kinect设备的程序开发技术,主要涉及到使用C#语言对Kinect传感器捕获的骨架数据进行处理和分析。在本文中,我们将深入探讨这一主题,了解如何通过Kinect获取骨架状态信息...
【前端开源库-init-skeleton】是一个专为前端开发者设计的开源工具,它的核心目标是提供一个基础的项目模板,帮助开发者快速启动新的前端应用。这个工具被称为“骨架”(skeleton),因为它为新项目提供了基本的框架...
骨骼查看器(Skeleton Viewer)是一个加载和显示骨骼数据的工具。它能用于测试 Spine 导出的骨骼数据在实际运行时的渲染效果。
这个“matlab开发-Skeleton2D”项目提供了一个基本示例,帮助用户理解并实现这一过程。在硬件接口和物联网领域,这种技术可以用于图像数据的高效传输和分析。 首先,我们要了解2D骨架提取的基本原理。它通常包括...
kinetics-skeleton训练集。太大了,拆成十个上传。
`laravel-skeleton` 提供了一个基本的项目结构,方便开发者快速启动 Laravel 项目。 在 `Laravel-skeleton` 中,`ORM(对象关系映射)`是 Laravel 的核心组件之一,它被称为 Eloquent ORM。Eloquent 提供了一种简单...
#测试骨架 Cucumber/Selenium测试的骨架项目 ##跑步说明 该项目使用 gradle 运行(使用 v2.4 测试): gradle cucumber -DisBrowserStackTest=false -DisMobileTest=false -Dtags="~@wip