jbundler 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,78 @@
1
+ #TODO get 'spec' into $LOAD by minispec-maven-plugin
2
+ load File.expand_path(File.join('spec', 'setup.rb'))
3
+ require 'maven/tools/jarfile'
4
+ require 'jbundler/aether'
5
+
6
+ describe JBundler::AetherRuby do
7
+
8
+ let(:workdir) { 'target' }
9
+ let(:jfile) { File.join(workdir, 'tmp-jarfile') }
10
+ let(:jfile_lock) { jfile + ".lock"}
11
+ let(:jarfile) { Maven::Tools::Jarfile.new(jfile) }
12
+ subject { JBundler::AetherRuby.new }
13
+
14
+ before do
15
+ Dir[File.join(workdir, "tmp*")].each { |f| FileUtils.rm_f f }
16
+ end
17
+
18
+ it 'repositories' do
19
+ File.open(jfile, 'w') do |f|
20
+ f.write <<-EOF
21
+ repository :first, "http://example.com/repo"
22
+ source 'second', "http://example.org/repo"
23
+ EOF
24
+ end
25
+ jarfile.populate_unlocked subject
26
+ subject.repositories.size.must_equal 3
27
+ subject.artifacts.size.must_equal 0
28
+ subject.repositories[0].id.must_equal "central"
29
+ subject.repositories[1].id.must_equal "first"
30
+ subject.repositories[2].id.must_equal "second"
31
+ end
32
+
33
+ it 'artifacts without locked' do
34
+ File.open(jfile, 'w') do |f|
35
+ f.write <<-EOF
36
+ jar 'a:b', '123'
37
+ pom 'x:y', '987'
38
+ EOF
39
+ end
40
+ jarfile.populate_unlocked subject
41
+ subject.repositories.size.must_equal 1 # central
42
+ subject.artifacts.size.must_equal 2
43
+ subject.artifacts[0].to_s.must_equal "a:b:jar:123"
44
+ subject.artifacts[1].to_s.must_equal "x:y:pom:987"
45
+ end
46
+
47
+ it 'artifacts with locked' do
48
+ File.open(jfile, 'w') do |f|
49
+ f.write <<-EOF
50
+ jar 'a:b', '123'
51
+ pom 'x:y', '987'
52
+ EOF
53
+ end
54
+ File.open(jfile_lock, 'w') do |f|
55
+ f.write <<-EOF
56
+ a:b:jar:432
57
+ EOF
58
+ end
59
+
60
+ jarfile.populate_unlocked subject
61
+ subject.repositories.size.must_equal 1 # central
62
+ subject.artifacts.size.must_equal 1
63
+ subject.artifacts[0].to_s.must_equal "x:y:pom:987"
64
+ end
65
+
66
+ it 'locked artifacts' do
67
+ File.open(jfile_lock, 'w') do |f|
68
+ f.write <<-EOF
69
+ a:b:jar:432
70
+ EOF
71
+ end
72
+
73
+ jarfile.populate_locked subject
74
+ subject.repositories.size.must_equal 1 # central
75
+ subject.artifacts.size.must_equal 1
76
+ subject.artifacts[0].to_s.must_equal "a:b:jar:432"
77
+ end
78
+ end
@@ -1,15 +1,13 @@
1
- require 'jbundler/classpath_file'
2
- require 'jbundler/mavenfile'
3
- require 'jbundler/gemfile_lock'
1
+ require 'maven/tools/jarfile'
4
2
  require 'jbundler/aether'
5
3
 
6
- describe JBundler::Mavenfile do
4
+ describe Maven::Tools::Jarfile do
7
5
 
8
6
  let(:workdir) { 'target' }
9
- let(:mfile) { File.join(workdir, 'tmp-mvnfile') }
10
- let(:mfile_lock) { mfile + ".lock"}
7
+ let(:jfile) { File.join(workdir, 'tmp-jarfile') }
8
+ let(:jfile_lock) { jfile + ".lock"}
11
9
  let(:aether) { JBundler::AetherRuby.new }
12
- subject { JBundler::Mavenfile.new(mfile) }
10
+ subject { Maven::Tools::Jarfile.new(jfile) }
13
11
 
14
12
  before do
15
13
  Dir[File.join(workdir, "tmp*")].each { |f| FileUtils.rm_f f }
@@ -17,7 +15,7 @@ describe JBundler::Mavenfile do
17
15
 
18
16
  it 'generates lockfile' do
19
17
  subject.generate_lockfile(%w( a b c d e f))
20
- File.read(mfile_lock).must_equal <<-EOF
18
+ File.read(jfile_lock).must_equal <<-EOF
21
19
  a
22
20
  b
23
21
  c
@@ -28,7 +26,7 @@ EOF
28
26
  end
29
27
 
30
28
  it 'check locked coordinate' do
31
- File.open(mfile_lock, 'w') do |f|
29
+ File.open(jfile_lock, 'w') do |f|
32
30
  f.write <<-EOF
33
31
  a:b:pom:3
34
32
  a:c:jar:1
@@ -41,7 +39,7 @@ EOF
41
39
  end
42
40
 
43
41
  it 'populate repositories' do
44
- File.open(mfile, 'w') do |f|
42
+ File.open(jfile, 'w') do |f|
45
43
  f.write <<-EOF
46
44
  repository :first, "http://example.com/repo"
47
45
  source 'second', "http://example.org/repo"
@@ -56,7 +54,7 @@ EOF
56
54
  end
57
55
 
58
56
  it 'populate artifacts without locked' do
59
- File.open(mfile, 'w') do |f|
57
+ File.open(jfile, 'w') do |f|
60
58
  f.write <<-EOF
61
59
  jar 'a:b', '123'
62
60
  pom 'x:y', '987'
@@ -70,13 +68,13 @@ EOF
70
68
  end
71
69
 
72
70
  it 'populate artifacts with locked' do
73
- File.open(mfile, 'w') do |f|
71
+ File.open(jfile, 'w') do |f|
74
72
  f.write <<-EOF
75
73
  jar 'a:b', '123'
76
74
  pom 'x:y', '987'
77
75
  EOF
78
76
  end
79
- File.open(mfile_lock, 'w') do |f|
77
+ File.open(jfile_lock, 'w') do |f|
80
78
  f.write <<-EOF
81
79
  a:b:jar:432
82
80
  EOF
@@ -89,7 +87,7 @@ EOF
89
87
  end
90
88
 
91
89
  it 'populate locked artifacts' do
92
- File.open(mfile_lock, 'w') do |f|
90
+ File.open(jfile_lock, 'w') do |f|
93
91
  f.write <<-EOF
94
92
  a:b:jar:432
95
93
  EOF
@@ -1,16 +1,18 @@
1
+ #TODO get 'spec' into $LOAD by minispec-maven-plugin
2
+ load File.expand_path(File.join('spec', 'setup.rb'))
1
3
  require 'jbundler/classpath_file'
2
- require 'jbundler/mavenfile'
4
+ require 'maven/tools/jarfile'
3
5
  require 'jbundler/gemfile_lock'
4
6
 
5
7
  describe JBundler::ClasspathFile do
6
8
 
7
9
  let(:workdir) { 'target' }
8
- let(:mfile) { File.join(workdir, 'tmp-mvnfile') }
10
+ let(:jfile) { File.join(workdir, 'tmp-jarfile') }
9
11
  let(:gfile_lock) { File.join(workdir, 'tmp-gemfile.lock') }
10
- let(:mfile_lock) { mfile + ".lock"}
12
+ let(:jfile_lock) { jfile + ".lock"}
11
13
  let(:cpfile) { File.join(workdir, 'tmp-cp.rb') }
12
- let(:mavenfile) { JBundler::Mavenfile.new(mfile) }
13
- let(:gemfile_lock) { JBundler::GemfileLock.new(mavenfile, gfile_lock) }
14
+ let(:jarfile) { Maven::Tools::Jarfile.new(jfile) }
15
+ let(:gemfile_lock) { JBundler::GemfileLock.new(jarfile, gfile_lock) }
14
16
  subject { JBundler::ClasspathFile.new(cpfile) }
15
17
 
16
18
  before do
@@ -19,50 +21,50 @@ describe JBundler::ClasspathFile do
19
21
  end
20
22
 
21
23
  it 'needs update when all files are missing' do
22
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
24
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
23
25
  end
24
26
 
25
- it 'needs update when only mavenfile' do
26
- FileUtils.touch mfile
27
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
27
+ it 'needs update when only jarfile' do
28
+ FileUtils.touch jfile
29
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
28
30
  end
29
31
 
30
- it 'needs update when mavenfilelock is missing' do
31
- FileUtils.touch mfile
32
+ it 'needs update when jarfilelock is missing' do
33
+ FileUtils.touch jfile
32
34
  FileUtils.touch cpfile
33
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
35
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
34
36
  end
35
37
 
36
38
  it 'needs no update when classpath file is the youngest' do
37
- FileUtils.touch mfile
38
- FileUtils.touch mfile_lock
39
+ FileUtils.touch jfile
40
+ FileUtils.touch jfile_lock
39
41
  FileUtils.touch cpfile
40
- subject.needs_update?(mavenfile,gemfile_lock).must_equal false
42
+ subject.needs_update?(jarfile, gemfile_lock).must_equal false
41
43
  end
42
44
 
43
45
  it 'needs update when maven file is the youngest' do
44
- FileUtils.touch mfile_lock
46
+ FileUtils.touch jfile_lock
45
47
  FileUtils.touch cpfile
