singularity_dsl 1.4.0 → 1.5.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjY4YmE3ODM5YjkyZDEyYzJhMTE5MWVkNDEyODg2ZGU1NmFmZmU4NQ==
4
+ NjMwNTkyMDAwNWM3ODg1ZjY2ZGMzY2ExYmQzNzFlMWMzMmQ5MjM3MQ==
5
5
  data.tar.gz: !binary |-
6
- M2RkYzJjNGI1NTcwMzQzZjc5MTQ0NDVkNDlmYTcxMGUwYmJiYzJkMA==
6
+ MTE3Y2JkNDMwOWVjZjU3NmU2YTZmNTUzNzU1ZDllNGRiMGZhN2UxNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODdkNTQzYzAwMDk5N2QzYWE3Y2NmMTdkM2VjZGQ5MWNhZmE2ZmRlNjc0MmJh
10
- NTY4NTBhMzBmMzY0ZjI4MDM2M2RmMDY1MWE2ZDI3ZTNmNzQ2ZjljYzEzNWVj
11
- ODc1NWIxNzJlOTgzNzhiMTdhOGE5OWRkZmM3YmNmZDA2NDQ1OTg=
9
+ ZjUxMDFhYmRjMGEyMTU5MjFjYTc1YTAwZGUwMGJkMTM1ZjhjODQzZjdjYTg5
10
+ N2QwYzJkMmRlYTdiODA1Y2JhODE3NmNhZjI1MmRkOGZlZDUwMGU4M2I4MmQ0
11
+ Y2JjYjQxM2JiMmY4NzY5MTNhMzc0Mjg0Mzk0MTE2ZDM1MGE3Yjg=
12
12
  data.tar.gz: !binary |-
13
- NDA1MzI4ZDVlZGVhYzJlZjBlYjkwYTM0Y2VlZTNlZjUxYWY2MDkxZDY4MmM1
14
- ZmI5MjJjY2Q2ZDBhZjFlODY4YTQ1M2EzZWE4NzFjNzhlODkzOTYzY2IwZTZh
15
- ZDBlMjE5ZWJiZDRjMzYzNTY2Zjg5NTJjNmE4ZjQ5ZTRmMTQ1ZjE=
13
+ MDhiZDg3ZTgwYWM3NzQ1MWJiNDIzOGZmNGM0NjY4NDRjODMyMzE2M2EyYWI1
14
+ MTlkMDNmM2NiZmFkNzA0ZTg3MGFjNmU0NWNhYTU5OGQ5MzNlYWIwOTUzMGY2
15
+ ODhlNjg0YmYyNzMwNzVhOWFiOTRhMDgwYmU0ODQ3ZTkwODU4OGQ=
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- singularity_dsl (1.4.0)
4
+ singularity_dsl (1.5.0)
5
5
  mixlib-shellout (~> 1.4)
6
6
  rainbow (~> 2.0.0)
7
7
  rake (~> 10.3)
8
- rspec (~> 2.6)
9
- rubocop (~> 0.23.0)
8
+ rspec (~> 3.0)
9
+ rubocop (~> 0.24)
10
10
  terminal-table (~> 1.4)
11
11
  thor (~> 0.19)
12
12
 
@@ -18,23 +18,27 @@ GEM
18
18
  gem-release (0.7.3)
19
19
  json (1.8.1)
20
20
  mixlib-shellout (1.4.0)
21
- parser (2.1.9)
21
+ parser (2.2.0.pre.4)
22
22
  ast (>= 1.1, < 3.0)
23
23
  slop (~> 3.4, >= 3.4.5)
24
24
  powerpack (0.0.9)
25
25
  rainbow (2.0.0)
26
26
  rake (10.3.2)
27
- rspec (2.99.0)
28
- rspec-core (~> 2.99.0)
29
- rspec-expectations (~> 2.99.0)
30
- rspec-mocks (~> 2.99.0)
31
- rspec-core (2.99.1)
32
- rspec-expectations (2.99.2)
33
- diff-lcs (>= 1.1.3, < 2.0)
34
- rspec-mocks (2.99.2)
35
- rubocop (0.23.0)
27
+ rspec (3.0.0)
28
+ rspec-core (~> 3.0.0)
29
+ rspec-expectations (~> 3.0.0)
30
+ rspec-mocks (~> 3.0.0)
31
+ rspec-core (3.0.3)
32
+ rspec-support (~> 3.0.0)
33
+ rspec-expectations (3.0.3)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.0.0)
36
+ rspec-mocks (3.0.3)
37
+ rspec-support (~> 3.0.0)
38
+ rspec-support (3.0.3)
39
+ rubocop (0.24.1)
36
40
  json (>= 1.7.7, < 2)
37
- parser (~> 2.1.9)
41
+ parser (>= 2.2.0.pre.3, < 3.0)
38
42
  powerpack (~> 0.0.6)
39
43
  rainbow (>= 1.99.1, < 3.0)
40
44
  ruby-progressbar (~> 1.4)
data/README.md CHANGED
@@ -30,6 +30,8 @@ All you need is a `.singularityrc` file in your repository, the `singularity_run
30
30
  -a, [--all-tasks], [--no-all-tasks] # Do not stop on task failure(s), collect all results
31
31
  -s, [--script=SCRIPT] # Specify path to a .singularityrc file
32
32
  # Default: ./.singularityrc
33
+ [--env=one two three] # EnvVars to set, formatted as VAR:VAL
34
+ [--flags=one two three] # Runtime flags to set for use with flag_set?, formatted as VAR:VAL
33
35
 
34
36
  The `singularity_runner` is designed to do two things:
35
37
 
@@ -87,7 +89,7 @@ What this means is that you can pass blocks of code to tasks from your `.singula
87
89
 
88
90
  ### `singularity_runner`, Custom Tasks & Task Extensions
89
91
 
90
- As mentioned, `singularity_runner` can load custom tasks or task extensions. By default, it will load **all** files in `cwd/.singularity`
92
+ As mentioned, `singularity_runner` can load custom tasks or task extensions. By default, it will load **all `.rb`** files in `cwd/.singularity`
91
93
 
92
94
  This allows you to do a few things:
93
95
 
