tetra 0.40.0
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/.gitignore +27 -0
- data/.rubocop.yml +14 -0
- data/Gemfile +4 -0
- data/LICENSE +28 -0
- data/MOTIVATION.md +27 -0
- data/README.md +106 -0
- data/Rakefile +9 -0
- data/SPECIAL_CASES.md +130 -0
- data/bin/tetra +29 -0
- data/integration-tests/commons.sh +55 -0
- data/lib/template/gitignore +2 -0
- data/lib/template/kit.spec +64 -0
- data/lib/template/kit/CONTENTS +8 -0
- data/lib/template/kit/jars/CONTENTS +1 -0
- data/lib/template/kit/m2/settings.xml +10 -0
- data/lib/template/output/CONTENTS +3 -0
- data/lib/template/package.spec +65 -0
- data/lib/template/src/CONTENTS +6 -0
- data/lib/tetra.rb +63 -0
- data/lib/tetra/ant_runner.rb +27 -0
- data/lib/tetra/archiver.rb +95 -0
- data/lib/tetra/commands/ant.rb +23 -0
- data/lib/tetra/commands/base.rb +89 -0
- data/lib/tetra/commands/download_maven_source_jars.rb +29 -0
- data/lib/tetra/commands/dry_run.rb +17 -0
- data/lib/tetra/commands/finish.rb +22 -0
- data/lib/tetra/commands/generate_all.rb +38 -0
- data/lib/tetra/commands/generate_kit_archive.rb +18 -0
- data/lib/tetra/commands/generate_kit_spec.rb +16 -0
- data/lib/tetra/commands/generate_package_archive.rb +19 -0
- data/lib/tetra/commands/generate_package_script.rb +21 -0
- data/lib/tetra/commands/generate_package_spec.rb +22 -0
- data/lib/tetra/commands/get_pom.rb +33 -0
- data/lib/tetra/commands/get_source.rb +30 -0
- data/lib/tetra/commands/init.rb +15 -0
- data/lib/tetra/commands/list_kit_missing_sources.rb +21 -0
- data/lib/tetra/commands/move_jars_to_kit.rb +18 -0
- data/lib/tetra/commands/mvn.rb +23 -0
- data/lib/tetra/git.rb +140 -0
- data/lib/tetra/kit_checker.rb +104 -0
- data/lib/tetra/kit_runner.rb +43 -0
- data/lib/tetra/kit_spec_adapter.rb +28 -0
- data/lib/tetra/logger.rb +28 -0
- data/lib/tetra/main.rb +102 -0
- data/lib/tetra/maven_runner.rb +47 -0
- data/lib/tetra/maven_website.rb +59 -0
- data/lib/tetra/package_spec_adapter.rb +59 -0
- data/lib/tetra/pom.rb +55 -0
- data/lib/tetra/pom_getter.rb +104 -0
- data/lib/tetra/project.rb +245 -0
- data/lib/tetra/script_generator.rb +57 -0
- data/lib/tetra/source_getter.rb +41 -0
- data/lib/tetra/spec_generator.rb +60 -0
- data/lib/tetra/template_manager.rb +33 -0
- data/lib/tetra/version.rb +6 -0
- data/lib/tetra/version_matcher.rb +90 -0
- data/spec/data/ant-super-simple-code/build.xml +133 -0
- data/spec/data/ant-super-simple-code/build/HW.class +0 -0
- data/spec/data/ant-super-simple-code/build/mypackage/HW.class +0 -0
- data/spec/data/ant-super-simple-code/dist/antsimple-20130618.jar +0 -0
- data/spec/data/ant-super-simple-code/lib/junit-4.11.jar +0 -0
- data/spec/data/ant-super-simple-code/lib/log4j-1.2.13.jar +0 -0
- data/spec/data/ant-super-simple-code/src/mypackage/HW.java +15 -0
- data/spec/data/antlr/antlr-2.7.2.jar +0 -0
- data/spec/data/antlr/pom.xml +6 -0
- data/spec/data/commons-logging/commons-logging-1.1.1.jar +0 -0
- data/spec/data/commons-logging/parent_pom.xml +420 -0
- data/spec/data/commons-logging/pom.xml +504 -0
- data/spec/data/nailgun/nailgun-0.7.1.jar +0 -0
- data/spec/data/nailgun/pom.xml +153 -0
- data/spec/data/struts-apps/pom.xml +228 -0
- data/spec/data/tomcat/pom.xml +33 -0
- data/spec/lib/ant_runner_spec.rb +45 -0
- data/spec/lib/archiver_spec.rb +106 -0
- data/spec/lib/git_spec.rb +105 -0
- data/spec/lib/kit_checker_spec.rb +119 -0
- data/spec/lib/maven_runner_spec.rb +68 -0
- data/spec/lib/maven_website_spec.rb +56 -0
- data/spec/lib/pom_getter_spec.rb +36 -0
- data/spec/lib/pom_spec.rb +69 -0
- data/spec/lib/project_spec.rb +254 -0
- data/spec/lib/script_generator_spec.rb +67 -0
- data/spec/lib/source_getter_spec.rb +36 -0
- data/spec/lib/spec_generator_spec.rb +130 -0
- data/spec/lib/template_manager_spec.rb +54 -0
- data/spec/lib/version_matcher_spec.rb +64 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/support/kit_runner_examples.rb +15 -0
- data/tetra.gemspec +31 -0
- data/utils/delete_nonet_user.sh +8 -0
- data/utils/setup_nonet_user.sh +8 -0
- metadata +267 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Tetra::Archiver do
|
6
|
+
before(:each) do
|
7
|
+
@project_path = File.join("spec", "data", "test-project")
|
8
|
+
Dir.mkdir(@project_path)
|
9
|
+
|
10
|
+
Tetra::Project.init(@project_path)
|
11
|
+
@project = Tetra::Project.new(@project_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:each) do
|
15
|
+
FileUtils.rm_rf(@project_path)
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:archiver) { Tetra::Archiver.new(@project) }
|
19
|
+
|
20
|
+
describe "#archive_single" do
|
21
|
+
it "archives a list of files" do
|
22
|
+
@project.from_directory do
|
23
|
+
File.open("test", "w") { |io| io.puts "test content" }
|
24
|
+
|
25
|
+
archiver.archive_single(".", "test.tar.xz")
|
26
|
+
expect(`tar -Jtf test.tar.xz`.split).to include("test")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#archive_incremental" do
|
32
|
+
it "archives an increment of a directory" do
|
33
|
+
@project.from_directory do
|
34
|
+
File.open("test", "w") { |io| io.puts "test content 1" }
|
35
|
+
File.open("test2", "w") { |io| io.puts "test content 1" }
|
36
|
+
archiver.archive_incremental(".", ".", "test", ".tar.xz", :archive_kit)
|
37
|
+
expect(`tar -Jtf test.tar.xz`.split).to include("test")
|
38
|
+
|
39
|
+
@project.take_snapshot("test archive snapshot 1", :archive_kit)
|
40
|
+
|
41
|
+
File.open("test", "w") { |io| io.puts "test content 2" }
|
42
|
+
File.open("test3", "w") { |io| io.puts "test content 2" }
|
43
|
+
|
44
|
+
@project.take_snapshot("test archive snapshot 2")
|
45
|
+
|
46
|
+
archiver.archive_incremental(".", ".", "test", ".tar.xz", :archive_kit)
|
47
|
+
files = `tar -Jtf test_0001.tar.xz`.split
|
48
|
+
|
49
|
+
expect(files).to include("test")
|
50
|
+
expect(files).to include("test3")
|
51
|
+
expect(files).not_to include("test2")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#archive_kit" do
|
57
|
+
it "archives a kit package files, not incrementally" do
|
58
|
+
@project.from_directory do
|
59
|
+
File.open(File.join("kit", "kit_test"), "w") { |io| io.puts "test content" }
|
60
|
+
end
|
61
|
+
@project.finish(false)
|
62
|
+
|
63
|
+
archiver.archive_kit(true)
|
64
|
+
@project.from_directory do
|
65
|
+
expect(`tar -Jtf output/test-project-kit/test-project-kit.tar.xz`.split).to include("kit_test")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
it "archives a kit package files incrementally" do
|
69
|
+
@project.from_directory do
|
70
|
+
File.open(File.join("kit", "kit_test"), "w") { |io| io.puts "test content" }
|
71
|
+
end
|
72
|
+
@project.finish(false)
|
73
|
+
|
74
|
+
archiver.archive_kit(false)
|
75
|
+
@project.from_directory do
|
76
|
+
expect(`tar -Jtf output/test-project-kit/test-project-kit.tar.xz`.split).to include("kit_test")
|
77
|
+
end
|
78
|
+
|
79
|
+
@project.from_directory do
|
80
|
+
File.open(File.join("kit", "kit_test2"), "w") { |io| io.puts "test content" }
|
81
|
+
end
|
82
|
+
|
83
|
+
archiver.archive_kit(false)
|
84
|
+
@project.from_directory do
|
85
|
+
files = `tar -Jtf output/test-project-kit/test-project-kit_0001.tar.xz`.split
|
86
|
+
expect(files).to include("kit_test2")
|
87
|
+
expect(files).not_to include("kit_test")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#archive_package" do
|
93
|
+
it "archives a package files" do
|
94
|
+
@project.from_directory do
|
95
|
+
Dir.mkdir(File.join("src", "package-name"))
|
96
|
+
File.open(File.join("src", "package-name", "src_test"), "w") { |io| io.puts "test content" }
|
97
|
+
end
|
98
|
+
@project.finish(false)
|
99
|
+
|
100
|
+
archiver.archive_package "package-name"
|
101
|
+
@project.from_directory do
|
102
|
+
expect(`tar -Jtf output/package-name/package-name.tar.xz`.split).to include("src_test")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Tetra::Git do
|
6
|
+
before(:each) do
|
7
|
+
@git_path = File.expand_path(File.join("spec", "data", "test-repo"))
|
8
|
+
Dir.mkdir(@git_path)
|
9
|
+
|
10
|
+
@git = Tetra::Git.new(@git_path)
|
11
|
+
@git.init
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:each) do
|
15
|
+
FileUtils.rm_rf(@git_path)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#init" do
|
19
|
+
it "complains if a double initialization is attempted" do
|
20
|
+
expect do
|
21
|
+
@git.init
|
22
|
+
end.to raise_error(Tetra::GitAlreadyInitedError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#commit_whole_directory" do
|
27
|
+
it "commits all contents of a directory to git for later use" do
|
28
|
+
Dir.chdir(@git_path) do
|
29
|
+
File.open("file1", "w") do |file|
|
30
|
+
file.write "test"
|
31
|
+
end
|
32
|
+
|
33
|
+
# check that gitignore files are moved correctly
|
34
|
+
File.open(".gitignore", "w") do |file|
|
35
|
+
file.write "file1o"
|
36
|
+
end
|
37
|
+
|
38
|
+
@git.commit_whole_directory("test", "test")
|
39
|
+
|
40
|
+
files = `git ls-tree --name-only -r HEAD`.split("\n")
|
41
|
+
|
42
|
+
expect(files).to include("file1")
|
43
|
+
expect(files).to include(".gitignore_disabled_by_tetra")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#changed_files_since" do
|
49
|
+
it "lists files changed since a tetra tag" do
|
50
|
+
Dir.chdir(@git_path) do
|
51
|
+
File.open("file1", "w") do |file|
|
52
|
+
file.write "test"
|
53
|
+
end
|
54
|
+
|
55
|
+
@git.commit_whole_directory("test", "test")
|
56
|
+
|
57
|
+
File.open("file2", "w") do |file|
|
58
|
+
file.write "test"
|
59
|
+
end
|
60
|
+
|
61
|
+
@git.commit_whole_directory("test end")
|
62
|
+
|
63
|
+
files = @git.changed_files_since("test")
|
64
|
+
|
65
|
+
expect(files).not_to include("file1")
|
66
|
+
expect(files).to include("file2")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#changed_files_between" do
|
72
|
+
it "lists files changed between tetra tags" do
|
73
|
+
Dir.chdir(@git_path) do
|
74
|
+
File.open("file1", "w") do |file|
|
75
|
+
file.write "test"
|
76
|
+
end
|
77
|
+
|
78
|
+
@git.commit_whole_directory("test", "test_start")
|
79
|
+
|
80
|
+
File.open("file2", "w") do |file|
|
81
|
+
file.write "test"
|
82
|
+
end
|
83
|
+
Dir.mkdir("subdir")
|
84
|
+
File.open(File.join("subdir", "file3"), "w") do |file|
|
85
|
+
file.write "test"
|
86
|
+
end
|
87
|
+
|
88
|
+
@git.commit_whole_directory("test", "test_end")
|
89
|
+
|
90
|
+
File.open("file4", "w") do |file|
|
91
|
+
file.write "test"
|
92
|
+
end
|
93
|
+
|
94
|
+
@git.commit_whole_directory("test")
|
95
|
+
|
96
|
+
files = @git.changed_files_between("test_start", "test_end", "subdir")
|
97
|
+
|
98
|
+
expect(files).not_to include("file1")
|
99
|
+
expect(files).not_to include("file2")
|
100
|
+
expect(files).to include("subdir/file3")
|
101
|
+
expect(files).not_to include("file4")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
require "rubygems"
|
5
|
+
require "zip"
|
6
|
+
|
7
|
+
describe Tetra::KitChecker do
|
8
|
+
include Tetra::Mockers
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
create_mock_project
|
12
|
+
@kit_checker = Tetra::KitChecker.new(@project)
|
13
|
+
end
|
14
|
+
|
15
|
+
after(:each) do
|
16
|
+
delete_mock_project
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#kit_file_paths" do
|
20
|
+
it "returns an array of paths found in kit" do
|
21
|
+
@project.from_directory("kit") do
|
22
|
+
FileUtils.touch("top_level")
|
23
|
+
FileUtils.mkdir_p("directory")
|
24
|
+
FileUtils.touch(File.join("directory", "in_directory"))
|
25
|
+
Zip::File.open("zipped.zip", Zip::File::CREATE) do |zipfile|
|
26
|
+
Dir[File.join("directory", "**", "**")].each do |file|
|
27
|
+
zipfile.add(file.sub("/directory", ""), file)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
all_files = @kit_checker.kit_file_paths
|
33
|
+
|
34
|
+
expect(all_files).to include ["top_level", nil]
|
35
|
+
expect(all_files).not_to include ["directory", nil]
|
36
|
+
expect(all_files).to include ["directory/in_directory", nil]
|
37
|
+
expect(all_files).to include ["zipped.zip", nil]
|
38
|
+
expect(all_files).to include ["directory/in_directory", "zipped.zip"]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#source_class_names" do
|
43
|
+
it "distills source class names in kit" do
|
44
|
+
all_files = [
|
45
|
+
["path/to/ClassOne.java", nil],
|
46
|
+
["path/to/ClassTwo.java", "path/to/archive.jar"],
|
47
|
+
["ClassThree.java", "another_archive.jar"],
|
48
|
+
["path/to/CompiledClass.class", "yet_another.jar"]
|
49
|
+
]
|
50
|
+
|
51
|
+
class_names = @kit_checker.source_class_names(all_files)
|
52
|
+
|
53
|
+
expect(class_names).to include "path.to.ClassOne"
|
54
|
+
expect(class_names).to include "path.to.ClassTwo"
|
55
|
+
expect(class_names).to include "ClassThree"
|
56
|
+
expect(class_names).not_to include "path.to.CompiledClass"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#compiled_classes" do
|
61
|
+
it "distills source class names in kit" do
|
62
|
+
all_files = [
|
63
|
+
["path/to/ClassOne.class", nil],
|
64
|
+
["path/to/ClassTwo.class", "path/to/archive.jar"],
|
65
|
+
["ClassThree.class", "another_archive.jar"],
|
66
|
+
["path/to/SourceClass.java", "yet_another.jar"]
|
67
|
+
]
|
68
|
+
|
69
|
+
classes = @kit_checker.compiled_classes(all_files)
|
70
|
+
|
71
|
+
expect(classes[nil]).to include "path.to.ClassOne"
|
72
|
+
expect(classes["path/to/archive.jar"]).to include "path.to.ClassTwo"
|
73
|
+
expect(classes["another_archive.jar"]).to include "ClassThree"
|
74
|
+
expect(classes["yet_another.jar"]).to be_nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "#unsourced_archives" do
|
79
|
+
it "returns a list of jars wich source files are missing" do
|
80
|
+
@project.from_directory("kit") do
|
81
|
+
FileUtils.mkdir_p("package1")
|
82
|
+
FileUtils.touch(File.join("package1", "UnsourcedClass.class"))
|
83
|
+
|
84
|
+
FileUtils.mkdir_p("package2")
|
85
|
+
FileUtils.touch(File.join("package2", "SourcedClass.java"))
|
86
|
+
Zip::File.open("zipped-source-2.jar", Zip::File::CREATE) do |zipfile|
|
87
|
+
Dir[File.join("package2", "**", "**")].each do |file|
|
88
|
+
zipfile.add(file.sub("/package2", ""), file)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
FileUtils.rm(File.join("package2", "SourcedClass.java"))
|
92
|
+
FileUtils.touch(File.join("package2", "SourcedClass.class"))
|
93
|
+
Zip::File.open("zipped-2.jar", Zip::File::CREATE) do |zipfile|
|
94
|
+
Dir[File.join("package2", "**", "**")].each do |file|
|
95
|
+
zipfile.add(file.sub("/package2", ""), file)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
FileUtils.mkdir_p("package3")
|
100
|
+
FileUtils.touch(File.join("package3", "SourcedSameArchive.java"))
|
101
|
+
FileUtils.touch(File.join("package3", "SourcedSameArchive.class"))
|
102
|
+
Zip::File.open("zipped-3.zip", Zip::File::CREATE) do |zipfile|
|
103
|
+
Dir[File.join("package3", "**", "**")].each do |file|
|
104
|
+
zipfile.add(file.sub("/package3", ""), file)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
unsourced = @kit_checker.unsourced_archives
|
110
|
+
expect(unsourced.length).to eq 1
|
111
|
+
|
112
|
+
expect(unsourced.first[:archive]).to be_nil
|
113
|
+
expect(unsourced.first[:class_names]).to include "package1.UnsourcedClass"
|
114
|
+
expect(unsourced.first[:class_names]).to include "package2.SourcedClass"
|
115
|
+
expect(unsourced.first[:class_names]).to include "package3.SourcedSameArchive"
|
116
|
+
expect(unsourced.first[:unsourced_class_names]).to include "package1.UnsourcedClass"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Tetra::MavenRunner do
|
6
|
+
it_behaves_like Tetra::KitRunner
|
7
|
+
include Tetra::Mockers
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
create_mock_project
|
11
|
+
@kit_runner = Tetra::MavenRunner.new(@project)
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:each) do
|
15
|
+
delete_mock_project
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#get_maven_commandline" do
|
19
|
+
it "returns commandline options for running maven" do
|
20
|
+
executable_path = create_mock_executable("mvn")
|
21
|
+
|
22
|
+
@project.from_directory do
|
23
|
+
commandline = @kit_runner.get_maven_commandline(".", ["--otheroption"])
|
24
|
+
expected_commandline = "./#{executable_path} -Dmaven.repo.local=./kit/m2 -s./kit/m2/settings.xml --otheroption"
|
25
|
+
expect(commandline).to eq expected_commandline
|
26
|
+
end
|
27
|
+
end
|
28
|
+
it "doesn't return commandline options if Maven is not available" do
|
29
|
+
expect { @kit_runner.get_maven_commandline(".", []) }.to raise_error(Tetra::ExecutableNotFoundError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#mvn" do
|
34
|
+
it "runs maven" do
|
35
|
+
create_mock_executable("mvn")
|
36
|
+
@project.from_directory do
|
37
|
+
@kit_runner.mvn(["extra-option"])
|
38
|
+
expect(File.read("test_out").strip).to match(/extra-option$/)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
it "doesn't run Maven if it is not available" do
|
42
|
+
@project.from_directory do
|
43
|
+
expect { @kit_runner.mvn([]) }.to raise_error(Tetra::ExecutableNotFoundError)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#get_source_jar" do
|
49
|
+
it "runs maven to get a source jar" do
|
50
|
+
create_mock_executable("mvn")
|
51
|
+
@project.from_directory do
|
52
|
+
@kit_runner.get_source_jar("test_group", "test_artifact_id", "test_version")
|
53
|
+
expected = /dependency:get -Dartifact=test_group:test_artifact_id:test_version:jar:sources -Dtransitive=false$/
|
54
|
+
expect(File.read("test_out").strip).to match expected
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#get_effective_pom" do
|
60
|
+
it "runs maven to get an effective pom" do
|
61
|
+
create_mock_executable("mvn")
|
62
|
+
@project.from_directory do
|
63
|
+
expect(@kit_runner.get_effective_pom("test.pom")).to eq "test.pom.effective"
|
64
|
+
expect(File.read("test_out").strip).to match(/help:effective-pom -ftest.pom -Doutput=test.pom.effective$/)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Tetra::MavenWebsite do
|
6
|
+
let(:site) { Tetra::MavenWebsite.new }
|
7
|
+
|
8
|
+
describe "#search_by_sha1" do
|
9
|
+
it "uses search.maven.org to look for poms by jar SHA1" do
|
10
|
+
result = site.search_by_sha1("546b5220622c4d9b2da45ad1899224b6ce1c8830").first
|
11
|
+
|
12
|
+
expect(result["g"]).to eq("antlr")
|
13
|
+
expect(result["a"]).to eq("antlrall")
|
14
|
+
expect(result["v"]).to eq("2.7.2")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#search_by_name" do
|
19
|
+
it "uses search.maven.org to look for poms by keyword (name)" do
|
20
|
+
result = site.search_by_name("jruby").first
|
21
|
+
|
22
|
+
# not much to test here
|
23
|
+
expect(result).not_to be_nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#search_by_group_id_and_artifact_id" do
|
28
|
+
it "uses search.maven.org to look for poms by group and artifact id" do
|
29
|
+
results = site.search_by_group_id_and_artifact_id("antlr", "antlrall")
|
30
|
+
|
31
|
+
expect(results.any? { |result| result["id"] == "antlr:antlrall:2.7.2" }).to be_truthy
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#search_by_maven_id" do
|
36
|
+
it "uses search.maven.org to look for poms by group id, artifact id and version" do
|
37
|
+
result = site.search_by_maven_id("antlr", "antlrall", "2.7.2")
|
38
|
+
|
39
|
+
expect(result.first["id"]).to eq("antlr:antlrall:2.7.2")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#get_maven_id_from" do
|
44
|
+
it "uses search.maven.org to look for poms" do
|
45
|
+
expect(site.get_maven_id_from("g" => 1, "a" => 2, "v" => 3)).to eq([1, 2, 3])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#download_pom" do
|
50
|
+
it "gets a pom from search.maven.org" do
|
51
|
+
dir_path = File.join("spec", "data", "antlr")
|
52
|
+
pom_path = File.join(dir_path, "pom.xml")
|
53
|
+
expect(site.download_pom("antlr", "antlrall", "2.7.2")).to eq(File.read(pom_path))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|