mina-hooks 0.1 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4aa553044d6d1d55d22dba9a45e4124f6d971644
4
- data.tar.gz: 8f42095ef8b929d99910aa95bf4540ae32933697
3
+ metadata.gz: aae82afddf542410261fdad75a76f401aee5bc17
4
+ data.tar.gz: 68eff9f5ad53598ea8b5bb54feb5ed9538f306be
5
5
  SHA512:
6
- metadata.gz: 7b47d4d36bc8bb9e433fe9aa1d35a18edc2af331daf8773bdabe15f6a6f236f541837ed46d179cdbc678cb3f81be83c4eb114e06ec64addf1f510a6619e04743
7
- data.tar.gz: 2bccac6b8502d061cf7aefc7732dbf779834d26d86cffeb85b8b1c96c97565b98096d4ed82816ac0986e46dfb1165570b3b852dfcf17d41fa99c30a4cf766c23
6
+ metadata.gz: 83e7bb03e8e5ef0e207cce2a9015194cbc97b8838e387d8a04979060ee131ad33b40e85f3f6a954fe2dd46bfeea2962b3802793fef068901a822800ab0576741
7
+ data.tar.gz: 88979cc6c52b5b848dfa37dfe2f3a15abb14c853e5d225e103fba206b31cf8f22dd5633c39954f13d991f509f8b2edf79da43ab9fa9692e2b77e1600539f0cf9
@@ -1,3 +1,11 @@
1
+ ### 0.3 (unreleased)
2
+
3
+
4
+ ### 0.2 / 2013-12-02
5
+
6
+ * Only run mina-hooks when deploying.
7
+ * Fix tests for mina scope that weren't executing.
8
+
1
9
  ### 0.1 / 2013-11-30
2
10
 
3
11
  * Initial release:
@@ -23,17 +23,21 @@ module Mina
23
23
  end
24
24
 
25
25
  def invoke_before_mina_tasks
26
+ return unless deploying?
27
+
26
28
  print_local_status "Invoke before mina tasks"
27
- print_task_list self.before_mina_tasks if verbose_mode?
29
+ print_task_list self.before_mina_tasks if self.verbose_mode?
28
30
 
29
- self.before_mina_tasks.each { |task_name| invoke task_name }
31
+ self.before_mina_tasks.each { |task_name| self.invoke task_name }
30
32
  end
31
33
 
32
34
  def invoke_after_mina_tasks
35
+ return unless deploying?
36
+
33
37
  print_local_status "Invoke after mina tasks"
34
- print_task_list self.after_mina_tasks if verbose_mode?
38
+ print_task_list self.after_mina_tasks if self.verbose_mode?
35
39
 
36
- self.after_mina_tasks.each { |task_name| invoke task_name }
40
+ self.after_mina_tasks.each { |task_name| self.invoke task_name }
37
41
  end
38
42
 
39
43
  def mina_cleanup!
@@ -53,6 +57,9 @@ module Mina
53
57
  puts "#{color('<-----', 32)} #{msg}"
54
58
  end
55
59
 
60
+ def deploying?
61
+ @deploying ||= ARGV.include? "deploy"
62
+ end
56
63
  end
57
64
  end
58
65
  end
@@ -1,6 +1,6 @@
1
1
  module Mina
2
2
  module Hooks
3
3
  # mina-hooks version
4
- VERSION = "0.1"
4
+ VERSION = "0.2"
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  require "mina/hooks"
2
2
 
3
3
  desc "test hook task"
4
- task :deploy_test do
4
+ task :test_task do
5
5
  puts "test hooks"
6
6
  end
@@ -1,4 +1,5 @@
1
1
  require "rubygems"
2
+ require "securerandom"
2
3
 
3
4
  begin
4
5
  require "bundler"
@@ -20,7 +21,7 @@ require "mina"
20
21
 
21
22
  # create a regular class scope to test methods
22
23
  class MinaClass
23
- require "mina/hooks"
24
+ require "mina/hooks/plugin"
24
25
  extend Mina::Hooks::Plugin
25
26
  end
26
27
 
@@ -29,7 +30,9 @@ def mina_app
29
30
  Rake.application.instance_eval do
30
31
  init "mina"
31
32
  require "mina/rake"
32
- load "test/deploy.rb"
33
+
34
+ @rakefiles = ["test/deploy.rb"]
35
+ load_rakefile
33
36
 
34
37
  # list of tasks that were "invoked"
35
38
  @invoked_tasks = []
@@ -54,7 +57,38 @@ def mina_app
54
57
 
55
58
  # fake mina_cleanup! command for testing
56
59
  def mina_cleanup!
57
- cleanup_called = true
60
+ super
61
+ @cleanup_called = true
62
+ end
63
+
64
+ @deploying = true
65
+
66
+ # set not deploying!
67
+ def not_deploying!
68
+ @deploying = false
69
+ end
70
+
71
+ def test_task(task_name = random_task_name, &block)
72
+ task = define_task(Rake::Task, task_name) do |t|
73
+ extend Mina::Helpers
74
+ extend Mina::Hooks::Plugin # simulates a rakefile env
75
+ block.call(self)
76
+ end
77
+ task.invoke
78
+ task
79
+ end
80
+
81
+ # to avoid rake task enhancing and correct invocation
82
+ def random_task_name
83
+ "test_task_#{SecureRandom.hex}"
84
+ end
85
+
86
+ def reset!
87
+ @before_mina_tasks = []
88
+ @after_mina_tasks = []
89
+ @invoked_tasks = []
90
+ @cleanup_called = false
91
+ @deploying = true
58
92
  end
