ext 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ January 13, 2012 Version 1.1.2 released
2
+ - Fixes export problem with newer versions of git.
3
+ - Fixes build on Windows, along with a bug that can prevent svn branches from
4
+ working.
5
+
1
6
  January 1, 2012 Version 1.1.1 released
2
7
  - Fixes a bug preventing proper rails 3 project detection
3
8
 
@@ -9,7 +9,7 @@ Dir.entries(File.join(File.dirname(__FILE__), 'extensions')).each do |extension|
9
9
  end
10
10
 
11
11
  module Externals
12
- VERSION = '1.1.1'
12
+ VERSION = '1.1.2'
13
13
  PROJECT_TYPES_DIRECTORY = File.join(File.dirname(__FILE__), '..', 'externals','project_types')
14
14
 
15
15
  # Full commands operate on the main project as well as the externals
@@ -136,10 +136,17 @@ module Externals
136
136
  end
137
137
 
138
138
  def ex *args
139
- do_clone "ex", "--depth 1"
140
-
141
- puts "Exporting #{path}..."
142
- change_to_branch_revision "ex"
139
+ if revision
140
+ # No clean reliable way to clone something that's not a branch or tag.
141
+ # just call up instead.
142
+ up *args
143
+ else
144
+ clone_opts = "--depth 1"
145
+ if branch
146
+ clone_opts << " -b #{branch}"
147
+ end
148
+ do_clone "ex", clone_opts
149
+ end
143
150
  end
144
151
 
145
152
  def up *args
@@ -8,10 +8,14 @@ module Externals
8
8
 
9
9
  public
10
10
  def co *args
11
- # delete path if not empty
12
- rmdir_ie path
11
+ # delete path if empty
12
+ rmdir_ie path unless path == "."
13
13
 
14
- if File.exists? path
14
+ dest = path
15
+ dest = '' if dest == '.'
16
+ dest = "\"#{dest}\"" if dest && !dest.empty?
17
+
18
+ if File.exists? dest
15
19
  up
16
20
  else
17
21
  opts = resolve_opts "co"
@@ -23,7 +27,7 @@ module Externals
23
27
  url = [url, branch].join("/")
24
28
  end
25
29
 
26
- puts(svncocmd = "svn #{opts} co #{url} #{path}")
30
+ puts(svncocmd = "svn #{opts} co #{url} #{dest}")
27
31
  puts `#{svncocmd}`
28
32
  unless $? == 0
29
33
  raise
@@ -45,8 +49,12 @@ module Externals
45
49
  end
46
50
 
47
51
  def ex *args
48
- # delete path if not empty
49
- rmdir_ie path
52
+ # delete path if empty
53
+ rmdir_ie path unless path == "."
54
+
55
+ dest = path
56
+ dest = '' if dest == '.'
57
+ dest = "\"#{dest}\"" if dest && !dest.empty?
50
58
 
51
59
  url = repository
52
60
 
@@ -59,7 +67,7 @@ module Externals
59
67
  url += "@#{revision}"
60
68
  end
61
69
 
62
- puts(svncocmd = "svn #{scm_opts_ex} export #{url} #{path}")
70
+ puts(svncocmd = "svn #{scm_opts_ex} export #{url} #{dest}")
63
71
  puts `#{svncocmd}`
64
72
  end
65
73
 
@@ -152,7 +160,7 @@ module Externals
152
160
  def current_branch
153
161
  require_repository
154
162
 
155
- branch = info_url.gsub(/\/+/, "/").gsub(repository.gsub(/\/+/, "/"), "")
163
+ branch = info_url.downcase.gsub(/\/+/, "/").gsub(repository.downcase.gsub(/\/+/, "/"), "")
156
164
  if branch == repository
157
165
  raise "Could not determine branch from URL #{info_url}.
158
166
  Does not appear have a substring of #{repository}"
@@ -1,4 +1,5 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if $0 == __FILE__
2
+ $:.unshift File.join(File.dirname(__FILE__), 'support') if $0 == __FILE__
2
3
 
3
4
  require 'ext_test_case'
4
5
  require 'externals/ext'
@@ -292,51 +293,87 @@ module Externals
292
293
  end
293
294
 
294
295
  assert File.exists?(File.join('vendor', 'rails', 'activerecord', 'lib'))
296
+
297
+ # Check that engines subproject has content expected for edge branch
298
+ ext = Ext.new
299
+
300
+ assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["branch"], "edge")
301
+ assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["revision"], nil)
302
+
303
+ Dir.chdir File.join("vendor", "plugins", "some_subproject_with_edge") do
304
+ assert(File.read(File.join("lib", "somelib.rb")) =~ /living on the edge/)
305
+ end
295
306
  end
296
307
  end
297
308
  end
298
309
 
299
- def test_uninstall
300
- return
301
- Dir.chdir File.join(root_dir, 'test') do
302
- Dir.chdir 'workdir' do
303
- `mkdir checkout`
304
- Dir.chdir 'checkout' do
305
- #source = File.join(root_dir, 'test', 'workdir', 'rails_app')
306
- source = repository_dir('svn')
307
-
308
- if windows?
309
- source = source.gsub(/\\/, "/")
310
- #source.gsub!(/^[A-Z]:[\/\\]/, "")
311
- end
312
- source = "file:///#{source}"
310
+ def test_export_with_subproject_by_revision
311
+ # figure out the revision to set it to.
312
+ sub_project_revision = nil
313
+ sub_repository = SomeSubprojectWithEdge.new
314
+ sub_repository.prepare
313
315
 