46
48
  sleep 1
47
- FileUtils.touch mfile
48
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
49
+ FileUtils.touch jfile
50
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
49
51
  end
50
52
 
51
53
  it 'needs update when maven lockfile is the youngest' do
52
- FileUtils.touch mfile
54
+ FileUtils.touch jfile
53
55
  FileUtils.touch cpfile
54
56
  sleep 1
55
- FileUtils.touch mfile_lock
56
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
57
+ FileUtils.touch jfile_lock
58
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
57
59
  end
58
60
 
59
61
  it 'needs update when gem lockfile is the youngest' do
60
- FileUtils.touch mfile
62
+ FileUtils.touch jfile
61
63
  FileUtils.touch cpfile
62
- FileUtils.touch mfile_lock
64
+ FileUtils.touch jfile_lock
63
65
  sleep 1
64
66
  FileUtils.touch gfile_lock
65
- subject.needs_update?(mavenfile,gemfile_lock).must_equal true
67
+ subject.needs_update?(jarfile, gemfile_lock).must_equal true
66
68
  end
67
69
 
68
70
  it 'generates a classpath ruby file' do
@@ -0,0 +1,81 @@
1
+ require 'jbundler/classpath_file'
2
+ require 'jbundler/mavenfile'
3
+ require 'jbundler/gemfile_lock'
4
+
5
+ describe JBundler::ClasspathFile do
6
+
7
+ let(:workdir) { 'target' }
8
+ let(:mfile) { File.join(workdir, 'tmp-mvnfile') }
9
+ let(:gfile_lock) { File.join(workdir, 'tmp-gemfile.lock') }
10
+ let(:mfile_lock) { mfile + ".lock"}
11
+ let(:cpfile) { File.join(workdir, 'tmp-cp.rb') }
12
+ let(:mavenfile) { JBundler::Mavenfile.new(mfile) }
13
+ let(:gemfile_lock) { JBundler::GemfileLock.new(gfile_lock) }
14
+ subject { JBundler::ClasspathFile.new(cpfile) }
15
+
16
+ before do
17
+ Dir[File.join(workdir, "tmp*")].each { |f| FileUtils.rm_f f }
18
+ FileUtils.touch gfile_lock #assume there is always a Gemfile.lock
19
+ end
20
+
21
+ it 'needs update when all files are missing' do
22
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
23
+ end
24
+
25
+ it 'needs update when only mavenfile' do
26
+ FileUtils.touch mfile
27
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
28
+ end
29
+
30
+ it 'needs update when mavenfilelock is missing' do
31
+ FileUtils.touch mfile
32
+ FileUtils.touch cpfile
33
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
34
+ end
35
+
36
+ it 'needs no update when classpath file is the youngest' do
37
+ FileUtils.touch mfile
38
+ FileUtils.touch mfile_lock
39
+ FileUtils.touch cpfile
40
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal false
41
+ end
42
+
43
+ it 'needs update when maven file is the youngest' do
44
+ FileUtils.touch mfile_lock
45
+ FileUtils.touch cpfile
46
+ sleep 1
47
+ FileUtils.touch mfile
48
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
49
+ end
50
+
51
+ it 'needs update when maven lockfile is the youngest' do
52
+ FileUtils.touch mfile
53
+ FileUtils.touch cpfile
54
+ sleep 1
55
+ FileUtils.touch mfile_lock
56
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
57
+ end
58
+
59
+ it 'needs update when gem lockfile is the youngest' do
60
+ FileUtils.touch mfile
61
+ FileUtils.touch cpfile
62
+ FileUtils.touch mfile_lock
63
+ sleep 1
64
+ FileUtils.touch gfile_lock
65
+ subject.needs_update?(mavenfile,gemfile_lock).must_equal true
66
+ end
67
+
68
+ it 'generates a classpath ruby file' do
69
+ subject.generate("a:b:c:d:f:".gsub(/:/, File::PATH_SEPARATOR))
70
+ File.read(cpfile).must_equal <<-EOF
71
+ JBUNDLER_CLASSPATH = []
72
+ JBUNDLER_CLASSPATH << 'a'
73
+ JBUNDLER_CLASSPATH << 'b'
74
+ JBUNDLER_CLASSPATH << 'c'
75
+ JBUNDLER_CLASSPATH << 'd'
76
+ JBUNDLER_CLASSPATH << 'f'
77
+ JBUNDLER_CLASSPATH.freeze
78
+ JBUNDLER_CLASSPATH.each { |c| require c }
79
+ EOF
80
+ end
81
+ end
@@ -23,22 +23,11 @@ describe JBundler::MavenUtil do
23
23
  subject.to_version('>1.2', '<=2.0').must_equal "(1.2,2.0]"
24
24
  end
25
25
 