59
93
 
60
94
  return self
@@ -62,10 +96,8 @@ def mina_app
62
96
  end
63
97
 
64
98
  # create a task in the scope of the mina app
65
- def task(name = "test_task", &block)
66
- mina_app.instance_eval do
67
- define_task Rake::Task, name, &block
68
- end
99
+ def task(&block)
100
+ mina_app.test_task(&block)
69
101
  end
70
102
 
71
103
  require "minitest/autorun"
@@ -42,90 +42,106 @@ describe Mina::Hooks::Plugin do
42
42
 
43
43
  describe "default task lists" do
44
44
  it "before tasks" do
45
- assert_equal klass.before_mina_tasks, []
45
+ assert_equal [], klass.before_mina_tasks
46
46
  end
47
47
 
48
48
  it "after tasks" do
49
- assert_equal klass.after_mina_tasks, []
49
+ assert_equal [], klass.after_mina_tasks
50
50
  end
51
51
  end # default task lists
52
52
  end # class scope
53
53
 
54
54
  describe "rake/mina scope" do
55
+ before do
56
+ mina_app.reset!
57
+ end
58
+
55
59
  describe "before mina" do
56
60
  let(:task_list) { ["some:task", "some:other:task"] }
57
61
 
58
- it "defines before_mina" do
59
- task do
60
- assert_respond_to self, :before_mina
61
- end
62
- end
63
-
64
62
  it "adds tasks to the task list" do
65
- task do
66
- before_mina *task_list
67
- assert_equal before_mina_tasks, task_list
63
+ task do |t|
64
+ t.before_mina *task_list
68
65
  end
66
+ assert_equal task_list, mina_app.before_mina_tasks
69
67
  end
70
68
 
71
69
  it "adds more tasks to the list" do
72
- task do
73
- before_mina *task_list
74
- before_mina "another:task"
75
- assert_equal before_mina_tasks, (task_list + ["another:task"])
70
+ task do |t|
71
+ t.before_mina *task_list
72
+ t.before_mina "another:task"
76
73
  end
74
+ assert_equal (task_list + ["another:task"]), mina_app.before_mina_tasks
77
75
  end
78
76
  end # before mina
79
77
 
80
78
  describe "after mina" do
81
79
  let(:task_list) { ["after:task"] }
82
80
 
83
- it "defines after_mina" do
84
- task do
85
- assert_respond_to self, :after_mina
86
- end
87
- end
88
-
89
81
  it "adds tasks to the task list" do
90
- task do
91
- after_mina *task_list
92
- assert_equal after_mina_tasks, task_list
82
+ task do |t|
83
+ t.after_mina *task_list
93
84
  end
85
+ assert_equal task_list, mina_app.after_mina_tasks
94
86
  end
95
87
  end # after mina
96
88
 
97
89
  describe "invoke tasks" do
90
+ let(:mina) { mina_app }
98
91
  let(:task_list) { ["first:task", "second:task", "third:task"]}
99
92
 
100
- it "invokes before mina in order" do
101
- task do
102
- before_mina *task_list
103
- invoke_before_mina_tasks
104
- assert_equal invoked_tasks, task_list
93
+ describe "when deploying" do
94
+ it "invokes before mina in order" do
95
+ mina.test_task do |t|
96
+ t.before_mina *task_list
97
+ t.invoke_before_mina_tasks
98
+ end
99
+ assert_equal task_list, mina.invoked_tasks
105
100
  end
106
101
  end
107
102
 
108
103
  it "invokes after mina in order" do
109
- task do
110
- after_mina *task_list
111
- invoke_after_mina_tasks
112
- assert_equal invoked_tasks, task_list
104
+ mina.test_task do |t|
105
+ t.after_mina *task_list
106
+ t.invoke_after_mina_tasks
107
+ end
108
+ assert_equal task_list, mina.invoked_tasks
109
+ end
110
+
111
+ describe "when not deploying" do
112
+ it "invokes before mina in order" do
113
+ mina.test_task do |t|
114
+ t.not_deploying!
115
+ t.before_mina *task_list
116
+ t.invoke_before_mina_tasks
117
+ end
118
+ refute_equal task_list, mina.invoked_tasks
119
+ end
120
+
121
+ it "invokes after mina in order" do
122
+ mina.test_task do |t|
123
+ t.not_deploying!
124
+ t.after_mina *task_list
125
+ t.invoke_after_mina_tasks
126
+ end
127
+ refute_equal task_list, mina.invoked_tasks
113
128
  end
114
129
  end
115
130
  end # invoke tasks
116
131
 
117
132
  describe "mina cleanup" do
133
+ let(:mina) { mina_app }
118
134
  let(:before_task_list) { ["before:task:one", "before:task:two"] }
119
135
  let(:after_task_list) { ["after:task:one", "after:task:two"] }
120
136
 
121
137
  it "invokes all tasks" do
122
- task do
123
- before_mina *before_task_list
124
- after_mina *after_task_list
125
- mina_cleanup!
126
- assert cleanup_called
127
- assert_equal invoked_tasks, (before_task_list + after_task_list)
138
+ mina.test_task do |t|
139
+ t.before_mina *before_task_list
140
+ t.after_mina *after_task_list
141
+ t.mina_cleanup!
128
142
  end
143
+ assert mina.cleanup_called, "cleanup_called must be true."
144
+ assert_equal (before_task_list + after_task_list), mina.invoked_tasks
129
145
  end
130
146
  end # mina cleanup
131
147
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mina-hooks
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Don Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-01 00:00:00.000000000 Z
11
+ date: 2013-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mina