From fda1a847f5a3f73aa4a0feacdd0129731dafe253 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 20 Apr 2012 01:08:33 +0600 Subject: [PATCH] [refs #90] some tests and questions --- app/models/pull_request.rb | 17 ++- db/schema.rb | 107 +++++++++--------- lib/tasks/reset_db.rake | 11 ++ spec/models/comment_for_commit_spec.rb | 12 +- spec/models/pull_request_spec.rb | 54 ++++++--- spec/tests.git/HEAD | 2 +- spec/tests.git/config | 9 +- spec/tests.git/index | Bin 192 -> 0 bytes spec/tests.git/info/refs | 5 + spec/tests.git/logs/HEAD | 2 - spec/tests.git/logs/refs/heads/master | 1 - .../3b/efc54229f8e25165be593e67f33fb9a8495374 | 2 + spec/tests.git/objects/info/packs | 2 + ...ad35f874bea18d5f133a59210e4f80a1e81c17.idx | Bin 0 -> 1604 bytes ...d35f874bea18d5f133a59210e4f80a1e81c17.pack | Bin 0 -> 1300 bytes ...85f74f028bf49d2611c9fea56570138a196143.idx | Bin 3844 -> 0 bytes ...5f74f028bf49d2611c9fea56570138a196143.pack | Bin 24472 -> 0 bytes spec/tests.git/packed-refs | 8 +- spec/tests.git/refs/heads/master | 1 - spec/tests.git/refs/remotes/origin/HEAD | 1 - 20 files changed, 136 insertions(+), 98 deletions(-) create mode 100644 lib/tasks/reset_db.rake delete mode 100644 spec/tests.git/index create mode 100644 spec/tests.git/info/refs delete mode 100644 spec/tests.git/logs/HEAD delete mode 100644 spec/tests.git/logs/refs/heads/master create mode 100644 spec/tests.git/objects/3b/efc54229f8e25165be593e67f33fb9a8495374 create mode 100644 spec/tests.git/objects/info/packs create mode 100644 spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.idx create mode 100644 spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.pack delete mode 100644 spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.idx delete mode 100644 spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.pack delete mode 100644 spec/tests.git/refs/heads/master delete mode 100644 spec/tests.git/refs/remotes/origin/HEAD diff --git a/app/models/pull_request.rb b/app/models/pull_request.rb index 24599e243..c40b8cee8 100644 --- a/app/models/pull_request.rb +++ b/app/models/pull_request.rb @@ -14,7 +14,7 @@ class PullRequest < Issue end event :block do - transition [:open, :ready] => :block + transition [:open, :ready] => :blocked end event :merging do @@ -35,7 +35,7 @@ class PullRequest < Issue end def check - if ret = merge + if ret = merge #FIXME already up-to-date... system("cd #{path} && git reset --hard HEAD^") # remove merge commit ready else @@ -76,14 +76,11 @@ class PullRequest < Issue unless git.exist? FileUtils.mkdir_p(path) - Dir.chdir(path) do - system("git clone --local --no-hardlinks #{project.path} #{path}") - end - else - Dir.chdir(path) do - [data[:base_branch], data[:head_branch]].each do |branch| - system "git checkout #{branch} && git pull origin #{branch}" - end + system("git clone --local --no-hardlinks #{project.path} #{path}") + end + Dir.chdir(path) do + [data[:base_branch], data[:head_branch]].each do |branch| + system "git checkout #{branch} && git pull origin #{branch}" end end # TODO catch errors diff --git a/db/schema.rb b/db/schema.rb index 0b20e0d3a..7d911ec3d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -17,14 +17,14 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "user_id", :null => false t.string "kind" t.text "data" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "arches", :force => true do |t| t.string "name", :null => false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end add_index "arches", ["name"], :name => "index_arches_on_name", :unique => true @@ -33,8 +33,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "user_id" t.string "provider" t.string "uid" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end add_index "authentications", ["provider", "uid"], :name => "index_authentications_on_provider_and_uid", :unique => true @@ -45,8 +45,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "level" t.integer "status" t.integer "build_list_id" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "version" end @@ -60,8 +60,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "project_id" t.integer "arch_id" t.datetime "notified_at" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.boolean "is_circle", :default => false t.text "additional_repos" t.string "name" @@ -87,8 +87,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "commentable_type" t.integer "user_id" t.text "body" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.decimal "commentable_id", :precision => 50, :scale => 0 t.integer "project_id" end @@ -102,8 +102,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.datetime "locked_at" t.datetime "failed_at" t.string "locked_by" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "queue", :default => "default" end @@ -121,14 +121,14 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "controller" t.string "action" t.text "message" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "groups", :force => true do |t| t.integer "owner_id" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "uname" t.integer "own_projects_count", :default => 0, :null => false t.text "description" @@ -141,11 +141,14 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "title" t.text "body" t.string "status", :default => "open" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "user_id" t.datetime "closed_at" t.integer "closed_by" + t.string "type" + t.string "state" + t.text "data", :default => "0", :null => false end add_index "issues", ["project_id", "serial_id"], :name => "index_issues_on_project_id_and_serial_id", :unique => true @@ -173,8 +176,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "description" t.string "name", :null => false t.integer "parent_platform_id" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.boolean "released", :default => false, :null => false t.integer "owner_id" t.string "owner_type" @@ -189,8 +192,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "platform_id" t.string "login" t.string "password" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "user_id" end @@ -198,8 +201,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "product_id" t.integer "status", :default => 2, :null => false t.datetime "notified_at" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end add_index "product_build_lists", ["product_id"], :name => "index_product_build_lists_on_product_id" @@ -207,8 +210,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do create_table "products", :force => true do |t| t.string "name", :null => false t.integer "platform_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.text "build_script" t.text "counter" t.text "ks" @@ -227,8 +230,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "name" t.string "version" t.datetime "file_mtime" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "platform_id" end @@ -237,14 +240,14 @@ ActiveRecord::Schema.define(:version => 20120418100619) do create_table "project_to_repositories", :force => true do |t| t.integer "project_id" t.integer "repository_id" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "projects", :force => true do |t| t.string "name" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "owner_id" t.string "owner_type" t.string "visibility", :default => "open" @@ -262,6 +265,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.integer "build_count", :default => 0, :null => false end + add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true, :case_sensitive => false + create_table "register_requests", :force => true do |t| t.string "name" t.string "email" @@ -282,16 +287,16 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "object_type" t.integer "target_id" t.string "target_type" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "role" end create_table "repositories", :force => true do |t| t.string "description", :null => false t.integer "platform_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "name", :null => false end @@ -302,8 +307,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.boolean "new_comment_reply", :default => true t.boolean "new_issue", :default => true t.boolean "issue_assign", :default => true - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.boolean "new_comment_commit_owner", :default => true t.boolean "new_comment_commit_repo_owner", :default => true t.boolean "new_comment_commit_commentor", :default => true @@ -312,8 +317,8 @@ ActiveRecord::Schema.define(:version => 20120418100619) do create_table "subscribes", :force => true do |t| t.string "subscribeable_type" t.integer "user_id" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.boolean "status", :default => true t.integer "project_id" t.decimal "subscribeable_id", :precision => 50, :scale => 0 @@ -321,21 +326,21 @@ ActiveRecord::Schema.define(:version => 20120418100619) do create_table "users", :force => true do |t| t.string "name" - t.string "email", :default => "", :null => false - t.string "encrypted_password", :limit => 128, :default => "", :null => false - t.string "password_salt", :default => "", :null => false + t.string "email", :default => "", :null => false + t.string "encrypted_password", :default => "", :null => false t.string "reset_password_token" + t.datetime "reset_password_sent_at" t.datetime "remember_created_at" - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.text "ssh_key" t.string "uname" t.string "role" - t.string "language", :default => "en" + t.string "language", :default => "en" + t.integer "own_projects_count", :default => 0, :null => false t.string "confirmation_token" t.datetime "confirmed_at" t.datetime "confirmation_sent_at" - t.integer "own_projects_count", :default => 0, :null => false - t.datetime "reset_password_sent_at" t.text "professional_experience" t.string "site" t.string "company" @@ -344,7 +349,7 @@ ActiveRecord::Schema.define(:version => 20120418100619) do t.string "avatar_content_type" t.integer "avatar_file_size" t.datetime "avatar_updated_at" - t.integer "failed_attempts", :default => 0 + t.integer "failed_attempts", :default => 0 t.string "unlock_token" t.datetime "locked_at" t.string "authentication_token" diff --git a/lib/tasks/reset_db.rake b/lib/tasks/reset_db.rake new file mode 100644 index 000000000..b3ebf98b2 --- /dev/null +++ b/lib/tasks/reset_db.rake @@ -0,0 +1,11 @@ +namespace :db do + desc "Drop, create, migrate then seed the database" + task :reset_db => :environment do + Rake::Task['db:drop'].invoke + Rake::Task['db:create'].invoke + Rake::Task['db:migrate'].invoke + Rake::Task['db:fixtures:load'].invoke + Rake::Task['db:seed'].invoke + end +end + diff --git a/spec/models/comment_for_commit_spec.rb b/spec/models/comment_for_commit_spec.rb index 3f4234648..4a1a4dd53 100644 --- a/spec/models/comment_for_commit_spec.rb +++ b/spec/models/comment_for_commit_spec.rb @@ -298,7 +298,8 @@ describe Comment do context 'for committer' do it 'should send an e-mail' do - @simple.update_attribute :email, 'code@tpope.net' + @simple.subscribes.destroy_all + @simple.update_attribute :email, 'test@test.test' comment = create_comment(@user) ActionMailer::Base.deliveries.count.should == 1 ActionMailer::Base.deliveries.last.to.include?(@simple.email).should == true @@ -306,21 +307,22 @@ describe Comment do it 'should send a one e-mail when subscribed to commit' do Subscribe.subscribe_to_commit @subscribe_params.merge(:user_id => @simple.id) - @simple.update_attribute :email, 'code@tpope.net' + @simple.update_attribute :email, 'test@test.test' comment = create_comment(@user) ActionMailer::Base.deliveries.count.should == 1 ActionMailer::Base.deliveries.last.to.include?(@simple.email).should == true end it 'should not send an e-mail for own comment' do - @simple.update_attribute :email, 'code@tpope.net' + @simple.subscribes.destroy_all + @simple.update_attribute :email, 'test@test.test' comment = create_comment(@simple) ActionMailer::Base.deliveries.count.should == 0 end it 'should not send an e-mail if global notify off' do @project.owner.notifier.update_attribute :can_notify, false - @simple.update_attribute :email, 'code@tpope.net' + @simple.update_attribute :email, 'test@test.test' @simple.notifier.update_attribute :can_notify, false comment = create_comment(@user) ActionMailer::Base.deliveries.count.should == 0 @@ -329,7 +331,7 @@ describe Comment do it 'should not send an e-mail if notify for my commits off' do Comment.destroy_all @simple.notifier.update_attribute :new_comment_commit_owner, false - @simple.update_attribute :email, 'code@tpope.net' + @simple.update_attribute :email, 'test@test.test' comment = create_comment(@user) ActionMailer::Base.deliveries.count.should == 0 end diff --git a/spec/models/pull_request_spec.rb b/spec/models/pull_request_spec.rb index 74d7791b1..80a2de044 100644 --- a/spec/models/pull_request_spec.rb +++ b/spec/models/pull_request_spec.rb @@ -1,21 +1,49 @@ # -*- encoding : utf-8 -*- require 'spec_helper' +def set_data_for_pull + @ability = Ability.new(@user) + + @project = FactoryGirl.create(:project, :owner => @user) + %x(cp -Rf #{Rails.root}/spec/tests.git/* #{@project.path}) # maybe FIXME ? + + @clone_path = File.join(APP_CONFIG['root_path'], 'repo_clone', @project.id.to_s) + FileUtils.mkdir_p(@clone_path) + + + any_instance_of(Project, :versions => ['v1.0', 'v2.0']) +end + describe PullRequest do + context 'for owner user' do + before (:all) do + stub_rsync_methods + @user = FactoryGirl.create(:user) + set_data_for_pull + @pull = @project.pull_requests.new(:title => 'test', :body => 'testing') + @pull.user = @user + @pull.data = {:base_branch => 'master', :head_branch => 'non_conflicts'} + @pull.save + end - #~ context 'when create with same owner that platform' do - #~ before (:each) do - #~ stub_rsync_methods - #~ @platform = FactoryGirl.create(:platform) - #~ @params = {:name => 'tst_platform', :description => 'test platform'} - #~ end + it 'master should can be merged with non_conflicts branch' do + @pull.check + @pull.state.should == 'ready' + end + + it 'master should not be merged with conflicts branch' do + @pull.data[:head_branch] = 'conflicts' + @pull.check + @pull.state.should == 'blocked' + end + + it 'should not be merged when already up-to-date branches' do + @pull.data[:head_branch] = 'master' + @pull.check + @pull.state.should == 'blocked' # FIXME + end + end - #~ it 'it should increase Repository.count by 1' do - #~ rep = Repository.create(@params) {|r| r.platform = @platform} - #~ @platform.repositories.count.should eql(1) - #~ end - #~ end - before(:all) do stub_rsync_methods Platform.delete_all @@ -28,7 +56,7 @@ describe PullRequest do it { should belong_to(:project) } it { should have_many(:comments)} - + it { should validate_presence_of(:title)} #it { should validate_uniqueness_of(:serial_id).scoped_to(:project_id) } it { should validate_presence_of(:body) } diff --git a/spec/tests.git/HEAD b/spec/tests.git/HEAD index df9ee5473..cb089cd89 100644 --- a/spec/tests.git/HEAD +++ b/spec/tests.git/HEAD @@ -1 +1 @@ -bdc8b580b5b583aeb43efb19aac2ab8ce5566dff +ref: refs/heads/master diff --git a/spec/tests.git/config b/spec/tests.git/config index d38f8c6fe..07d359d07 100644 --- a/spec/tests.git/config +++ b/spec/tests.git/config @@ -1,11 +1,4 @@ [core] repositoryformatversion = 0 filemode = true - bare = false - logallrefupdates = true -[remote "origin"] - fetch = +refs/heads/*:refs/remotes/origin/* - url = git://github.com/tpope/vim-ragtag.git -[branch "master"] - remote = origin - merge = refs/heads/master + bare = true diff --git a/spec/tests.git/index b/spec/tests.git/index deleted file mode 100644 index 29cca27d49d6f2554fc33e2e5e1a79a665961080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmZ?q402{*U|<4af0l-MK$-zYGca&4GvqkvGcYtRVPIf>0l|Ds5ug6KrR<(*ZXfz= z&fKOt!(Y)gYz%xU`N{f4iRmSY>3Ss 1325695134 +0600 clone: from git://github.com/tpope/vim-ragtag.git -bdc8b580b5b583aeb43efb19aac2ab8ce5566dff bdc8b580b5b583aeb43efb19aac2ab8ce5566dff Alexander 1325695134 +0600 checkout: moving from master to bdc8b580b5b583aeb43efb19aac2ab8ce5566dff diff --git a/spec/tests.git/logs/refs/heads/master b/spec/tests.git/logs/refs/heads/master deleted file mode 100644 index 9219de536..000000000 --- a/spec/tests.git/logs/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 bdc8b580b5b583aeb43efb19aac2ab8ce5566dff Alexander 1325695134 +0600 clone: from git://github.com/tpope/vim-ragtag.git diff --git a/spec/tests.git/objects/3b/efc54229f8e25165be593e67f33fb9a8495374 b/spec/tests.git/objects/3b/efc54229f8e25165be593e67f33fb9a8495374 new file mode 100644 index 000000000..e76437b56 --- /dev/null +++ b/spec/tests.git/objects/3b/efc54229f8e25165be593e67f33fb9a8495374 @@ -0,0 +1,2 @@ +xM +0a9L22I&E[im=g _]y@-\ZE+3C$+:M,(')=|!lD h3^C9\Ftpŀhп3-0~ \>y \ No newline at end of file diff --git a/spec/tests.git/objects/info/packs b/spec/tests.git/objects/info/packs new file mode 100644 index 000000000..870d85fea --- /dev/null +++ b/spec/tests.git/objects/info/packs @@ -0,0 +1,2 @@ +P pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.pack + diff --git a/spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.idx b/spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.idx new file mode 100644 index 0000000000000000000000000000000000000000..6cf3769c554b34aeaa557f77fd59a92f12025343 GIT binary patch literal 1604 zcmexg;-AdGz`z8=j5shzj#SJH)PoPR0OcvctU&$rz-&N!aA9_!93_|osGk#xxqvh- z%ng*I1oHs(N8dmFc2%5qaeQdrfwCh0i*tOKwO60g6Z+Q|&$lwJ)qUkTg~LjxD_yVc5&Uwm z)$Po_kNJ14&U^ghc9ijX==(M^+cEC$i)xnXvlDLe7VLM3Q5HJF>b-7`h~(`zZN_gG z&97lMj6GzOzgj@)9~ZAwp&RR#-?a7E%n53*Cw+PL`}m_Y&OG*V zF|Xu1{Hy1!>)12FaAKWPS!tBouBS~A9P{V9wqM!AtCYVmp-zo^f%i!#|4UbYOr7y0 znmcG-^06)Ex9xoxI<&$(0);yV9 zv)tRzXA=K!(Mg{+OtJqw|Iqf5#@bo?W>0_8v}4iLFVhTjHu1gK_4iJ^PHy#y`1&LM zq81zG+NG~{ePJ%okTBnP>Ew#L`q^77qH2HaO@7+pb@y~{>CBv4v6XSWN^kvg3YGf< z&92N|#r48e?oIiPD~3B=2QMer72ngQm0MpYoY0LY#Mln1g|l!4e1C}s_$D}gu-sAemW z{|(6A1El8y@x${6*z&*M+s}XQ|GW)5G*@Nrk2`7cTK~)rt0h9uuH>2t&2zH)wWZN4 F2LNV?5KaI9 literal 0 HcmV?d00001 diff --git a/spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.pack b/spec/tests.git/objects/pack/pack-09ad35f874bea18d5f133a59210e4f80a1e81c17.pack new file mode 100644 index 0000000000000000000000000000000000000000..974873a7b2e670698378d1241e72f4d6e58279e2 GIT binary patch literal 1300 zcmWG=boORoU|<4b;YmCdb9zrZavd@dV7*Z5H*v3m{Y#UV4ISa0X=*oILtk;o#aA(# z=YOv;?^c=S;mbYUFVieEI*YyVY1{&ywJ(|l;&QjQyNhL(YMfltnVQ&;{mx3^O3=Kb z)pItBw0!&cySP6uzkmAS+XsI>kh*Mg(P@su#}+1*%DmgJ^6J|SuI2w=8K8+XX ziZk9^Oojrk7c0X8iygK8^L6Z)>b2C#JVWW_j{38FbLO0Uy4TXhA$`90Q=Qfm-6t>p zdQ~fMOk&Z&sFI}P8CPewZQ<;knWWqIS1a1d=i(o^39^~Vyhl@b*h9X|td=);I;SAo zPVD+o*)3c1iaE_&xY=Be{{3q8Y|4K2R~Z+onBT3neUzx-#pxbN+!(%l_Bq^LCj{o3b@!o#rO4g^|6@ z69Qcyrc66B<e3E^Eg57IS7m>9)=6m z`<1>oF3I+hp78MM`4d@3nu<3Z{V#u1{>Ib0^YYUU^c-rle12ldoOz=0R^2P78igMe zQB7NH_~QKi*KB#a53j9$A7dqaWXg(wiP{GndL&-$(m8wAul>Uhv;1}PKdu)rY(1!d za2haS)SfovIt=pv-Q^$RG`e(7noYU1`o_jPX&ymBU;iDwu=BLEU5#}}ZHUMU))nVw zPN+J3%r^C$XQy_^u{A%%~7uIGL{yzmw9|zA?KQ{P0)zbUPvZb@aQcp95a+$n|)O3x~ zVlggUUv$IHMp#*FK@<;bKvTx`d4W5g-rvL+pg*xmd;Z4?xw;$GKTdx!v-DqQw`_`P zr_it91p;?I-Pu;k^ZWOMwD|AVJM?!LTIIcBYGSLHGyAy3^g<_w%^PRFJd$85sgRnr zXhCj5TEc;&PiIb#oHTRB;t6x+&z>E5h?U{33iq@{OcisCO$-c-4FfrfN=rVLrr!Aa z-EWUy-q+3_zm)$i5|e&*Yw7wjR)!-Rc;46n)jlzLWc1AFq0v(#W8>#c47^Ji?_-)# zk*Ifmg2DZYmruHO|GF8ivnZ?njV~L++Hjr%8=x5vjNqm)F>uae%)vCFBYf3`-qO?g zx2kfUv249Qd7sVi+CPE}o38WK+M>Dw=m_pvj4LsXcp)??;>44sEB5}}c5vV3+%t>p z?bmZMF)Rq>-eZMq1QP?>D@G$s{Q~#CeOP~7{rk%OIlakW#WO2gbxh~*G3@`r(*bgV z!4qU(@Q5?c#WW(Jde*+cZ|{GF-`C%7d->+G7nzA)v!od=Y~*`{8kUcZKw+uCxcU46 Yw*2q+_Vb_nKX1bh%~hHE<4#%t0Q8+{Jpcdz literal 0 HcmV?d00001 diff --git a/spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.idx b/spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.idx deleted file mode 100644 index 46bd6036da21943b3ae5a3be1b6c0de1b3c0973f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3844 zcmbuCc`(&~7soGIQnD{sq13g;MadqQYbWAbZq_U%)X&yMwya4=gc6cU*|YCkvhNWs zWZx-SBjPz`m@&WUY37;d&b;P*KIgNX@40`y&-P6%O9TQz4D9@N^ly;B{@);l{r!-^ z`hS5O&hKz=7Yfil4ns`&UpNAJDuCt>&_a$LVAzEbbU#e6-h&z9KY@h&epq0AbeChG ze}WbAY`d_79^c0ai2no!M%(;M?Ui=nnk*5P%r{F9cz| zhY-X&2=8(RbceIRxm`p-#deVZ-9ZXCzl#j$4zd8|FUY~3{2#zVZVv^B6#=DPltFh; z-9;Vr!Y-PiT7TdodADC3`qV$75LsRkD&VB-={B{dUEQTm{={41y1G^%T@oOV9YSBR&A_Mh75M>1AIkNhnY zsyL&vXOpM}8O5cf81Vry^%j2f+vfbf(sEwg9A_O@uYPvsiaqD-8#^63z-JIjf67$B zn&zhURz@8uuIyWqY213E0q1FMs$;I!MJV9|HRqT&sU8#>>hb6)jt<5+c)ROSeWtxr zNl?T@_3)T{44!4b>L@+8l)vVhAtB&7{SU9O%h_d3=KeEg7sqC5Z8y~$Qbq-p1ixP= zE)=z3l29*~Gh4**Ts|w5wUvPo$eTO3%^mX5;(?W}jXAq8i%y)hUs!5UiKWNWNLd0! zS$2W&Dp`ZlF)i_!ku}j%!Td9wB{VCd@2X^&+gI-!yvI8Jmi3hGq;PT*Lp{B*p`i7M zA9H@#4Tp*_3DaW~3-PAo=civn)4Z=H5o+!7OzK(`$F@aeUP~M9Oiw`Zyc+p|VLfdn zIWxPYkQz2lt>C4ya)p=y!|E?6b8;@#7-LFX^yccR*Ata)xVz!P-qz-6|~iahdaQUr6V=MzrN_H&WDV9gb>daT|&WKA-**`!&XC95q_t)7(lr;g0=o zYP?)CtKps9u*zlMsZ^Z7?p3-?H9u33(LS4|z_z3*6KEc*?JZ$;@TyYvVcrWZrQiJt zo{HwoPJS!Lhp~R#SW+W&lH0khZ+E*>nge5lqz~XZ2L@8V_42;Y>i(^G=TOiK_Ya%% zcT-m9^#`+cx3dY))s%zP5$G-kd7127(#jLfJlX1RRv1Hy@vP1yDDobP(9Q>Ri%Jga z^>LwMQ|@I|nR15w_?tQg+vc3| z=vR72Ki!uQE8@uT^%7wbm5?=|mJbnD=ba}%5o{$R^eQU(z9_Oc*;#h5`ru5-KPg#7 zm^?!S9Yy|@O{I&TwQ<)~Bsy^U;b|4J+9-Ch<|vPtZnN`<3%rxxA9m-HIMyEz$*>`- z6vW3LeN>CniK5&1W@*!MBZK62$*U#?YX`+iNFeuA^37&2g!PeCzWqkQxg=4o1i5;g$Oqrqf~*bA<|&o;^Le6s)gfSB_;}eX~*T+-F(c+zoWI=QA35$Vb|= zn1p7zCcQsr%6pv3ljuIt%bnBAZxK$`(aY{@N)b*-%3#l6TMBsp!czYX0M#@n1;kgacdXEff(9%!{;d?W90<9L$?yD)2an3l2$`r=3$XVYvwEc z+Nhct#d@NM$+fBsHeA}!N)N^LfUc9Tsf#B}^fs95Y;oeZObNey(JSg@?M56uv69iDm?-$PV`^y7wU|4i{y1Qk@)oR zEL6-`2Rk;Yzj$8D8bx1k=70-EBxkoH1!t~{u()w(`!ML#Lt2L*rVi!k3AGKT>s1w@@-Ce+pL3QDt-xng zkFAr6ToKL8mApveMO8Ubvcbz!ab#st6}>idJ`#<+{(e4x)^44gRq_VDBV@U57hua5o+9 z!Hi%CeKEtE)T0Q*0r1~)P0$lHjB~!w3;1+-IA;L=iNP<}gIUfr5PBsb5F#{CBMf@Y z0Z$5fij&X-^i0DG>ugY{g@gaq2y%D~yuAuN%)_^UUpHKaxBQ`Z=n;P!t}nq`j8Ln; t)taI4gVd$h#Zjdmv9^eU6yXMB(#h@n4CR$h%!^MvCV~$sXECMJ{09@dM(_Xt diff --git a/spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.pack b/spec/tests.git/objects/pack/pack-5185f74f028bf49d2611c9fea56570138a196143.pack deleted file mode 100644 index 59398297275807cd2dc4c0a68892e2a03581f68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24472 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