26
- it 'should keep maven version and ranges as they are' do
26
+ it 'should maven version and ranges as is' do
27
27
  subject.to_version('1.2.3').must_equal "1.2.3"
28
28
  subject.to_version('(1,2)').must_equal "(1,2)"
29
29
  subject.to_version('[1,2)').must_equal "[1,2)"
30
30
  subject.to_version('(1,2]').must_equal "(1,2]"
31
31
  subject.to_version('[1,2]').must_equal "[1,2]"
32
32
  end
33
-
34
- it 'should convert pom of jar deps to maven coordinate' do
35
- subject.to_coordinate('something "a:b"').must_be_nil
36
- subject.to_coordinate('#jar "a:b"').must_be_nil
37
- subject.to_coordinate('jar "a:b" # bla').must_equal "a:b:jar:[0,)"
38
- subject.to_coordinate("pom 'b:c', '!2.3.4'").must_equal "b:c:pom:(2.3.4,)"
39
- subject.to_coordinate('jar "c:d", "2.3.4"').must_equal "c:d:jar:2.3.4"
40
- subject.to_coordinate("jar 'd:e', '~>1.8.2'").must_equal "d:e:jar:[1.8.2,1.8.99999]"
41
- subject.to_coordinate('pom "e:f", "[1.8,1.9.9)"').must_equal "e:f:pom:[1.8,1.9.9)"
42
- subject.to_coordinate('pom "f:g", ">1.2", "<=2.0"').must_equal "f:g:pom:(1.2,2.0]"
43
- end
44
33
  end
@@ -0,0 +1,40 @@
1
+ require 'jbundler/classpath_file'
2
+ require 'jbundler/mavenfile'
3
+ require 'jbundler/gemfile_lock'
4
+
5
+ describe JBundler::Mavenfile do
6
+
7
+ let(:workdir) { 'target' }
8
+ let(:mfile) { File.join(workdir, 'tmp-mvnfile') }
9
+ let(:mfile_lock) { mfile + ".lock"}
10
+ subject { JBundler::Mavenfile.new(mfile) }
11
+
12
+ before do
13
+ Dir[File.join(workdir, "tmp*")].each { |f| FileUtils.rm_f f }
14
+ end
15
+
16
+ it 'generates lockfile' do
17
+ subject.generate_lockfile(%w( a b c d e f))
18
+ File.read(mfile_lock).must_equal <<-EOF
19
+ a
20
+ b
21
+ c
22
+ d
23
+ e
24
+ f
25
+ EOF
26
+ end
27
+
28
+ it 'check locked coordinate' do
29
+ File.open(mfile_lock, 'w') do |f|
30
+ f.write <<-EOF
31
+ a:b:pom:3
32
+ a:c:jar:1
33
+ EOF
34
+ end
35
+ subject.locked.must_equal ["a:b:pom:3", "a:c:jar:1"]
36
+ subject.locked?("a:b:pom:321").must_equal true
37
+ subject.locked?("a:b:jar:321").must_equal true
38
+ subject.locked?("a:d:jar:432").must_equal false
39
+ end
40
+ end
@@ -1,3 +1,5 @@
1
+ #TODO get 'spec' into $LOAD by minispec-maven-plugin
2
+ load File.expand_path(File.join('spec', 'setup.rb'))
1
3
  require 'jbundler/pom'
2
4
 
3
5
  describe JBundler::Pom do
@@ -0,0 +1,40 @@
1
+ require 'jbundler/classpath_file'
2
+ require 'jbundler/mavenfile'
3
+ require 'jbundler/gemfile_lock'
4
+
5
+ describe JBundler::Mavenfile do
6
+
7
+ let(:workdir) { 'target' }
8
+ let(:mfile) { File.join(workdir, 'tmp-mvnfile') }
9
+ let(:mfile_lock) { mfile + ".lock"}
10
+ subject { JBundler::Mavenfile.new(mfile) }
11
+
12
+ before do
13
+ Dir[File.join(workdir, "tmp*")].each { |f| FileUtils.rm_f f }
14
+ end
15
+
16
+ it 'generates lockfile' do
17
+ subject.generate_lockfile(%w( a b c d e f))
18
+ File.read(mfile_lock).must_equal <<-EOF
19
+ a
20
+ b
21
+ c
22
+ d
23
+ e
24
+ f
25
+ EOF
26
+ end
27
+
28
+ it 'check locked coordinate' do
29
+ File.open(mfile_lock, 'w') do |f|
30
+ f.write <<-EOF
31
+ a:b:3
32
+ a:c:1
33
+ EOF
34
+ end
35
+ subject.load_lockfile.must_equal ["a:b:3", "a:c:1"]
36
+ subject.locked.must_equal ["a:b:3", "a:c:1"]
37
+ subject.locked?("a:b:321").must_equal true
38
+ subject.locked?("a:d:432").must_equal false
39
+ end
40
+ end