Смотрел я тут скринкаст на тему ObjC, было там немного про тестирование, и понял я - дальше так нельзя - тестировать. Полез в гугль (хотя кхе, туда я за этим давно залезал, руки не доходили применить), тот меня выкинул сначала на одного из коммитеров в Camping с его тестсьюитом 'camping/test', а потом и на mosquito в репозитарии автора того самого скринкаста. Скажу сразу, москит отстал от жизни и не работает, зато в том репозитории нашлось много полезного: ruby-style категории над основными Cocoa классами, скрипты для правильной максимизации окна (очень пригождается с MacVim) и куча пищи для размышлений.
Заодно накидал Rake task для дампа фикстур из используемого кемпингом (и только кемпингом, забудем про Rails, аминь) sqlite:
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.
Комментариев нет:
Отправить комментарий