roger 1.2.2 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +4 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -0
- data/Rakefile +2 -2
- data/lib/roger/release/cleaner.rb +1 -1
- data/lib/roger/release/processors/url_relativizer.rb +8 -7
- data/lib/roger/release/scm/fixed.rb +22 -0
- data/lib/roger/release/scm.rb +1 -0
- data/lib/roger/release.rb +3 -1
- data/lib/roger/testing/mock_project.rb +43 -0
- data/lib/roger/testing/mock_release.rb +39 -0
- data/lib/roger/version.rb +1 -1
- data/roger.gemspec +3 -1
- data/test/unit/cli/cli_base_test.rb +2 -2
- data/test/unit/cli/cli_generate_test.rb +2 -2
- data/test/unit/cli/cli_serve_test.rb +2 -2
- data/test/unit/cli/cli_test_test.rb +2 -2
- data/test/unit/cli/cli_version_test.rb +2 -2
- data/test/unit/generators_test.rb +4 -1
- data/test/unit/helpers/logging_test.rb +46 -44
- data/test/unit/rack/roger_test.rb +1 -1
- data/test/unit/release/cleaner_test.rb +50 -53
- data/test/unit/release/finalizers/git_branch_test.rb +31 -43
- data/test/unit/release/finalizers/zip_test.rb +21 -38
- data/test/unit/release/processors/mockup_test.rb +61 -0
- data/test/unit/release/processors/url_relativizer_test.rb +35 -0
- data/test/unit/release/processors_test.rb +41 -33
- data/test/unit/release/scm/fixed_test.rb +29 -0
- data/test/unit/release_test.rb +1 -1
- data/test/unit/resolver_test.rb +1 -1
- data/test/unit/server_test.rb +1 -1
- data/test/unit/template_test.rb +1 -1
- data/test/unit/test_helper.rb +12 -0
- data/test/unit/test_test.rb +1 -2
- metadata +41 -4
- data/test/unit/release/mockup_test.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82428d41225658ef4f4a435a7eabb2e6de235b17
|
4
|
+
data.tar.gz: ee81c7a3c011d6eef41986e569de45dc5775fe1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c45c703a4040c8dcf26312a95d98d2bd0a6b7ffba74267e3d5fc0540523d09e6afaa231b59ef2a536ac7ba15a6a06872bc0f6d1bade9cfda49b92eedd2c03ae
|
7
|
+
data.tar.gz: 00ab6343db81d1143885a632f1b805f3a10ae36ff685c2b10f52e529afa01ef35379ff672aaaada880ca4311a95289e68386ab1bfaad466562e2730f4434ac54
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -8,4 +8,7 @@ before_script:
|
|
8
8
|
- git config --global user.email "travis-ci@digitpaint.nl"
|
9
9
|
- git config --global user.name "Travis-CI"
|
10
10
|
matrix:
|
11
|
-
fast_finish: true
|
11
|
+
fast_finish: true
|
12
|
+
env:
|
13
|
+
global:
|
14
|
+
secure: eMPdp74VWvC6r7CSzN06FEMf5Wq9AfxqIgjfr4Z4AMxUsehApSJe1y/blaqN6XcpLK4TYw4bwzRUjAzUjOMMW5aJ4Kr1nrW2k6bJehbubhkkPfDxcc+NzYUZ+oxqbPMOZP6zQoSRRd5rhY2qd3xVkKecK1KZOxlA1/pce6y15YU=
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Version 1.3.0
|
4
|
+
* Add fixed SCM for testing (you can set a fixed version number)
|
5
|
+
* Fix for missing variable in UrlRelativizer
|
6
|
+
* Add Mocks for Project and Release to use in testing (can also be used by external plugins)
|
7
|
+
* Refactoring of tests
|
8
|
+
* Add CodeClimate (https://codeclimate.com/github/DigitPaint/roger)
|
9
|
+
|
3
10
|
## Version 1.2.2
|
4
11
|
* Fix missing variables in release
|
5
12
|
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -18,11 +18,12 @@ module Roger::Release::Processors
|
|
18
18
|
def call(release, options = {})
|
19
19
|
options = {}.update(@options).update(options)
|
20
20
|
|
21
|
-
log_call(options)
|
21
|
+
log_call(release, options)
|
22
22
|
|
23
23
|
@resolver = Roger::Resolver.new(release.build_path)
|
24
24
|
|
25
25
|
relativize_attributes_in_files(
|
26
|
+
release,
|
26
27
|
options[:url_attributes],
|
27
28
|
release.get_files(options[:match], options[:skip])
|
28
29
|
)
|
@@ -30,29 +31,29 @@ module Roger::Release::Processors
|
|
30
31
|
|
31
32
|
protected
|
32
33
|
|
33
|
-
def log_call(options)
|
34
|
+
def log_call(release, options)
|
34
35
|
log_message = "Relativizing all URLS in #{options[:match].inspect}"
|
35
36
|
log_message << "files in attributes #{options[:url_attributes].inspect},"
|
36
37
|
log_message << "skipping #{options[:skip].any? ? options[:skip].inspect : 'none' }"
|
37
38
|
release.log(self, log_message)
|
38
39
|
end
|
39
40
|
|
40
|
-
def relativize_attributes_in_files(attributes, files)
|
41
|
+
def relativize_attributes_in_files(release, attributes, files)
|
41
42
|
files.each do |file_path|
|
42
43
|
release.debug(self, "Relativizing URLS in #{file_path}") do
|
43
|
-
relativize_attributes_in_file(attributes, file_path)
|
44
|
+
relativize_attributes_in_file(release, attributes, file_path)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
def relativize_attributes_in_file(attributes, file_path)
|
49
|
+
def relativize_attributes_in_file(release, attributes, file_path)
|
49
50
|
orig_source = File.read(file_path)
|
50
51
|
File.open(file_path, "w") do |f|
|
51
|
-
f.write(relativize_attributes_in_source(attributes, orig_source, file_path))
|
52
|
+
f.write(relativize_attributes_in_source(release, attributes, orig_source, file_path))
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
def relativize_attributes_in_source(attributes, source, file_path)
|
56
|
+
def relativize_attributes_in_source(release, attributes, source, file_path)
|
56
57
|
doc = Hpricot(source)
|
57
58
|
attributes.each do |attribute|
|
58
59
|
(doc / "*[@#{attribute}]").each do |tag|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Roger
|
2
|
+
class Release
|
3
|
+
module Scm
|
4
|
+
# The Fixed SCM implementation for Roger release
|
5
|
+
# Here you define everything in the config or set it later with the different accessors.
|
6
|
+
class Fixed < Base
|
7
|
+
attr_accessor :version, :date, :previous
|
8
|
+
|
9
|
+
# @option config [String] :version Version to use (default "0.0.0")
|
10
|
+
# @option config [Time] :date Date to use (default Time.now)
|
11
|
+
# @option config [String] :previous Previous version to use (default "0.0.0")
|
12
|
+
def initialize(config = {})
|
13
|
+
super(config)
|
14
|
+
|
15
|
+
self.version = config[:version] || "0.0.0"
|
16
|
+
self.date = config[:date] || Time.now
|
17
|
+
self.previous = config[:previous] || "0.0.0"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/roger/release/scm.rb
CHANGED
data/lib/roger/release.rb
CHANGED
@@ -25,7 +25,7 @@ module Roger
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
# @option config [
|
28
|
+
# @option config [:git, :fixed] :scm The SCM to use (default = :git)
|
29
29
|
# @option config [String, Pathname] :target_path The path/directory to put the release into
|
30
30
|
# @option config [String, Pathname]:build_path Temporary path used to build the release
|
31
31
|
# @option config [Boolean] :cleanup_build Wether or not to remove the build_path after we're
|
@@ -84,6 +84,8 @@ module Roger
|
|
84
84
|
case config[:scm]
|
85
85
|
when :git
|
86
86
|
@_scm = Release::Scm::Git.new(path: source_path)
|
87
|
+
when :fixed
|
88
|
+
@_scm = Release::Scm::Fixed.new
|
87
89
|
else
|
88
90
|
fail "Unknown SCM #{options[:scm].inspect}"
|
89
91
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "test_construct"
|
2
|
+
|
3
|
+
module Roger
|
4
|
+
module Testing
|
5
|
+
# A Mock project. If initialized without a path it will
|
6
|
+
# create a test_construct with the following (empty) paths:
|
7
|
+
#
|
8
|
+
# - html
|
9
|
+
# - partials
|
10
|
+
# - layouts
|
11
|
+
# - releases
|
12
|
+
#
|
13
|
+
# Use MockProject in testing but never forget to call:
|
14
|
+
#
|
15
|
+
# MockProject#destroy
|
16
|
+
#
|
17
|
+
# in teardown otherwise you pollute your filesystem with build directories
|
18
|
+
class MockProject < Project
|
19
|
+
include TestConstruct::Helpers
|
20
|
+
|
21
|
+
attr_accessor :construct
|
22
|
+
|
23
|
+
def initialize(path = nil, config = {})
|
24
|
+
unless path
|
25
|
+
self.construct = setup_construct
|
26
|
+
path = construct
|
27
|
+
|
28
|
+
%w(html partials layouts releases).each do |dir|
|
29
|
+
construct.directory dir
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Call super to initialize
|
34
|
+
super(path, config)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Destroy will remove all files/directories
|
38
|
+
def destroy
|
39
|
+
teardown_construct(construct) if construct
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/mock_project"
|
2
|
+
|
3
|
+
module Roger
|
4
|
+
module Testing
|
5
|
+
# Creates a mock release object. It is the same as a regular release
|
6
|
+
# with the following "presets"
|
7
|
+
#
|
8
|
+
# - it will automatically use the :fixed SCM
|
9
|
+
# - it will automatically initialize a MockProject if you don't
|
10
|
+
# pass a project to the initializer
|
11
|
+
#
|
12
|
+
# Use MockRelease in testing but never forget to call:
|
13
|
+
#
|
14
|
+
# MockRelease#destroy
|
15
|
+
#
|
16
|
+
# in teardown otherwise you pollute your filesystem with build directories
|
17
|
+
#
|
18
|
+
class MockRelease < Release
|
19
|
+
def initialize(project = nil, config = {})
|
20
|
+
config = {
|
21
|
+
scm: :fixed
|
22
|
+
}.update(config)
|
23
|
+
|
24
|
+
unless project
|
25
|
+
# Create a mock project that's completely empty
|
26
|
+
project = MockProject.new
|
27
|
+
end
|
28
|
+
|
29
|
+
# Call super to initialize
|
30
|
+
super(project, config)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Destroy will remove all files/directories
|
34
|
+
def destroy
|
35
|
+
project.destroy if project.is_a?(MockProject)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/roger/version.rb
CHANGED
data/roger.gemspec
CHANGED
@@ -39,6 +39,8 @@ Gem::Specification.new do |s|
|
|
39
39
|
|
40
40
|
s.add_development_dependency("test-unit", "~> 3.0.0")
|
41
41
|
s.add_development_dependency("mocha", "~> 1.1.0")
|
42
|
+
s.add_development_dependency("simplecov", "~> 0.10.0")
|
42
43
|
s.add_development_dependency("puma", "~> 2.10.0")
|
43
|
-
s.add_development_dependency
|
44
|
+
s.add_development_dependency("rubocop", "~> 0.31.0")
|
45
|
+
s.add_development_dependency("test_construct", "~> 2.0")
|
44
46
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Generators register themself on the CLI module
|
2
|
+
require "test_helper"
|
2
3
|
require "./lib/roger/generators.rb"
|
3
|
-
require "test/unit"
|
4
4
|
|
5
5
|
module CustomGens
|
6
6
|
module Generators
|
@@ -72,6 +72,9 @@ module Roger
|
|
72
72
|
path = "./tmp"
|
73
73
|
generators.invoke :generator, [name, path]
|
74
74
|
assert File.exist? "#{path}/#{name}_generator.rb"
|
75
|
+
|
76
|
+
# Remove generated generator
|
77
|
+
File.unlink "#{path}/#{name}_generator.rb"
|
75
78
|
end
|
76
79
|
|
77
80
|
def test_invoke_mocked_generator
|
@@ -1,64 +1,66 @@
|
|
1
|
+
require "test_helper"
|
1
2
|
require "./lib/roger/helpers/logging"
|
2
|
-
require "test/unit"
|
3
|
-
require File.dirname(__FILE__) + "/../../helpers/cli"
|
4
3
|
|
5
4
|
# Empty logging class
|
5
|
+
# This is outside of the Roger namespace by design.
|
6
6
|
class MyLogger
|
7
7
|
include Roger::Helpers::Logging
|
8
8
|
|
9
9
|
attr_accessor :project
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
module Roger
|
13
|
+
# Test Logging module
|
14
|
+
class LoggingTest < ::Test::Unit::TestCase
|
15
|
+
include Roger::TestCli
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
def setup
|
18
|
+
@logger = MyLogger.new
|
19
|
+
@logger.project = stub(
|
20
|
+
options: {},
|
21
|
+
shell: Thor::Shell::Color.new
|
22
|
+
)
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
def test_log
|
26
|
+
out, _err = capture { @logger.log(@logger, "log") }
|
27
|
+
assert out.include?("MyLogger")
|
28
|
+
assert out.include?("log")
|
29
|
+
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
def test_log_with_string_part
|
32
|
+
out, _err = capture { @logger.log("string_test", "log") }
|
33
|
+
assert out.include?("string_test")
|
34
|
+
assert out.include?("log")
|
35
|
+
end
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
def test_log_with_block
|
38
|
+
out, _err = capture do
|
39
|
+
@logger.log(@logger, "log") do
|
40
|
+
@logger.log(@logger, "indent")
|
41
|
+
end
|
40
42
|
end
|
41
|
-
end
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
assert out.include?("MyLogger")
|
45
|
+
assert out.include?("log")
|
46
|
+
assert out.include?(" MyLogger : indent"), out
|
47
|
+
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
def test_debug
|
50
|
+
out, _err = capture { @logger.debug(@logger, "debug") }
|
51
|
+
assert_equal out, ""
|
51
52
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
@logger.project.options[:verbose] = true
|
54
|
+
out, _err = capture { @logger.debug(@logger, "debug") }
|
55
|
+
assert out.include?("MyLogger")
|
56
|
+
assert out.include?("debug")
|
57
|
+
end
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
# TODO: test if color is outputted as well.
|
60
|
+
def test_warn
|
61
|
+
out, _err = capture { @logger.warn(@logger, "warn") }
|
62
|
+
assert out.include?("MyLogger")
|
63
|
+
assert out.include?("warn")
|
64
|
+
end
|
63
65
|
end
|
64
66
|
end
|
@@ -1,72 +1,69 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
|
4
|
-
|
5
|
-
# Test Roger Cleaner
|
6
|
-
class CleanerTest < ::Test::Unit::TestCase
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
require "test_helper"
|
2
|
+
require "roger/testing/mock_release"
|
3
|
+
|
4
|
+
module Roger
|
5
|
+
# Test Roger Cleaner
|
6
|
+
class CleanerTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@release = Testing::MockRelease.new
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
def teardown
|
12
|
+
@release.destroy
|
13
|
+
@release = nil
|
14
|
+
end
|
13
15
|
|
14
|
-
|
16
|
+
def test_use_array_as_pattern
|
17
|
+
dirs = %w(dir1 dir2)
|
15
18
|
|
16
|
-
|
17
|
-
|
19
|
+
dirs.each do |dir|
|
20
|
+
@release.project.construct.directory "build/#{dir}"
|
21
|
+
end
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
cleaner = Roger::Release::Cleaner.new(dirs)
|
24
|
+
cleaner.call(@release)
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
26
|
+
dirs.each do |dir|
|
27
|
+
path = @release.build_path + dir
|
28
|
+
assert(!File.directory?(path))
|
29
|
+
end
|
25
30
|
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_only_clean_inside_build_path_relative
|
29
|
-
cleaner = Roger::Release::Cleaner.new(@base)
|
30
|
-
inside_build_path = cleaner.send :inside_build_path?, @base, @base + "/html/formats"
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
def test_only_clean_inside_build_path_relative
|
33
|
+
project_path = @release.project.path
|
34
|
+
cleaner = Roger::Release::Cleaner.new(project_path)
|
35
|
+
inside = cleaner.send :inside_build_path?, project_path, project_path + "html"
|
34
36
|
|
35
|
-
|
36
|
-
|
37
|
-
cleaner = Roger::Release::Cleaner.new(path)
|
38
|
-
|
39
|
-
inside_build_path = cleaner.send :inside_build_path?, path, @base + "/html/formats"
|
37
|
+
assert(inside, "Only delete content inside build_path")
|
38
|
+
end
|
40
39
|
|
41
|
-
|
42
|
-
|
40
|
+
def test_only_clean_inside_build_path_absolute
|
41
|
+
project_path = @release.project.path
|
42
|
+
path = Pathname.new(project_path).realpath.to_s
|
43
|
+
cleaner = Roger::Release::Cleaner.new(path)
|
43
44
|
|
44
|
-
|
45
|
-
path = File.dirname(__FILE__)
|
46
|
-
cleaner = Roger::Release::Cleaner.new(path)
|
45
|
+
inside = cleaner.send :inside_build_path?, path, project_path + "html"
|
47
46
|
|
48
|
-
|
49
|
-
cleaner.send :inside_build_path?, path, @base + "/html/formats"
|
47
|
+
assert(inside, "Only delete content inside build_path")
|
50
48
|
end
|
51
|
-
end
|
52
49
|
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
def test_dont_clean_outside_build_path
|
51
|
+
path = File.dirname(__FILE__)
|
52
|
+
cleaner = Roger::Release::Cleaner.new(path)
|
56
53
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
54
|
+
assert_raise RuntimeError do
|
55
|
+
cleaner.send :inside_build_path?, path, @release.project.path + "html"
|
56
|
+
end
|
57
|
+
end
|
62
58
|
|
63
|
-
|
59
|
+
def test_dont_fail_on_nonexistent_files
|
60
|
+
path = "bla"
|
61
|
+
cleaner = Roger::Release::Cleaner.new(path)
|
64
62
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
assert(File.directory?(path))
|
63
|
+
assert(
|
64
|
+
!cleaner.send(:inside_build_path?, @release.project.path + "/html", path),
|
65
|
+
"Failed on nonexistent directories/files"
|
66
|
+
)
|
70
67
|
end
|
71
68
|
end
|
72
69
|
end
|
@@ -1,52 +1,40 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "mocha/test_unit"
|
4
|
-
require "tmpdir"
|
5
|
-
|
6
|
-
# Test for Roger GitBranchFinalizer
|
7
|
-
class GitBranchTest < Test::Unit::TestCase
|
8
|
-
def setup
|
9
|
-
# Mock git repo
|
10
|
-
@tmp_dir = Pathname.new(Dir.mktmpdir)
|
11
|
-
mock_repo_path = @tmp_dir + "mock_repo"
|
12
|
-
FileUtils.mkdir(mock_repo_path)
|
13
|
-
Dir.chdir(mock_repo_path) do
|
14
|
-
`git init`
|
15
|
-
`mkdir releases`
|
16
|
-
`touch releases/index.html`
|
17
|
-
end
|
1
|
+
require "test_helper"
|
2
|
+
require "roger/testing/mock_release"
|
18
3
|
|
19
|
-
|
20
|
-
|
4
|
+
module Roger
|
5
|
+
# Test for Roger GitBranchFinalizer
|
6
|
+
class GitBranchTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@release = Testing::MockRelease.new
|
21
9
|
|
22
|
-
|
23
|
-
|
24
|
-
log: true,
|
25
|
-
build_path: mock_repo_path.to_s + "/releases"
|
26
|
-
)
|
27
|
-
end
|
10
|
+
# Create a file to release in the build dir
|
11
|
+
@release.project.construct.file "build/index.html"
|
28
12
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
@release_mock = nil
|
33
|
-
end
|
13
|
+
# Set fixed version
|
14
|
+
@release.scm.version = "1.0.0"
|
15
|
+
end
|
34
16
|
|
35
|
-
|
36
|
-
|
17
|
+
def teardown
|
18
|
+
@release.destroy
|
19
|
+
@release = nil
|
20
|
+
end
|
37
21
|
|
38
|
-
|
39
|
-
|
40
|
-
remote: "http://we.aint.go/nna.push.git",
|
41
|
-
push: false,
|
42
|
-
cleanup: false
|
43
|
-
)
|
22
|
+
def test_basic_functionality
|
23
|
+
git_branch_finalizers = Roger::Release::Finalizers::GitBranch.new
|
44
24
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
25
|
+
output_dir = git_branch_finalizers.call(
|
26
|
+
@release,
|
27
|
+
remote: "http://we.aint.go/nna.push.git",
|
28
|
+
push: false,
|
29
|
+
cleanup: false
|
30
|
+
)
|
49
31
|
|
50
|
-
|
32
|
+
Dir.chdir(output_dir + "clone") do
|
33
|
+
commit_msg = `git log --pretty=oneline --abbrev-commit`
|
34
|
+
assert_match(/Release 1.0.0/, commit_msg)
|
35
|
+
end
|
36
|
+
|
37
|
+
FileUtils.rm_rf(output_dir)
|
38
|
+
end
|
51
39
|
end
|
52
40
|
end
|
@@ -1,48 +1,31 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "mocha/test_unit"
|
4
|
-
require "tmpdir"
|
1
|
+
require "test_helper"
|
2
|
+
require "roger/testing/mock_release"
|
5
3
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
module Roger
|
5
|
+
# Test for Roger Zip finalizer
|
6
|
+
class ZipTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@release = Testing::MockRelease.new
|
11
9
|
|
12
|
-
|
13
|
-
|
10
|
+
# Create a file to release in the build dir
|
11
|
+
@release.project.construct.file "build/index.html"
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
Dir.chdir(project_path) do
|
19
|
-
`git init`
|
20
|
-
`mkdir html`
|
21
|
-
`touch html/index.html`
|
13
|
+
# Set fixed version
|
14
|
+
@release.scm.version = "1.0.0"
|
22
15
|
end
|
23
16
|
|
24
|
-
#
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
log: true,
|
30
|
-
target_path: @release_path,
|
31
|
-
build_path: project_path + "html"
|
32
|
-
)
|
33
|
-
end
|
34
|
-
|
35
|
-
# called after every single test
|
36
|
-
def teardown
|
37
|
-
FileUtils.rm_rf(@tmp_dir)
|
38
|
-
@release_mock = nil
|
39
|
-
end
|
17
|
+
# called after every single test
|
18
|
+
def teardown
|
19
|
+
@release.destroy
|
20
|
+
@release = nil
|
21
|
+
end
|
40
22
|
|
41
|
-
|
42
|
-
|
23
|
+
def test_basic_functionality
|
24
|
+
finalizer = Roger::Release::Finalizers::Zip.new
|
43
25
|
|
44
|
-
|
26
|
+
finalizer.call(@release)
|
45
27
|
|
46
|
-
|
28
|
+
assert File.exist?(@release.target_path + "html-1.0.0.zip"), @release.target_path.inspect
|
29
|
+
end
|
47
30
|
end
|
48
31
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "roger/testing/mock_release"
|
3
|
+
|
4
|
+
module Roger
|
5
|
+
# Test Roger Mockup
|
6
|
+
class MockupTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@release = Testing::MockRelease.new
|
9
|
+
@mockup = Roger::Release::Processors::Mockup.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
@release.destroy
|
14
|
+
@release = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_empty_release_runs
|
18
|
+
files = @mockup.call(@release)
|
19
|
+
assert_equal 0, files.length
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Test the target_path function of Mockup
|
24
|
+
class MockupTargetPathTest < ::Test::Unit::TestCase
|
25
|
+
def setup
|
26
|
+
@base = File.dirname(__FILE__) + "/../../../project"
|
27
|
+
@template = Roger::Template.open(@base + "/html/formats/erb.html.erb")
|
28
|
+
@processor = Roger::Release::Processors::Mockup.new
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_with_html_extension
|
32
|
+
assert_equal "bla/test.html", @processor.target_path("bla/test.html", @template).to_s
|
33
|
+
assert_equal "test.html", @processor.target_path("test.html", @template).to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_with_double_extension
|
37
|
+
assert_equal "bla/test.html", @processor.target_path("bla/test.html.erb", @template).to_s
|
38
|
+
assert_equal "test.html", @processor.target_path("test.html.erb", @template).to_s
|
39
|
+
assert_equal "test.html", @processor.target_path("test.html.test", @template).to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_with_unknown_template_mime
|
43
|
+
assert_equal "bla/test.rhtml", @processor.target_path("bla/test.rhtml", @template).to_s
|
44
|
+
assert_equal "test.rhtml", @processor.target_path("test.rhtml", @template).to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_with_template_mime_with_existing_extension
|
48
|
+
template = Roger::Template.open(@base + "/html/formats/csv.rcsv")
|
49
|
+
|
50
|
+
assert_equal "bla/test.csv", @processor.target_path("bla/test.rcsv", template).to_s
|
51
|
+
assert_equal "test.csv", @processor.target_path("test.erb", template).to_s
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_with_template_mime_without_existing_extension
|
55
|
+
template = Roger::Template.open(@base + "/html/formats/csv.rcsv")
|
56
|
+
|
57
|
+
assert_equal "bla/test.csv", @processor.target_path("bla/test", template).to_s
|
58
|
+
assert_equal "test.csv", @processor.target_path("test", template).to_s
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "roger/testing/mock_release"
|
3
|
+
|
4
|
+
module Roger
|
5
|
+
# Test Roger Mockup
|
6
|
+
class UrlRelativizerTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@release = Testing::MockRelease.new
|
9
|
+
@processor = Roger::Release::Processors::UrlRelativizer.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
@release.destroy
|
14
|
+
@release = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_empty_release_runs
|
18
|
+
files = @processor.call(@release)
|
19
|
+
assert_equal 0, files.length
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_basic_relativization
|
23
|
+
@release.project.construct.directory "build/sub" do |dir|
|
24
|
+
dir.file "test.html", "<a href='/test.html'>link</a>"
|
25
|
+
end
|
26
|
+
@release.project.construct.file "build/test.html"
|
27
|
+
|
28
|
+
files = @processor.call(@release)
|
29
|
+
assert_equal 2, files.length
|
30
|
+
|
31
|
+
contents = File.read((@release.build_path + "sub/test.html").to_s)
|
32
|
+
assert contents.include?("../test.html")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,47 +1,55 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
1
|
+
require "test_helper"
|
2
|
+
require "./lib/roger/release"
|
3
|
+
|
4
|
+
module Roger
|
5
|
+
# Test Roger processors
|
6
|
+
class ProcessorsTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@origmap = Roger::Release::Processors.map.dup
|
9
|
+
Roger::Release::Processors.map.clear
|
10
|
+
end
|
3
11
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
12
|
+
def teardown
|
13
|
+
Roger::Release::Processors.map.clear
|
14
|
+
Roger::Release::Processors.map.update(@origmap)
|
15
|
+
end
|
9
16
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
def test_register_processor
|
18
|
+
processor = ->(_e) { fail "ProcessorName" }
|
19
|
+
assert Roger::Release::Processors.register(:name, processor)
|
20
|
+
assert_equal Roger::Release::Processors.map, name: processor
|
21
|
+
end
|
15
22
|
|
16
|
-
|
17
|
-
|
23
|
+
def test_register_processor_with_symbol_only_name
|
24
|
+
processor = ->(_e) { fail "ProcessorName" }
|
18
25
|
|
19
|
-
|
20
|
-
|
21
|
-
|
26
|
+
assert_raise(ArgumentError) do
|
27
|
+
Roger::Release::Processors.register("name", processor)
|
28
|
+
end
|
22
29
|
|
23
|
-
|
24
|
-
|
30
|
+
assert_raise(ArgumentError) do
|
31
|
+
Roger::Release::Processors.register("name", processor)
|
32
|
+
end
|
25
33
|
end
|
26
|
-
end
|
27
34
|
|
28
|
-
|
29
|
-
|
30
|
-
Roger::Release::Processors.register(:name, processor)
|
31
|
-
|
32
|
-
assert_raise(ArgumentError) do
|
35
|
+
def test_register_processor_with_same_name
|
36
|
+
processor = ->(_e) { fail "ProcessorName" }
|
33
37
|
Roger::Release::Processors.register(:name, processor)
|
38
|
+
|
39
|
+
assert_raise(ArgumentError) do
|
40
|
+
Roger::Release::Processors.register(:name, processor)
|
41
|
+
end
|
34
42
|
end
|
35
|
-
end
|
36
43
|
|
37
|
-
|
38
|
-
|
39
|
-
|
44
|
+
def test_register_processor_with_same_contents
|
45
|
+
processor = ->(_e) { fail "ProcessorName" }
|
46
|
+
Roger::Release::Processors.register(:name, processor)
|
40
47
|
|
41
|
-
|
42
|
-
|
43
|
-
|
48
|
+
assert_nothing_raised do
|
49
|
+
Roger::Release::Processors.register(:name2, processor)
|
50
|
+
end
|
44
51
|
|
45
|
-
|
52
|
+
assert_equal Roger::Release::Processors.map, name: processor, name2: processor
|
53
|
+
end
|
46
54
|
end
|
47
55
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "mocha/test_unit"
|
3
|
+
|
4
|
+
module Roger
|
5
|
+
# Test for Roger Zip finalizer
|
6
|
+
class FixedScmTest < ::Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@scm = Roger::Release::Scm::Fixed.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_implements_scm_interfase
|
12
|
+
assert @scm.respond_to?(:version)
|
13
|
+
assert @scm.respond_to?(:date)
|
14
|
+
assert @scm.respond_to?(:previous)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_has_defaults
|
18
|
+
assert_equal "0.0.0", @scm.version
|
19
|
+
assert_equal "0.0.0", @scm.previous
|
20
|
+
assert @scm.date
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_input_equals_output
|
24
|
+
assert_equal "0.0.0", @scm.version
|
25
|
+
@scm.version = "1"
|
26
|
+
assert_equal "1", @scm.version
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/test/unit/release_test.rb
CHANGED
data/test/unit/resolver_test.rb
CHANGED
data/test/unit/server_test.rb
CHANGED
data/test/unit/template_test.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
if ENV["CODECLIMATE_REPO_TOKEN"]
|
2
|
+
require "codeclimate-test-reporter"
|
3
|
+
CodeClimate::TestReporter.start
|
4
|
+
else
|
5
|
+
require "simplecov"
|
6
|
+
SimpleCov.start
|
7
|
+
end
|
8
|
+
|
9
|
+
require "test/unit"
|
10
|
+
require "mocha/test_unit"
|
11
|
+
|
12
|
+
require File.dirname(__FILE__) + "/../helpers/cli"
|
data/test/unit/test_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flurin Egger
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-06-
|
13
|
+
date: 2015-06-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -124,6 +124,20 @@ dependencies:
|
|
124
124
|
- - ~>
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: 1.1.0
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: simplecov
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.10.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ~>
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 0.10.0
|
127
141
|
- !ruby/object:Gem::Dependency
|
128
142
|
name: puma
|
129
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,6 +166,20 @@ dependencies:
|
|
152
166
|
- - ~>
|
153
167
|
- !ruby/object:Gem::Version
|
154
168
|
version: 0.31.0
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: test_construct
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ~>
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '2.0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ~>
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '2.0'
|
155
183
|
description: See homepage for more information.
|
156
184
|
email:
|
157
185
|
- info@digitpaint.nl
|
@@ -215,11 +243,14 @@ files:
|
|
215
243
|
- lib/roger/release/processors/mockup.rb
|
216
244
|
- lib/roger/release/processors/url_relativizer.rb
|
217
245
|
- lib/roger/release/scm.rb
|
246
|
+
- lib/roger/release/scm/fixed.rb
|
218
247
|
- lib/roger/release/scm/git.rb
|
219
248
|
- lib/roger/resolver.rb
|
220
249
|
- lib/roger/server.rb
|
221
250
|
- lib/roger/template.rb
|
222
251
|
- lib/roger/test.rb
|
252
|
+
- lib/roger/testing/mock_project.rb
|
253
|
+
- lib/roger/testing/mock_release.rb
|
223
254
|
- lib/roger/version.rb
|
224
255
|
- roger.gemspec
|
225
256
|
- test/helpers/cli.rb
|
@@ -269,12 +300,15 @@ files:
|
|
269
300
|
- test/unit/release/cleaner_test.rb
|
270
301
|
- test/unit/release/finalizers/git_branch_test.rb
|
271
302
|
- test/unit/release/finalizers/zip_test.rb
|
272
|
-
- test/unit/release/mockup_test.rb
|
303
|
+
- test/unit/release/processors/mockup_test.rb
|
304
|
+
- test/unit/release/processors/url_relativizer_test.rb
|
273
305
|
- test/unit/release/processors_test.rb
|
306
|
+
- test/unit/release/scm/fixed_test.rb
|
274
307
|
- test/unit/release_test.rb
|
275
308
|
- test/unit/resolver_test.rb
|
276
309
|
- test/unit/server_test.rb
|
277
310
|
- test/unit/template_test.rb
|
311
|
+
- test/unit/test_helper.rb
|
278
312
|
- test/unit/test_test.rb
|
279
313
|
homepage: http://github.com/digitpaint/roger
|
280
314
|
licenses:
|
@@ -349,10 +383,13 @@ test_files:
|
|
349
383
|
- test/unit/release/cleaner_test.rb
|
350
384
|
- test/unit/release/finalizers/git_branch_test.rb
|
351
385
|
- test/unit/release/finalizers/zip_test.rb
|
352
|
-
- test/unit/release/mockup_test.rb
|
386
|
+
- test/unit/release/processors/mockup_test.rb
|
387
|
+
- test/unit/release/processors/url_relativizer_test.rb
|
353
388
|
- test/unit/release/processors_test.rb
|
389
|
+
- test/unit/release/scm/fixed_test.rb
|
354
390
|
- test/unit/release_test.rb
|
355
391
|
- test/unit/resolver_test.rb
|
356
392
|
- test/unit/server_test.rb
|
357
393
|
- test/unit/template_test.rb
|
394
|
+
- test/unit/test_helper.rb
|
358
395
|
- test/unit/test_test.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "./lib/roger/release.rb"
|
2
|
-
require "./lib/roger/release.rb"
|
3
|
-
require "test/unit"
|
4
|
-
|
5
|
-
# Test Roger Mockup
|
6
|
-
class MockupTest < ::Test::Unit::TestCase
|
7
|
-
def setup
|
8
|
-
@base = File.dirname(__FILE__) + "/../../project"
|
9
|
-
@project = Roger::Project.new(@base)
|
10
|
-
@release = Roger::Release.new(@project)
|
11
|
-
@mockup = Roger::Release::Processors::Mockup.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_empty_release_runs
|
15
|
-
files = @mockup.call(@release)
|
16
|
-
assert_equal 0, files.length
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# Test the target_path function of Mockup
|
21
|
-
class MockupTargetPathTest < ::Test::Unit::TestCase
|
22
|
-
def setup
|
23
|
-
@base = File.dirname(__FILE__) + "/../../project"
|
24
|
-
@template = Roger::Template.open(@base + "/html/formats/erb.html.erb")
|
25
|
-
@processor = Roger::Release::Processors::Mockup.new
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_with_html_extension
|
29
|
-
assert_equal "bla/test.html", @processor.target_path("bla/test.html", @template).to_s
|
30
|
-
assert_equal "test.html", @processor.target_path("test.html", @template).to_s
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_with_double_extension
|
34
|
-
assert_equal "bla/test.html", @processor.target_path("bla/test.html.erb", @template).to_s
|
35
|
-
assert_equal "test.html", @processor.target_path("test.html.erb", @template).to_s
|
36
|
-
assert_equal "test.html", @processor.target_path("test.html.test", @template).to_s
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_with_unknown_template_mime
|
40
|
-
assert_equal "bla/test.rhtml", @processor.target_path("bla/test.rhtml", @template).to_s
|
41
|
-
assert_equal "test.rhtml", @processor.target_path("test.rhtml", @template).to_s
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_with_template_mime_with_existing_extension
|
45
|
-
template = Roger::Template.open(@base + "/html/formats/csv.rcsv")
|
46
|
-
|
47
|
-
assert_equal "bla/test.csv", @processor.target_path("bla/test.rcsv", template).to_s
|
48
|
-
assert_equal "test.csv", @processor.target_path("test.erb", template).to_s
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_with_template_mime_without_existing_extension
|
52
|
-
template = Roger::Template.open(@base + "/html/formats/csv.rcsv")
|
53
|
-
|
54
|
-
assert_equal "bla/test.csv", @processor.target_path("bla/test", template).to_s
|
55
|
-
assert_equal "test.csv", @processor.target_path("test", template).to_s
|
56
|
-
end
|
57
|
-
end
|