314
- puts "About to checkout #{source}"
315
- Ext.run "checkout", "--svn", source, "rails_app"
316
+ workdir = File.join(root_dir, 'test', "tmp", "workdir", "export")
317
+ rm_rf_ie workdir
318
+ mkdir_p workdir
316
319
 
317
- Dir.chdir 'rails_app' do
318
- mp = Ext.new.main_project
320
+ Dir.chdir workdir do
321
+ `git clone #{sub_repository.clean_dir}`
322
+ raise unless $? == 0
323
+
324
+ Dir.chdir sub_repository.name do
325
+ git_show = `git show origin/master`
326
+ raise unless $? == 0
327
+
328
+ sub_project_revision = /^commit:?\s*([a-f\d]+)$/.match(git_show)[1]
329
+ assert(sub_project_revision =~ /^[a-f\d]+$/)
330
+ end
331
+ end
332
+
333
+ # Change the project to use a revision instead of a branch
334
+ repository = RailsAppSvnRepository.new
335
+ repository.prepare
336
+ repository.mark_dirty
319
337
 
320
- projs = %w(foreign_key_migrations redhillonrails_core acts_as_list)
321
- projs_i = projs.dup
322
- projs_ni = []
338
+ rm_rf_ie workdir
339
+ mkdir_p workdir
323
340
 
324
- #let's uninstall acts_as_list
325
- Ext.run "uninstall", "acts_as_list"
341
+ Dir.chdir workdir do
342
+ Ext.run "checkout", "--svn", repository.clean_url
343
+
344
+ Dir.chdir repository.name do
345
+ assert(sub_project_revision)
346
+ Ext.run "freeze", "some_subproject_with_edge", sub_project_revision
347
+ ext = Ext.new
348
+ ext.configuration["vendor/plugins/some_subproject_with_edge"].rm_setting("branch")
349
+ ext.configuration.write
350
+
351
+ SvnProject.add_all
352
+ `svn commit -m "changed some_subproject_with_edge to use a revision instead"`
353
+ raise unless $? == 0
354
+ end
355
+ end
326
356
 
327
- projs_ni << projs_i.delete('acts_as_list')
357
+ rm_rf_ie workdir
358
+ mkdir_p workdir
359
+ Dir.chdir workdir do
360
+ source = repository.clean_url
328
361
 
329
- mp.assert_e_dne_i_ni proc{|a|assert(a)}, projs, [], projs_i, projs_ni
362
+ puts "About to export #{source}"
363
+ Ext.run "export", "--svn", source, 'rails_app'
330
364
 
331
- Ext.run "uninstall", "-f", "foreign_key_migrations"
365
+ Dir.chdir 'rails_app' do
366
+ assert !File.exists?('.svn')
332
367
 
333
- projs_ni << projs_i.delete('foreign_key_migrations')
368
+ # Check that engines subproject has content expected for sub_project_revision
369
+ ext = Ext.new
334
370
 
335
- projs_dne = []
336
- projs_dne << projs.delete('foreign_key_migrations')
371
+ assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["branch"], nil)
372
+ assert_equal(ext.configuration["vendor/plugins/some_subproject_with_edge"]["revision"], sub_project_revision)
337
373
 
338
- mp.assert_e_dne_i_ni proc{|a|assert(a)}, projs, projs_dne, projs_i, projs_ni
339
- end
374
+ Dir.chdir File.join("vendor", "plugins", "some_subproject_with_edge") do
375
+ assert(File.read(File.join("lib", "somelib.rb")) !~ /living on the edge/)
376
+ assert(File.read(File.join("lib", "somelib.rb")) =~ /'double lulz!'/)
340
377
  end
341
378
  end
342
379
  end
@@ -112,7 +112,7 @@ module Externals
112
112
 
113
113
  repository.mark_dirty
114
114
 
115
- `git commit -m 'froze modules to revision 3'`
115
+ `git commit -m "froze modules to revision 3"`
116
116
  raise unless $? == 0
117
117
  `git push`
118
118
  raise unless $? == 0
@@ -144,7 +144,7 @@ module Externals
144
144
  # Check it in to make sure it sticks
145
145
  `git add .externals`
146
146
  raise unless $? == 0
147
- `git commit -m 'unfreezing modules'`
147
+ `git commit -m "unfreezing modules"`
148
148
  raise unless $? == 0
149
149
  `git push`
150
150
  raise unless $? == 0
@@ -1,4 +1,5 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if $0 == __FILE__
2
+ $:.unshift File.join(File.dirname(__FILE__), 'support') if $0 == __FILE__
2
3
  require 'ext_test_case'
3
4
  require 'externals/ext'
4
5
  require 'rails_app_svn_branches'
@@ -257,6 +258,7 @@ module Externals
257
258
  assert File.exists?(File.join(repository.clean_dir, "db"))
258
259
 
259
260
  workdir = File.join(root_dir, 'test', "tmp", "workdir", mode, "svn", "branch_test")
261
+ rm_rf workdir
260
262
  mkdir_p workdir
261
263
 
262
264
  if File.exists?(File.join(workdir,"rails_app"))
@@ -276,7 +278,7 @@ module Externals
276
278
  assert !File.exists?('.svn')
277
279
 
278
280
  %w(redhillonrails_core).each do |proj|
279
- assert !File.exists?(File.join('vendor', 'plugins',proj, '.svn'))
281
+ assert !File.exists?(File.join('vendor', 'plugins', proj, '.svn'))
280
282
  end
281
283
 
282
284
  %w(redhillonrails_core acts_as_list engines).each do |proj|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ext
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 1
10
- version: 1.1.1
9
+ - 2
10
+ version: 1.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Miles Georgi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-12-30 00:00:00 Z
18
+ date: 2013-01-13 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: |-