@@ -246,6 +248,48 @@ singularity_runner testmerge git@github.com:me/repo feature-branch master git@gi
246
248
  ```
247
249
  Will perform the test merge & then pass ALL of the changed files in that merge into the `.singularityrc`!
248
250
 
251
+ ## Environment Variables && Custom Runtime Flags
252
+
253
+ The `singularity_runner` allows you to set custom environment variables for your scripts & tools to use.
254
+
255
+ ```
256
+ singularity_runner test --env MY_REPO:git@github.com:me/foo
257
+ ```
258
+
259
+ Will set `ENV['MY_REPO'] = 'git@github.com:me/foo'`
260
+
261
+ Similarly, you can also set flags to better direct more complicated workflows.
262
+
263
+ ```
264
+ singularity_runner test --flags npm phpunit-suite:ci
265
+ ```
266
+
267
+ Will allow you to run something like this:
268
+
269
+ ```ruby
270
+ # works! npm == true here
271
+ if flag? 'npm' do
272
+ npm { action 'install' }
273
+ end
274
+
275
+ # suite_name == 'ci' here
276
+ suite_name = flag? 'phpunit-suite' || 'default'
277
+ phpunit { suite suite_name }
278
+ ```
279
+
280
+ Assuming that you have already defined `npm` & `phpunit` tasks.
281
+
282
+ ## Using Task File Paths during runtime
283
+
284
+ The DSL also keeps a record of where each task is defined. To get that path:
285
+
286
+ ```
287
+ SingularityDsl.task_file(self)
288
+ ```
289
+
290
+ This is just a utility function provided to you when writing new Tasks.
291
+ You *can* use it in your `.singularityrc` but it's not recommended that you do.
292
+
249
293
  ## Contributing
250
294
 
251
295
  1. Fork it
@@ -2,10 +2,10 @@
2
2
 
3
3
  require 'singularity_dsl/application'
4
4
  require 'singularity_dsl/cli/table'
5
+ require 'singularity_dsl/cli/utils'
5
6
  require 'singularity_dsl/dsl/dsl'
6
7
  require 'singularity_dsl/errors'
7
8
  require 'singularity_dsl/git_helper'
8
- require 'singularity_dsl/stdout'
9
9
  require 'thor'
10
10
 
11
11
  module SingularityDsl
@@ -14,8 +14,8 @@ module SingularityDsl
14
14
  # CLI Thor app
15
15
  class Cli < Thor
16
16
  include Errors
17
- include Stdout
18
17
  include Table
18
+ include Utils
19
19
 
20
20
  attr_reader :git
21
21
 
@@ -23,12 +23,7 @@ module SingularityDsl
23
23
  super
24
24
  @diff_list = nil
25
25
  @git = GitHelper.new
26
- envvars = options[:env] || []
27
- envvars.each do |pair|
28
- key = pair.split(':', 2).first
29
- val = pair.split(':', 2).last
30
- ENV[key] = val
31
- end
26
+ env_vars(options[:env] || [])
32
27
  end
33
28
 
34
29
  class_option :task_path,
@@ -48,6 +43,11 @@ module SingularityDsl
48
43
  class_option :env,
49
44
  type: :array,
50
45
  desc: 'EnvVars to set, formatted as VAR:VAL'
46
+ class_option :flags,
47
+ type: :array,
48
+ desc: <<-EOD
49
+ Runtime flags to set for use with flag_set?, formatted as VAR:VAL
50
+ EOD
51
51
 
52
52
  # TASKS COMMAND
53
53
  desc 'tasks', 'Available tasks.'
@@ -64,7 +64,10 @@ module SingularityDsl
64
64
  # TEST COMMAND
65
65
  desc 'test', 'Run singularity script.'
66
66
  def test(app = nil)
67
- app ||= setup_app(Application.new, singularity_script, tasks_path)
67
+ app ||= setup_app(Application.new,
68
+ singularity_script,
69
+ tasks_path,
70
+ options[:flags] || [])
68
71
  exit(app.run false, options[:all_tasks])
69
72
  end
70
73
 
@@ -72,7 +75,10 @@ module SingularityDsl
72
75
  desc 'batch BATCH_NAME',
73
76
  'Run single task batch in the .singularityrc script.'
74
77
  def batch(batch, app = nil)
75
- app ||= setup_app(Application.new, singularity_script, tasks_path)
78
+ app ||= setup_app(Application.new,
79
+ singularity_script,
80
+ tasks_path,
81
+ options[:flags] || [])
76
82
  exit(app.run batch, options[:all_tasks])
77
83
  end
78
84
 
@@ -108,21 +114,6 @@ module SingularityDsl
108
114
  target
109
115
  end
110
116
 
111
- def setup_app(app, singularity_script, tasks_path)
112
- if File.exist? tasks_path
113
- info "Loading tasks from #{tasks_path}"
114
- app.load_tasks tasks_path
115
- end
116
- unless @diff_list.nil?
117
- info 'Running with diff-list'
118
- list_items @diff_list
119
- app.change_list @diff_list
120
- end
121
- info "Loading CI script from #{singularity_script} ..."
122
- app.load_script singularity_script
123
- app
124
- end
125
-
126
117
  def singularity_script
127
118
  File.expand_path options[:script]
128
119
  end
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+
3
+ require 'singularity_dsl/stdout'
4
+
5
+ module SingularityDsl
6
+ # CLI
7
+ module Cli
8
+ # util functions
9
+ module Utils
10
+ include Stdout
11
+
12
+ private
13
+
14
+ def env_vars(vals)
15
+ vals.each do |pair|
16
+ key = pair.split(':', 2).first
17
+ val = pair.split(':', 2).last
18
+ ENV[key] = val
19
+ end
20
+ end
21
+
22
+ def setup_app(app, singularity_script, tasks_path, flags = [])
23
+ inject_flags app, flags
24
+ inject_diff_list app
25
+ if ::File.exist? tasks_path
26
+ info "Loading tasks from #{tasks_path}"
27
+ app.load_tasks tasks_path
28
+ end
29
+ info "Loading CI script from #{singularity_script} ..."
30
+ app.load_script singularity_script
31
+ app
32
+ end
33
+
34
+ def inject_flags(app, flags = [])
35
+ flags.each do |pair|
36
+ key = pair.split(':', 2).first
37
+ val = pair.split(':', 2).last
38
+ app.runner.dsl.flag key if key == val
39
+ app.runner.dsl.flag key, val unless key == val
40
+ end
41
+ app
42
+ end
43
+
44
+ def inject_diff_list(app)
45
+ unless @diff_list.nil?
46
+ info 'Running with diff-list'
47
+ list_items @diff_list
48
+ app.change_list @diff_list
49
+ end
50
+ app
51
+ end
52
+ end
53
+ end
54
+ end
@@ -17,11 +17,12 @@ module SingularityDsl
17
17
  include Files
18
18
  include Utils
19
19
 
20
- attr_reader :registry
20
+ attr_reader :registry, :flags
21
21
 
22
22
  def initialize
23
23
  super
24
24
  @registry = Registry.new
25
+ @flags = {}
25
26
  load_tasks_in_path default_task_dir
26
27
  end
27
28
 
@@ -55,6 +56,15 @@ module SingularityDsl
55
56
  @registry.batch(name, self, &block)
56
57
  end
57
58
 
59
+ def flag(name, val = true)
60
+ @flags[name.to_sym] = val
61
+ end
62
+
63
+ def flag?(flag)
64
+ return @flags[flag.to_sym] if @flags.key? flag.to_sym
65
+ false
66
+ end
67
+
58
68
  private
59
69
 
60
70
  def raise_task_def_error(klass)
@@ -28,7 +28,7 @@ module SingularityDsl
28
28
  end
29
29
 
30
30
  def diff_remote(branch, url, flags = '')
31
- flags = flags.join ' ' if flags.kind_of? Array
31
+ flags = flags.join ' ' if flags.is_a? Array
32
32
  cmd = remote_cmd branch, url, "diff #{flags}"
33
33
  task = Mixlib::ShellOut.new cmd
34
34
  task.run_command
@@ -21,7 +21,7 @@ class Rake < Task
21
21
  throw 'target is required' if @target.nil?
22
22
  @rake.load_rakefile
23
23
  ret = @rake[@target].invoke
24
- return ret.count if ret.kind_of? Array
24
+ return ret.count if ret.is_a? Array
25
25
  ret
26
26
  end
27
27
 
@@ -35,11 +35,9 @@ class Rubocop < Task
35
35
  end
36
36
 
37
37
  def execute
38
- inspector = ::RuboCop::FileInspector.new({})
39
- # yes, have to pass in a block
40
- inspector.process_files files, @cfg_store do
41
- false
42
- end
38
+ runner = ::RuboCop::Runner.new({}, @cfg_store)
39
+ # returns true if all files passed, false otherwise
40
+ !runner.run(files)
43
41
  end
44
42
 
45
43
  def description
@@ -2,5 +2,5 @@
2
2
 
3
3
  # version const for gem
4
4
  module SingularityDsl
5
- VERSION = '1.4.0'
5
+ VERSION = '1.5.0'
6
6
  end
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'mixlib-shellout', '~> 1.4'
22
22
  spec.add_dependency 'rainbow', '~> 2.0.0'
23
23
  spec.add_dependency 'rake', '~> 10.3'
24
- spec.add_dependency 'rspec', '~> 2.6'
25
- spec.add_dependency 'rubocop', '~> 0.23.0'
24
+ spec.add_dependency 'rspec', '~> 3.0'
25
+ spec.add_dependency 'rubocop', '~> 0.24'
26
26
  spec.add_dependency 'terminal-table', '~> 1.4'
27
27
  spec.add_dependency 'thor', '~> 0.19'
28
28
 
@@ -14,7 +14,7 @@ describe 'Application' do
14
14
  context '#load_script' do
15
15
  it 'just calls runner.load_ex_script' do
16
16
  stub_res = 'spooooooky ghooooost'
17
- expect(app.runner).to(receive(:load_ex_script).and_return stub_res)
17
+ allow(app.runner).to(receive(:load_ex_script).and_return stub_res)
18
18
  expect(app.load_script 'dummy').to eql stub_res
19
19
  end
20
20
  end
@@ -22,38 +22,42 @@ describe 'Application' do
22
22
  context '#run' do
23
23
  it 'logs resource failures' do
24
24
  # don't want the entire thing to exit...
25
- app.stub(:post_task_runner_actions)
26
- app.runner.stub(:execute).and_raise(SingularityDsl::Errors::ResourceFail)
25
+ allow(app).to receive(:post_task_runner_actions)
26
+ allow(app.runner).to receive(:execute)
27
+ .and_raise(SingularityDsl::Errors::ResourceFail)
27
28
  expect(app).to receive(:log_resource_fail)
28
29
  app.run
29
30
  end
30
31
 
31
32
  it 'runner post-script actions are evaulated on failure' do
32
- app.stub(:post_task_runner_actions)
33
- app.stub(:log_resource_fail)
34
- app.runner.stub(:execute).and_raise(SingularityDsl::Errors::ResourceFail)
33
+ allow(app).to receive(:post_task_runner_actions)
34
+ allow(app).to receive(:log_resource_fail)
35
+ allow(app.runner).to receive(:execute)
36
+ .and_raise(SingularityDsl::Errors::ResourceFail)
35
37
  expect(app).to receive(:post_task_runner_actions)
36
38
  app.run
37
39
  end
38
40
 
39
41
  it 'logs resource errors' do
40
- app.stub(:post_task_runner_actions)
41
- app.runner.stub(:execute).and_raise(SingularityDsl::Errors::ResourceError)
42
+ allow(app).to receive(:post_task_runner_actions)
43
+ allow(app.runner).to receive(:execute)
44
+ .and_raise(SingularityDsl::Errors::ResourceError)
42
45
  expect(app).to receive(:log_resource_error)
43
46
  app.run
44
47
  end
45
48
 
46
49
  it 'runner post-script actions are evaulated on error' do
47
- app.stub(:post_task_runner_actions)
48
- app.stub(:log_resource_error)
49
- app.runner.stub(:execute).and_raise(SingularityDsl::Errors::ResourceError)
50
+ allow(app).to receive(:post_task_runner_actions)
51
+ allow(app).to receive(:log_resource_error)
52
+ allow(app.runner).to receive(:execute)
53
+ .and_raise(SingularityDsl::Errors::ResourceError)
50
54
  expect(app).to receive(:post_task_runner_actions)
51
55
  app.run
52
56
  end
53
57
 
54
58
  it 'runner post-script actions are evaulated on error' do
55
- app.stub(:post_task_runner_actions)
56
- app.stub(:execute)
59
+ allow(app).to receive(:post_task_runner_actions)
60
+ allow(app).to receive(:execute)
57
61
  expect(app.runner.state).to receive :exit_code
58
62
  app.run
59
63
  end
@@ -61,19 +65,19 @@ describe 'Application' do
61
65
 
62
66
  context '#post_task_runner_actions' do
63
67
  it 'outputs warning when script fails' do
64
- app.stub :script_warn
65
- app.runner.stub :post_actions
66
- app.stub :exit_run
67
- app.runner.state.stub(:failed).and_return true
68
+ allow(app).to receive(:script_warn)
69
+ allow(app.runner).to receive(:post_actions)
70
+ allow(app).to receive(:exit_run)
71
+ allow(app.runner.state).to receive(:failed).and_return(true)
68
72
  expect(app).to receive(:script_warn)
69
73
  app.post_task_runner_actions
70
74
  end
71
75
 
72
76
  it 'outputs warning when script errors' do
73
- app.stub :script_error
74
- app.runner.stub :post_actions
75
- app.stub :exit_run
76
- app.runner.state.stub(:error).and_return true
77
+ allow(app).to receive(:script_error)
78
+ allow(app.runner).to receive(:post_actions)
79
+ allow(app).to receive(:exit_run)
80
+ allow(app.runner.state).to receive(:error).and_return(true)
77
81
  expect(app).to receive(:script_error)
78
82
  app.post_task_runner_actions
79
83
  end
@@ -13,13 +13,13 @@ describe 'Cli' do
13
13
  end
14
14
 
15
15
  it 'runs test method if no run_task' do
16
- cli.stub(:target_run_task).and_return false
16
+ allow(cli).to receive(:target_run_task).and_return(false)
17
17
  expect(cli).to receive(:test)
18
18
  cli.testmerge 'fork', 'fork_branch', 'base_branch'
19
19
  end
20
20
 
21
21
  it 'runs batch method if no run_task' do
22
- cli.stub(:target_run_task).and_return 'test_batch'
22
+ allow(cli).to receive(:target_run_task).and_return('test_batch')
23
23
  expect(cli).to receive(:batch)
24
24
  cli.testmerge 'fork', 'fork_branch', 'base_branch'
25
25
  end
@@ -19,7 +19,7 @@ describe 'Batch' do
19
19
  context '#execute' do
20
20
  it 'executes block in passed context' do
21
21
  dummy = TestObject.new
22
- dummy.stub(:meth)
22
+ allow(dummy).to receive(:meth)
23
23
  batch = SingularityDsl::Dsl::Batch.new('test', dummy) do |thing|
24
24
  thing.meth
25
25
  end
@@ -25,13 +25,13 @@ describe 'DslChangeset' do
25
25
 
26
26
  context '#changed_files' do
27
27
  before :each do
28
- ::File.stub(:exist?)
28
+ allow(::File).to receive(:exist?)
29
29
  .with('something.css')
30
30
  .and_return(true)
31
- ::File.stub(:exist?)
31
+ allow(::File).to receive(:exist?)
32
32
  .with('something.js')
33
33
  .and_return(true)
34
- ::File.stub(:exist?)
34
+ allow(::File).to receive(:exist?)
35
35
  .with('something.php')
36
36
  .and_return(false)
37
37
  end
@@ -45,4 +45,32 @@ describe 'Dsl' do
45
45
  SingularityDsl.reset_map
46
46
  end
47
47
  end
48
+
49
+ context '#flag' do
50
+ it 'sets true by default' do
51
+ dsl.flag 'default'
52
+ expect(dsl.flags).to eql default: true
53
+ end
54
+
55
+ it 'sets vals' do
56
+ dsl.flag 'foo', 'bar'
57
+ expect(dsl.flags).to eql foo: 'bar'
58
+ end
59
+ end
60
+
61
+ context '#flag?' do
62
+ it 'returns false by default' do
63
+ expect(dsl.flag? 'blah').to eql false
64
+ end
65
+
66
+ it 'returns true by default' do
67
+ dsl.flag 'default'
68
+ expect(dsl.flag? 'default').to eql true
69
+ end
70
+
71
+ it 'returns vals' do
72
+ dsl.flag 'foo', 'bar'
73
+ expect(dsl.flag? 'foo').to eql 'bar'
74
+ end
75
+ end
48
76
  end
@@ -21,8 +21,8 @@ describe 'DslRunner' do
21
21
  context '#execute' do
22
22
  it 'taps & evaluates failed task.execute statuses correctly' do
23
23
  task = SingularityDsl::Task.new
24
- task.stub(:execute).and_return true
25
- runner.dsl.registry.stub(:run_list).and_return [task]
24
+ allow(task).to receive(:execute).and_return(true)
25
+ allow(runner.dsl.registry).to receive(:run_list).and_return([task])
26
26
  expect(runner).to receive(:record_failure).with task
27
27
  expect(runner).to receive(:resource_fail).with task
28
28
  runner.execute
@@ -31,7 +31,7 @@ describe 'DslRunner' do
31
31
 
32
32
  context '#load_ex_script' do
33
33
  it 'instance_evals contents of a file' do
34
- ::File.stub(:read).and_return('0')
34
+ allow(::File).to receive(:read).and_return('0')
35
35
  expect(runner.dsl).to receive(:instance_eval).with('0')
36
36
  runner.load_ex_script 'foo'
37
37
  end
@@ -4,18 +4,16 @@ require 'singularity_dsl/git_helper'
4
4
 
5
5
  describe 'GitHelper' do
6
6
  before :each do
7
- SingularityDsl::GitHelper
8
- .any_instance
9
- .stub(:git_installed)
10
- .and_return true
7
+ allow_any_instance_of(SingularityDsl::GitHelper)
8
+ .to receive(:git_installed)
9
+ .and_return true
11
10
  end
12
11
  let(:git) { SingularityDsl::GitHelper.new }
13
12
 
14
13
  context '#initialize' do
15
14
  it 'throws if git is not installed' do
16
- SingularityDsl::GitHelper
17
- .any_instance
18
- .stub(:git_installed)
15
+ allow_any_instance_of(SingularityDsl::GitHelper)
16
+ .to receive(:git_installed)
19
17
  .and_return false
20
18
  expect { SingularityDsl::GitHelper.new }
21
19
  .to(raise_error ArgumentError, /git not installed/)
@@ -24,22 +22,22 @@ describe 'GitHelper' do
24
22
 
25
23
  context '#clean_reset' do
26
24
  it 'fails when reset fails' do
27
- git.stub(:reset).and_return 1
28
- git.stub(:clean).and_return 0
25
+ allow(git).to receive(:reset).and_return(1)
26
+ allow(git).to receive(:clean).and_return(0)
29
27
  expect { git.clean_reset }
30
28
  .to(raise_error RuntimeError, /failed to clean/)
31
29
  end
32
30
 
33
31
  it 'fails when clean fails' do
34
- git.stub(:reset).and_return 0
35
- git.stub(:clean).and_return 1
32
+ allow(git).to receive(:reset).and_return(0)
33
+ allow(git).to receive(:clean).and_return(1)
36
34
  expect { git.clean_reset }
37
35
  .to(raise_error RuntimeError, /failed to clean/)
38
36
  end
39
37
 
40
38
  it 'fails when both reset & clean fail' do
41
- git.stub(:reset).and_return 1
42
- git.stub(:clean).and_return 1
39
+ allow(git).to receive(:reset).and_return(1)
40
+ allow(git).to receive(:clean).and_return(1)
43
41
  expect { git.clean_reset }
44
42
  .to(raise_error RuntimeError, /failed to clean/)
45
43
  end
@@ -47,25 +45,31 @@ describe 'GitHelper' do
47
45
 
48
46
  context '#merge_remote' do
49
47
  it 'generates & calls correct cmd' do
50
- git.stub(:remotes).and_return []
51
- git.stub(:exec).with('git fetch --all')
52
- git.stub(:exec).with('git merge bar/foo').and_return 0
48
+ allow(git).to receive(:remotes).and_return([])
49
+ allow(git).to receive(:exec)
50
+ .with('git fetch --all')
51
+ allow(git).to receive(:exec)
52
+ .with('git merge bar/foo').and_return(0)
53
53
  git.merge_remote 'foo', 'bar'
54
54
  end
55
55
  end
56
56
 
57
57
  context '#diff_remote' do
58
58
  it 'generates & calls correct cmd w/ single flag' do
59
- git.stub(:remotes).and_return []
60
- git.stub(:exec).with('git fetch --all')
61
- git.stub(:exec).with('git diff bar/foo --flag').and_return 0
59
+ allow(git).to receive(:remotes).and_return([])
60
+ allow(git).to receive(:exec)
61
+ .with('git fetch --all')
62
+ allow(git).to receive(:exec)
63
+ .with('git diff bar/foo --flag').and_return(0)
62
64
  git.diff_remote 'foo', 'bar', '--flag'
63
65
  end
64
66
 
65
67
  it 'generates & calls correct cmd w/ multiple flags' do
66
- git.stub(:remotes).and_return []
67
- git.stub(:exec).with('git fetch --all')
68
- git.stub(:exec).with('git diff bar/foo --flag --other').and_return 0
68
+ allow(git).to receive(:remotes).and_return([])
69
+ allow(git).to receive(:exec)
70
+ .with('git fetch --all')
71
+ allow(git).to receive(:exec)
72
+ .with('git diff bar/foo --flag --other').and_return(0)
69
73
  git.diff_remote 'foo', 'bar', %w(--flag, --other)
70
74
  end
71
75
  end
@@ -5,7 +5,7 @@ require 'singularity_dsl/tasks/shell_task'
5
5
  describe 'ShellTask' do
6
6
  let(:sh_task) { ShellTask.new }
7
7
  before(:each) do
8
- sh_task.stub(:log_shell)
8
+ allow(sh_task).to receive(:log_shell)
9
9
  end
10
10
 
11
11
  context '#initialize' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singularity_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - chr0n1x
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-11 00:00:00.000000000 Z
11
+ date: 2014-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '2.6'
61
+ version: '3.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '2.6'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: 0.23.0
75
+ version: '0.24'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: 0.23.0
82
+ version: '0.24'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: terminal-table
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,7 @@ files:
158
158
  - lib/singularity_dsl/application.rb
159
159
  - lib/singularity_dsl/cli/cli.rb
160
160
  - lib/singularity_dsl/cli/table.rb
161
+ - lib/singularity_dsl/cli/utils.rb
161
162
  - lib/singularity_dsl/dsl/batch.rb
162
163
  - lib/singularity_dsl/dsl/changeset.rb
163
164
  - lib/singularity_dsl/dsl/components.rb