falkorlib 0.1.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.
@@ -0,0 +1,3 @@
1
+
2
+ require "falkorlib/common"
3
+ require "falkorlib/gitflow"
@@ -0,0 +1,65 @@
1
+ module FalkorLib
2
+ module Version
3
+
4
+ ##
5
+ # Change the MAJOR, MINOR and PATCH constants below
6
+ # to adjust the version of the FalkorLib gem
7
+ #
8
+ # MAJOR:
9
+ # Defines the major version
10
+ # MINOR:
11
+ # Defines the minor version
12
+ # PATCH:
13
+ # Defines the patch version
14
+ MAJOR, MINOR, PATCH = 0, 1, 0
15
+
16
+ ##
17
+ # Returns the major version ( big release based off of multiple minor releases )
18
+ def self.major
19
+ MAJOR
20
+ end
21
+
22
+ ##
23
+ # Returns the minor version ( small release based off of multiple patches )
24
+ def self.minor
25
+ MINOR
26
+ end
27
+
28
+ ##
29
+ # Returns the patch version ( updates, features and (crucial) bug fixes )
30
+ def self.patch
31
+ PATCH
32
+ end
33
+
34
+ ##
35
+ # Returns the full version
36
+ def self.to_s
37
+ [ MAJOR, MINOR, PATCH ].join('.')
38
+ end
39
+
40
+ ## Return a new version number based on
41
+ # - the old version (format: x.y.z)
42
+ # - the level of bumping (either :major, :minor, :patch)
43
+ def bump_version(oldversion, level)
44
+ if oldversion =~ /^(\d+)\.(\d+)\.(\d+)$/
45
+ major = $1.to_i
46
+ minor = $2.to_i
47
+ patch = $3.to_i
48
+ end
49
+ case level
50
+ when ':major'
51
+ major += 1
52
+ minor = 0
53
+ patch = 0
54
+ when ':minor'
55
+ minor += 1
56
+ patch = 0
57
+ when ':patch'
58
+ patch += 1
59
+ end
60
+ version = [major, minor, patch].compact.join('.')
61
+ end
62
+
63
+ end
64
+ VERSION = Version.to_s
65
+ end
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+ require 'tempfile'
3
+
4
+ describe FalkorLib do
5
+
6
+ include FalkorLib::Common
7
+
8
+ #############################################
9
+ context "Test (common) printing functions" do
10
+
11
+ @print_test_conf = {
12
+ :info => {
13
+ :color => :green,
14
+ :prefix => "[INFO]",
15
+ },
16
+ :warning => {
17
+ :color => :cyan,
18
+ :prefix => "/!\\ WARNING:",
19
+ },
20
+ :error => {
21
+ :color => :red,
22
+ :prefix => "*** ERROR ***",
23
+ }
24
+ }
25
+
26
+ # Check the color functions
27
+ @print_test_conf.values.collect{ |e| e[:color] }.each do |color|
28
+ it "should check a #{color} text" do
29
+ STDOUT.should_receive(:puts).with(send("#{color}", "#{color} text"))
30
+ puts send("#{color}", "#{color} text")
31
+ end
32
+ end
33
+
34
+ # Check the prining messages
35
+ @print_test_conf.each do |method,conf|
36
+ it "should put a #{method} message" do
37
+ ((method == :error) ? STDERR : STDOUT).should_receive(:puts).with(send("#{conf[:color]}", "#{conf[:prefix]} #{method} text"))
38
+ if (method == :error)
39
+ lambda {
40
+ send("#{method}", "#{method} text")
41
+ }.should raise_error #(SystemExit)
42
+ else
43
+ send("#{method}", "#{method} text")
44
+ end
45
+ end
46
+ end
47
+
48
+ # Check the ask function
49
+ ['', 'default'].each do |default_answer|
50
+ @query = "Am I a query"
51
+ it "should ask '#{@query}' with default answer '#{default_answer}' and no answer" do
52
+ STDIN.should_receive(:gets).and_return('')
53
+ results = capture(:stdout) {
54
+ answer = ask(@query, default_answer)
55
+ if default_answer.empty?
56
+ answer.should be_empty
57
+ else
58
+ answer.should == default_answer
59
+ end
60
+ }
61
+ results.should =~ /#{@query}/;
62
+ unless default_answer.empty?
63
+ results.should =~ /Default: #{default_answer}/;
64
+ end
65
+ end
66
+ end
67
+
68
+ # Check the really_continue? function
69
+ [ '', 'Yes', 'y', 'Y', 'yes' ].each do |answer|
70
+ it "should really continue after answer '#{answer}'" do
71
+ STDIN.should_receive(:gets).and_return(answer)
72
+ results = capture(:stdout) { really_continue? }
73
+ results.should =~ /=> Do you really want to continue/;
74
+ results.should =~ /Default: Yes/;
75
+ end
76
+ next if answer.empty?
77
+ it "should really continue (despite default answer 'No') after answer '#{answer}'" do
78
+ STDIN.should_receive(:gets).and_return(answer)
79
+ results = capture(:stdout) { really_continue?('No') }
80
+ results.should =~ /=> Do you really want to continue/;
81
+ results.should =~ /Default: No/;
82
+ end
83
+ end
84
+
85
+ [ '', 'No', 'n', 'N', 'no' ].each do |answer|
86
+ it "should not continue (despite default answer 'No') and exit after answer '#{answer}'" do
87
+ STDIN.should_receive(:gets).and_return(answer)
88
+ results = capture(:stdout) {
89
+ lambda{
90
+ really_continue?('No')
91
+ }.should raise_error (SystemExit)
92
+ }
93
+ results.should =~ /=> Do you really want to continue/;
94
+ results.should =~ /Default: No/;
95
+ end
96
+ next if answer.empty?
97
+ it "should not continue and exit after answer '#{answer}'" do
98
+ STDIN.should_receive(:gets).and_return(answer)
99
+ results = capture(:stdout) {
100
+ lambda{
101
+ really_continue?
102
+ }.should raise_error (SystemExit)
103
+ }
104
+ results.should =~ /=> Do you really want to continue/;
105
+ results.should =~ /Default: Yes/;
106
+ end
107
+ end
108
+
109
+ # Check the command? function
110
+ [ 'sqgfyueztruyjf', 'ruby' ].each do |command|
111
+ it "should check the command '#{command}'" do
112
+ command?(command).should ((command == 'ruby') ? be_true : be_false)
113
+ end
114
+ end
115
+ end
116
+
117
+ #############################################
118
+ context "Test (common) YAML functions" do
119
+
120
+ it "should load the correct hash from YAML" do
121
+ file_config = {:domain => "foo.com", :nested => { 'a1' => 2 }}
122
+ YAML.stub(:load_file).and_return(file_config)
123
+ loaded = load_config('toto')
124
+ loaded.should == file_config
125
+ end
126
+
127
+ it "should store the correct hash to YAML" do
128
+ file_config = {:domain => "foo.com", :nested => { 'a1' => 2 }}
129
+ f = Tempfile.new('toto')
130
+ store_config(f.path, file_config)
131
+ copy_file_config = YAML::load_file(f.path)
132
+ copy_file_config.should == file_config
133
+ end
134
+
135
+ end
136
+
137
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby
2
+ #########################################
3
+ # gitflow_spec.rb
4
+ # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
5
+ # Time-stamp: <Jeu 2013-01-31 23:22 svarrette>
6
+ #
7
+ # @description Check the
8
+ #
9
+ # Copyright (c) 2013 Sebastien Varrette <Sebastien.Varrette@uni.lu>
10
+ # . http://varrette.gforge.uni.lu
11
+ ##############################################################################
12
+
13
+ require 'spec_helper'
14
+ require 'tmpdir'
15
+
16
+ describe FalkorLib do
17
+
18
+ include FalkorLib::Common
19
+
20
+ # it "test default initialization of a git-flow dir" do
21
+ # tempdir = Dir.tmpdir
22
+ # #puts "tempdir = #{tempdir}"
23
+
24
+ # FalkorLib::GitFlow::init(tempdir)
25
+
26
+ # File.directory?(File.join(tempdir, '.git')).should be_true
27
+
28
+ # g = Git.open(tempdir)
29
+ # g.config['gitflow.branch.master'].should == FalkorLib::GitFlow::global_config(:master)
30
+ # g.config['gitflow.branch.develop'].should == FalkorLib::GitFlow::global_config(:develop)
31
+ # [ :feature, :release, :hotfix, :support, :versiontag ].each do |e|
32
+ # g.config["gitflow.prefix.#{e}"].should == FalkorLib::GitFlow::global_config(e.to_sym)
33
+ # end
34
+ # FileUtils.rm_rf(tempdir)
35
+ # end
36
+
37
+ # [ :master, :develop, :feature, :release, :hotfix, :support, :versiontag ].each do |elem|
38
+ # specialvalue = 'uncommonvalue'
39
+
40
+ # it "test specialized initialization of a git-flow dir (alter '#{elem}' option with special value #{specialvalue})" do
41
+ # tempdir = Dir.tmpdir
42
+ # #puts "tempdir = #{tempdir}"
43
+
44
+ # FalkorLib::GitFlow::init(tempdir, { elem.to_sym => "#{specialvalue}"})
45
+
46
+ # File.directory?(File.join(tempdir, '.git')).should be_true
47
+
48
+ # g = Git.open(tempdir)
49
+ # [ :master, :develop].each do |e|
50
+ # #puts "elem = #{elem}, e = #{e}, ", g.config["gitflow.branch.#{e}"]
51
+ # g.config["gitflow.branch.#{e}"].should == ((elem == e) ? specialvalue : FalkorLib::GitFlow::global_config(e.to_sym))
52
+ # end
53
+ # [ :feature, :release, :hotfix, :support, :versiontag ].each do |e|
54
+ # g.config["gitflow.prefix.#{e}"].should == ((elem == e) ? specialvalue : FalkorLib::GitFlow::global_config(e.to_sym))
55
+ # end
56
+ # FileUtils.rm_rf(tempdir)
57
+ # end
58
+ # end
59
+
60
+
61
+
62
+
63
+
64
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ describe FalkorLib do
3
+
4
+ it "should have a version number" do
5
+ FalkorLib.const_defined?(:VERSION).should be_true
6
+ end
7
+
8
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'falkorlib'
3
+ require 'falkorlib/common'
4
+ require 'falkorlib/gitflow'
5
+
6
+ def capture(stream)
7
+ begin
8
+ stream = stream.to_s
9
+ eval "$#{stream} = StringIO.new"
10
+ yield
11
+ result = eval("$#{stream}").string
12
+ ensure
13
+ eval("$#{stream} = #{stream.upcase}")
14
+ end
15
+ result
16
+ end
@@ -0,0 +1,75 @@
1
+ # Installs a rake task for debuging the announcement mail.
2
+ #
3
+ # This file installs the 'rake debug_mail' that flushes an announcement mail
4
+ # for your library on the standard output. It is automatically generated
5
+ # by Noe from your .noespec file, and should therefore be configured there,
6
+ # under the variables/rake_tasks/debug_mail entry, as illustrated below:
7
+ #
8
+ # variables:
9
+ # rake_tasks:
10
+ # debug_mail:
11
+ # rx_changelog_sections: /^#/
12
+ # nb_changelog_sections: 1
13
+ # ...
14
+ #
15
+ # If you have specific needs requiring manual intervention on this file,
16
+ # don't forget to set safe-override to false in your noe specification:
17
+ #
18
+ # template-info:
19
+ # manifest:
20
+ # tasks/debug_mail.rake:
21
+ # safe-override: false
22
+ #
23
+ # The mail template used can be found in debug_mail.txt. That file may be
24
+ # changed to tune the mail you want to send. If you do so, don't forget to
25
+ # add a manifest entry in your .noespec file to avoid overriding you
26
+ # changes. The mail template uses wlang, with parentheses for block
27
+ # delimiters.
28
+ #
29
+ # template-info:
30
+ # manifest:
31
+ # tasks/debug_mail.txt:
32
+ # safe-override: false
33
+ #
34
+ desc "Debug the release announcement mail"
35
+ task :debug_mail do
36
+ begin
37
+ require 'wlang'
38
+ rescue LoadError
39
+ abort "wlang is not available. Try 'gem install wlang'"
40
+ end
41
+ require 'yaml'
42
+
43
+ # Check that a .noespec file exists
44
+ noespec_file = File.expand_path('../../.falkorlib.noespec', __FILE__)
45
+ unless File.exists?(noespec_file)
46
+ raise "Unable to find .noespec project file, sorry."
47
+ end
48
+
49
+ # Load it as well as variables and options
50
+ noespec = YAML::load(File.read(noespec_file))
51
+ vars = noespec['variables'] || {}
52
+
53
+ # Changes are taken from CHANGELOG
54
+ logs = Dir[File.expand_path("../../CHANGELOG.*", __FILE__)]
55
+ unless logs.size == 1
56
+ abort "Unable to find a changelog file"
57
+ end
58
+
59
+ # Load interesting changesets
60
+ changes, end_found = [], 0
61
+ File.readlines(logs.first).select{|line|
62
+ if line =~ /^# /
63
+ break if end_found >= 1
64
+ end_found += 1
65
+ end
66
+ changes << line
67
+ }
68
+ vars['changes'] = changes.join
69
+
70
+ # WLang template
71
+ template = File.expand_path('../debug_mail.txt', __FILE__)
72
+
73
+ # Let's go!
74
+ $stdout << WLang::file_instantiate(template, vars, "wlang/active-text")
75
+ end
@@ -0,0 +1,13 @@
1
+ Subject: [ANN] !{lower} !{version} Released
2
+
3
+ !{lower} version !{version} has been released!
4
+
5
+ !{summary}
6
+
7
+ *{links as l}{* <!{l}>}{!{"\n"}}
8
+
9
+ !{description}
10
+
11
+ Changes:
12
+
13
+ !{changes}
data/tasks/gem.rake ADDED
@@ -0,0 +1,73 @@
1
+ # Installs rake tasks for gemming and packaging
2
+ #
3
+ # This file installs the 'rake package', 'rake gem' tasks and associates
4
+ # (clobber_package, repackage, ...). It is automatically generated by Noe
5
+ # from your .noespec file, and should therefore be configured there, under
6
+ # the variables/rake_tasks/gem entry, as illustrated below:
7
+ #
8
+ # variables:
9
+ # rake_tasks:
10
+ # gem:
11
+ # package_dir: pkg
12
+ # need_tar: false
13
+ # need_tar_gz: false
14
+ # need_tar_bz2: false
15
+ # need_zip: false
16
+ # ...
17
+ #
18
+ # If you have specific needs requiring manual intervention on this file,
19
+ # don't forget to set safe-override to false in your noe specification:
20
+ #
21
+ # template-info:
22
+ # manifest:
23
+ # tasks/gem.rake:
24
+ # safe-override: false
25
+ #
26
+ begin
27
+ require 'rubygems/package_task'
28
+
29
+ # Dynamically load the gem spec
30
+ gemspec_file = File.expand_path('../../falkorlib.gemspec', __FILE__)
31
+ gemspec = Kernel.eval(File.read(gemspec_file))
32
+
33
+ Gem::PackageTask.new(gemspec) do |t|
34
+
35
+ # Name of the package
36
+ t.name = gemspec.name
37
+
38
+ # Version of the package
39
+ t.version = gemspec.version
40
+
41
+ # Directory used to store the package files
42
+ t.package_dir = "pkg"
43
+
44
+ # True if a gzipped tar file (tgz) should be produced
45
+ t.need_tar = false
46
+
47
+ # True if a gzipped tar file (tar.gz) should be produced
48
+ t.need_tar_gz = false
49
+
50
+ # True if a bzip2'd tar file (tar.bz2) should be produced
51
+ t.need_tar_bz2 = false
52
+
53
+ # True if a zip file should be produced (default is false)
54
+ t.need_zip = false
55
+
56
+ # List of files to be included in the package.
57
+ t.package_files = gemspec.files
58
+
59
+ # Tar command for gzipped or bzip2ed archives.
60
+ t.tar_command = "tar"
61
+
62
+ # Zip command for zipped archives.
63
+ t.zip_command = "zip"
64
+
65
+ end
66
+ rescue LoadError
67
+ task :gem do
68
+ abort 'rubygems/package_task is not available. You should verify your rubygems installation'
69
+ end
70
+ task :package do
71
+ abort 'rubygems/package_task is not available. You should verify your rubygems installation'
72
+ end
73
+ end