12 июля 2009

Github'но-тестировочное

Смотрел я тут скринкаст на тему ObjC, было там немного про тестирование, и понял я - дальше так нельзя - тестировать. Полез в гугль (хотя кхе, туда я за этим давно залезал, руки не доходили применить), тот меня выкинул сначала на одного из коммитеров в Camping с его тестсьюитом 'camping/test', а потом и на mosquito в репозитарии автора того самого скринкаста. Скажу сразу, москит отстал от жизни и не работает, зато в том репозитории нашлось много полезного: ruby-style категории над основными Cocoa классами, скрипты для правильной максимизации окна (очень пригождается с MacVim) и куча пищи для размышлений.

Заодно накидал Rake task для дампа фикстур из используемого кемпингом (и только кемпингом, забудем про Rails, аминь) sqlite:

 1 require 'rake'
 2
 3 require 'rubygems'
 4 require 'activerecord'
 5
 6 desc "Generate fixtures for all tables of current project"
 7 task :generate_fixtures do
 8   database = "#{ENV['HOME']}/.camping.db"
 9   ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => database)
10   project = File.basename(File.expand_path('.')).downcase
11   tables = `sqlite3 #{database} ".tables"`.split(' ').reject{ |t| t.include?("sessions") || t.include?("schema_infos")}.collect{|t| t if t.include? project}
12   tables.each do |table_name|
13     File.open("test/fixtures/#{table_name}.yml", 'w') do |file|
14       data = ActiveRecord::Base.connection.select_all("SELECT * FROM #{table_name}")
15       rows = {}
16
17       data.each do |record|
18         rows["#{table_name}_#{record['id']}"] = record
19       end
20
21       file.write rows.to_yaml
22     end
23   end
24 end

Там много 'длиннострочников', но понять можно. Дампит все таблицы используя в качестве имени проекта имя текущей директории.
Не могу не пнуть попутно юродивый svn - перед тестированием всего и вся разложил сорцы по полочкам, так svn положенный в другое место файл считает новым, в то время как гит даже частично патченный и перемещённый после этого файл понимает и считает именно перемещённым.
Думается, пора покрыть тестами, оформить и выкинуть на гитхаб в виде библиотечки часть одного интересного проекта, но это уже как руки дойдут.
Stay tuned.

Комментариев нет: