oct 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemfiles +6 -1
- data/.gitignore +5 -8
- data/Gemfile +1 -1
- data/Gemfile.lock +42 -33
- data/HISTORY.markdown +8 -0
- data/LICENSE +1 -1
- data/README.markdown +11 -12
- data/Rakefile +47 -24
- data/VERSION +1 -1
- data/bin/oct +28 -24
- data/config/cucumber.yml +5 -4
- data/features/bin.feature +6 -6
- data/features/oct.feature +2 -2
- data/features/settings.feature +139 -0
- data/features/step_definitions/oct_steps.rb +2 -0
- data/features/support/aruba.rb +9 -9
- data/features/support/env.rb +7 -4
- data/lib/oct/app.rb +21 -32
- data/lib/oct/core/array.rb +11 -0
- data/lib/oct/core/hash.rb +45 -0
- data/lib/oct/oct.rb +2 -2
- data/lib/oct/settings.rb +60 -0
- data/lib/oct.rb +5 -2
- data/oct.gemspec +26 -37
- data/spec/aruba_helper.rb +25 -0
- data/spec/basic_app/array_spec.rb +48 -0
- data/spec/basic_gem/aruba_helper_spec.rb +3 -3
- data/spec/basic_gem/basic_gem_spec.rb +73 -2
- data/spec/basic_gem/gemspec_spec.rb +9 -21
- data/spec/spec_helper.rb +7 -31
- data/spec/watchr.rb +3 -1
- metadata +140 -168
- data/spec/spec.opts +0 -2
data/features/support/env.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
2
|
-
require 'rubygems'
|
3
1
|
require 'oct'
|
4
|
-
require 'aruba'
|
5
|
-
require '
|
2
|
+
require 'aruba/cucumber'
|
3
|
+
require 'rspec/expectations'
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec/aruba_helper')
|
5
|
+
|
6
|
+
Before do
|
7
|
+
@aruba_timeout_seconds = 10
|
8
|
+
end
|
data/lib/oct/app.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'configatron'
|
2
1
|
require 'term/ansicolor'
|
3
2
|
|
4
3
|
class String
|
@@ -11,21 +10,26 @@ module Oct
|
|
11
10
|
|
12
11
|
class App
|
13
12
|
|
14
|
-
def initialize(
|
15
|
-
@
|
13
|
+
def initialize(working_dir, argv=[], options={})
|
14
|
+
@working_dir = working_dir
|
16
15
|
@options = options
|
16
|
+
@argv = argv
|
17
17
|
if @options[:verbose]
|
18
|
-
puts "
|
18
|
+
puts "working_dir: #{@working_dir}".cyan
|
19
19
|
puts "options: #{@options.inspect}".cyan
|
20
|
+
puts "base_dir: #{@options[:base_dir]}".cyan if @options[:base_dir]
|
21
|
+
puts "config file: #{@options[:config]}".cyan if @options[:config]
|
20
22
|
end
|
21
|
-
|
23
|
+
$stdout.sync = true
|
22
24
|
end
|
23
25
|
|
24
|
-
def
|
26
|
+
def execute
|
25
27
|
begin
|
26
28
|
|
27
29
|
if action_argument_required?
|
28
|
-
action =
|
30
|
+
action = @argv.shift
|
31
|
+
args = @argv
|
32
|
+
|
29
33
|
unless AVAILABLE_ACTIONS.include?(action)
|
30
34
|
if action.nil?
|
31
35
|
puts "oct action required"
|
@@ -35,9 +39,9 @@ module Oct
|
|
35
39
|
puts "oct --help for more information"
|
36
40
|
exit 1
|
37
41
|
end
|
38
|
-
puts "oct run action: #{action}".cyan if @options[:verbose]
|
42
|
+
puts "oct run action: #{action} #{args.join(' ')}".cyan if @options[:verbose]
|
39
43
|
raise "action #{action} not implemented" unless respond_to?(action)
|
40
|
-
result = send(action)
|
44
|
+
result = send(action, args)
|
41
45
|
else
|
42
46
|
#
|
43
47
|
# default action if action_argument_required? is false
|
@@ -46,7 +50,12 @@ module Oct
|
|
46
50
|
result = Oct::FileStat.new.mode(files, @options)
|
47
51
|
end
|
48
52
|
|
49
|
-
|
53
|
+
if result.is_a?(Numeric)
|
54
|
+
exit(result)
|
55
|
+
else
|
56
|
+
# handle all other return types
|
57
|
+
exit(result ? 0 : 1)
|
58
|
+
end
|
50
59
|
|
51
60
|
rescue SystemExit => e
|
52
61
|
# This is the normal exit point, exit code from the send result
|
@@ -56,6 +65,7 @@ module Oct
|
|
56
65
|
rescue Exception => e
|
57
66
|
STDERR.puts("oct command failed, error(s) follow:")
|
58
67
|
STDERR.puts("#{e.message}".red)
|
68
|
+
STDERR.puts("Use '--verbose' for backtrace.") unless @options[:verbose]
|
59
69
|
STDERR.puts(e.backtrace.join("\n")) if @options[:verbose]
|
60
70
|
exit(1)
|
61
71
|
end
|
@@ -65,7 +75,7 @@ module Oct
|
|
65
75
|
# app commands start
|
66
76
|
#
|
67
77
|
|
68
|
-
|
78
|
+
|
69
79
|
#
|
70
80
|
# app commands end
|
71
81
|
#
|
@@ -77,26 +87,5 @@ module Oct
|
|
77
87
|
!AVAILABLE_ACTIONS.empty?
|
78
88
|
end
|
79
89
|
|
80
|
-
# read options for YAML config with ERB processing and initialize configatron
|
81
|
-
def configure(options)
|
82
|
-
config = @options[:config]
|
83
|
-
config = File.join(@base_dir, 'oct.conf') unless config
|
84
|
-
if File.exists?(config)
|
85
|
-
# load configatron options from the config file
|
86
|
-
puts "loading config file: #{config}".cyan if @options[:verbose]
|
87
|
-
configatron.configure_from_yaml(config)
|
88
|
-
else
|
89
|
-
# user specified a config file?
|
90
|
-
raise "config file not found" if @options[:config]
|
91
|
-
# no error if user did not specify config file
|
92
|
-
puts "#{config} not found".yellow if @options[:verbose]
|
93
|
-
end
|
94
|
-
|
95
|
-
#
|
96
|
-
# set defaults, these will NOT override setting read from YAML
|
97
|
-
#
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
90
|
end
|
102
91
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Hash
|
2
|
+
|
3
|
+
# sorted yaml
|
4
|
+
def to_yaml( opts = {} )
|
5
|
+
YAML::quick_emit( object_id, opts ) do |out|
|
6
|
+
out.map( taguri, to_yaml_style ) do |map|
|
7
|
+
sorted_keys = keys
|
8
|
+
sorted_keys = begin
|
9
|
+
sorted_keys.sort
|
10
|
+
rescue
|
11
|
+
sorted_keys.sort_by {|k| k.to_s} rescue sorted_keys
|
12
|
+
end
|
13
|
+
|
14
|
+
sorted_keys.each do |k|
|
15
|
+
map.add( k, fetch(k) )
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# active_support hash key functions
|
22
|
+
def symbolize_keys!
|
23
|
+
self.replace(self.symbolize_keys)
|
24
|
+
end
|
25
|
+
|
26
|
+
def symbolize_keys
|
27
|
+
inject({}) do |options, (key, value)|
|
28
|
+
options[(key.to_sym rescue key) || key] = value
|
29
|
+
options
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def recursively_symbolize_keys!
|
34
|
+
self.symbolize_keys!
|
35
|
+
self.values.each do |v|
|
36
|
+
if v.is_a? Hash
|
37
|
+
v.recursively_symbolize_keys!
|
38
|
+
elsif v.is_a? Array
|
39
|
+
v.recursively_symbolize_keys!
|
40
|
+
end
|
41
|
+
end
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/lib/oct/oct.rb
CHANGED
@@ -9,7 +9,7 @@ module Oct
|
|
9
9
|
puts "oct mode files: #{files.inspect}".cyan if options[:verbose]
|
10
10
|
files.sort.each do |file|
|
11
11
|
stat = File.stat(file)
|
12
|
-
printf("%04o ", stat.mode & 07777)
|
12
|
+
printf("%04o ", stat.mode & 07777)
|
13
13
|
if stat.directory?
|
14
14
|
puts file.blue
|
15
15
|
elsif stat.executable?
|
@@ -19,7 +19,7 @@ module Oct
|
|
19
19
|
else
|
20
20
|
puts file
|
21
21
|
end
|
22
|
-
end
|
22
|
+
end
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/lib/oct/settings.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Oct
|
4
|
+
|
5
|
+
class Settings
|
6
|
+
|
7
|
+
def initialize(working_dir, options={})
|
8
|
+
@working_dir = working_dir
|
9
|
+
@options = options
|
10
|
+
configure
|
11
|
+
end
|
12
|
+
|
13
|
+
def options
|
14
|
+
@options
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# read options from YAML config
|
20
|
+
def configure
|
21
|
+
|
22
|
+
# config file default options
|
23
|
+
configuration = {
|
24
|
+
:options => {
|
25
|
+
:verbose => false,
|
26
|
+
:color => 'AUTO'
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
# set default config if not given on command line
|
31
|
+
config = @options[:config]
|
32
|
+
unless config
|
33
|
+
config = [
|
34
|
+
File.join(@working_dir, "oct.conf"),
|
35
|
+
File.join(@working_dir, ".oct.conf"),
|
36
|
+
File.join(@working_dir, "config", "oct.conf"),
|
37
|
+
File.expand_path(File.join("~", ".oct.conf"))
|
38
|
+
].detect { |filename| File.exists?(filename) }
|
39
|
+
end
|
40
|
+
|
41
|
+
if config && File.exists?(config)
|
42
|
+
# rewrite options full path for config for later use
|
43
|
+
@options[:config] = config
|
44
|
+
|
45
|
+
# load options from the config file, overwriting hard-coded defaults
|
46
|
+
config_contents = YAML::load(File.open(config))
|
47
|
+
configuration.merge!(config_contents.symbolize_keys!) if config_contents && config_contents.is_a?(Hash)
|
48
|
+
else
|
49
|
+
# user specified a config file?, no error if user did not specify config file
|
50
|
+
raise "config file not found" if @options[:config]
|
51
|
+
end
|
52
|
+
|
53
|
+
# the command line options override options read from the config file
|
54
|
+
@options = configuration[:options].symbolize_keys!.merge!(@options)
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/lib/oct.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# require all files here
|
2
2
|
require 'rbconfig'
|
3
|
+
require 'oct/core/hash'
|
4
|
+
require 'oct/core/array'
|
3
5
|
require 'oct/app'
|
6
|
+
require 'oct/settings'
|
4
7
|
require 'oct/oct'
|
5
8
|
|
6
9
|
# Master namespace
|
@@ -20,8 +23,8 @@ module Oct
|
|
20
23
|
|
21
24
|
# Platform constants
|
22
25
|
unless defined?(BasicGem::WINDOWS)
|
23
|
-
WINDOWS =
|
24
|
-
CYGWIN =
|
26
|
+
WINDOWS = RbConfig::CONFIG['host_os'] =~ /mswin|mingw/i
|
27
|
+
CYGWIN = RbConfig::CONFIG['host_os'] =~ /cygwin/i
|
25
28
|
end
|
26
29
|
|
27
30
|
end
|
data/oct.gemspec
CHANGED
@@ -1,30 +1,25 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
#
|
3
3
|
#
|
4
|
-
|
5
4
|
Gem::Specification.new do |s|
|
6
|
-
|
5
|
+
|
6
|
+
# avoid shelling out to run git every time the gemspec is evaluated
|
7
7
|
#
|
8
8
|
# @see spec/gemspec_spec.rb
|
9
9
|
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
else
|
20
|
-
files = File.open(filename, "r") {|f| f.read}
|
21
|
-
end
|
22
|
-
raise "unable to process gemfiles" unless files
|
23
|
-
files.gsub(/\r\n/, "\n")
|
10
|
+
gemfiles_cache = File.join(File.dirname(__FILE__), '.gemfiles')
|
11
|
+
if File.exists?(gemfiles_cache)
|
12
|
+
gemfiles = File.open(gemfiles_cache, "r") {|f| f.read}
|
13
|
+
# normalize EOL
|
14
|
+
gemfiles.gsub!(/\r\n/, "\n")
|
15
|
+
else
|
16
|
+
# .gemfiles missing, run 'rake gemfiles' to create it
|
17
|
+
# falling back to 'git ls-files'"
|
18
|
+
gemfiles = `git ls-files`
|
24
19
|
end
|
25
20
|
|
26
21
|
s.name = "oct"
|
27
|
-
s.version = File.open(File.join(File.dirname(__FILE__), 'VERSION'), "r") { |f| f.read }
|
22
|
+
s.version = File.open(File.join(File.dirname(__FILE__), 'VERSION'), "r") { |f| f.read }
|
28
23
|
s.platform = Gem::Platform::RUBY
|
29
24
|
s.authors = ["Robert Wahler"]
|
30
25
|
s.email = ["robert@gearheadforhire.com"]
|
@@ -36,31 +31,25 @@ Gem::Specification.new do |s|
|
|
36
31
|
s.rubyforge_project = "oct"
|
37
32
|
|
38
33
|
s.add_dependency 'term-ansicolor', '>= 1.0.4'
|
39
|
-
s.add_dependency 'configatron', '>= 2.5.1'
|
40
34
|
|
41
|
-
s.add_development_dependency "bundler", ">= 1.0.
|
42
|
-
s.add_development_dependency "rspec", "
|
43
|
-
s.add_development_dependency "cucumber", "
|
44
|
-
s.add_development_dependency "aruba", "
|
35
|
+
s.add_development_dependency "bundler", ">= 1.0.14"
|
36
|
+
s.add_development_dependency "rspec", ">= 2.6.0"
|
37
|
+
s.add_development_dependency "cucumber", "~> 1.0"
|
38
|
+
s.add_development_dependency "aruba", "~> 0.4.3"
|
45
39
|
s.add_development_dependency "rake", ">= 0.8.7"
|
46
|
-
s.add_development_dependency "yard", ">= 0.6.2"
|
47
|
-
|
48
|
-
# Specify a markdown gem for rake doc:generate
|
49
|
-
#
|
50
|
-
# Without the development dependency, running yard rake
|
51
|
-
# tasks will fail. Kramdown chosen to provide a pure Ruby solution.
|
52
|
-
s.add_development_dependency "kramdown", ">= 0.12.0"
|
53
40
|
|
54
|
-
|
55
|
-
s.
|
41
|
+
# doc generation
|
42
|
+
s.add_development_dependency "yard", ">= 0.7.2"
|
43
|
+
s.add_development_dependency "redcarpet", ">= 1.17.2"
|
56
44
|
|
57
|
-
s.
|
45
|
+
s.files = gemfiles.split("\n")
|
46
|
+
s.executables = gemfiles.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
47
|
+
s.require_paths = ["lib"]
|
58
48
|
|
59
|
-
s.
|
60
|
-
|
61
|
-
'--
|
62
|
-
'--main', 'README.markdown',
|
49
|
+
s.rdoc_options = [
|
50
|
+
'--title', 'Oct Documentation',
|
51
|
+
'--main', 'README.markdown',
|
63
52
|
'--line-numbers',
|
64
|
-
'--inline-source'
|
53
|
+
'--inline-source'
|
65
54
|
]
|
66
55
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Aruba
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# @return full path to files in the aruba tmp folder
|
5
|
+
def fullpath(filename)
|
6
|
+
path = File.expand_path(File.join(current_dir, filename))
|
7
|
+
if path.match(/^\/cygdrive/)
|
8
|
+
# match /cygdrive/c/path/to and return c:\\path\\to
|
9
|
+
path = `cygpath -w #{path}`.chomp
|
10
|
+
elsif path.match(/.\:/)
|
11
|
+
# match c:/path/to and return c:\\path\\to
|
12
|
+
path = path.gsub(/\//, '\\')
|
13
|
+
end
|
14
|
+
path
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return the contents of "filename" in the aruba tmp folder
|
18
|
+
def get_file_contents(filename)
|
19
|
+
in_current_dir do
|
20
|
+
IO.read(filename)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Array do
|
4
|
+
|
5
|
+
describe 'recursively_symbolize_keys!' do
|
6
|
+
|
7
|
+
it "should recursively convert a hash with string keys to a hash with symbol keys" do
|
8
|
+
hash_symbols = {
|
9
|
+
:options => {
|
10
|
+
:verbose => false,
|
11
|
+
},
|
12
|
+
:repos => {
|
13
|
+
:repo1 => {:path => "something"}
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
hash_strings = {
|
18
|
+
'options' => {
|
19
|
+
'verbose' => false,
|
20
|
+
},
|
21
|
+
'repos' => {
|
22
|
+
'repo1' => {'path' => "something"}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
hash_symbols.should == hash_strings.recursively_symbolize_keys!
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should should handle hashes that are already symbolized" do
|
30
|
+
hash_symbols = {
|
31
|
+
:options => {
|
32
|
+
:verbose => false,
|
33
|
+
},
|
34
|
+
:repos => {
|
35
|
+
:repo1 => {:path => "something"}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
hash_copy = hash_symbols.dup
|
40
|
+
|
41
|
+
hash_copy.should == hash_symbols.recursively_symbolize_keys!
|
42
|
+
hash_symbols[:repos][:repo1].should == {:path => "something"}
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Oct do
|
4
|
-
|
4
|
+
|
5
5
|
before(:each) do
|
6
6
|
@filename = 'input.txt'
|
7
|
-
|
7
|
+
write_file(@filename, "the quick brown fox")
|
8
8
|
end
|
9
9
|
|
10
10
|
describe 'Aruba::API.current_dir' do
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Oct do
|
4
|
-
|
4
|
+
|
5
5
|
describe 'version' do
|
6
6
|
|
7
7
|
it "should return a string formatted '#.#.#'" do
|
@@ -10,4 +10,75 @@ describe Oct do
|
|
10
10
|
|
11
11
|
end
|
12
12
|
|
13
|
+
# VIM autocmd to remove trailing whitespace
|
14
|
+
# autocmd BufWritePre * :%s/\s\+$//e
|
15
|
+
#
|
16
|
+
describe "code" do
|
17
|
+
|
18
|
+
before(:each) do
|
19
|
+
@gemfiles_filename = File.expand_path(File.dirname(__FILE__) + '/../../.gemfiles')
|
20
|
+
raise ".gemfiles not found. Please run 'rake gemfiles'" unless File.exists?(@gemfiles_filename)
|
21
|
+
@gemfiles = File.open(@gemfiles_filename, "rb") {|f| f.read}
|
22
|
+
@eol = @gemfiles.match("\r\n") ? "\r\n" : "\n"
|
23
|
+
end
|
24
|
+
|
25
|
+
def binary?(filename)
|
26
|
+
open filename do |f|
|
27
|
+
f.each_byte { |x|
|
28
|
+
x.nonzero? or return true
|
29
|
+
}
|
30
|
+
end
|
31
|
+
false
|
32
|
+
end
|
33
|
+
|
34
|
+
def check_for_tab_characters(filename)
|
35
|
+
failing_lines = []
|
36
|
+
File.readlines(filename).each_with_index do |line,number|
|
37
|
+
failing_lines << number + 1 if line =~ /\t/
|
38
|
+
end
|
39
|
+
|
40
|
+
unless failing_lines.empty?
|
41
|
+
"#{filename} has tab characters on lines #{failing_lines.join(', ')}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def check_for_extra_spaces(filename)
|
46
|
+
failing_lines = []
|
47
|
+
File.readlines(filename).each_with_index do |line,number|
|
48
|
+
next if line =~ /^\s+#.*\s+#{@eol}$/
|
49
|
+
failing_lines << number + 1 if line =~ /\s+#{@eol}$/
|
50
|
+
end
|
51
|
+
|
52
|
+
unless failing_lines.empty?
|
53
|
+
"#{filename} has spaces on the EOL on lines #{failing_lines.join(', ')}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
RSpec::Matchers.define :be_well_formed do
|
58
|
+
failure_message_for_should do |actual|
|
59
|
+
actual.join("\n")
|
60
|
+
end
|
61
|
+
|
62
|
+
match do |actual|
|
63
|
+
actual.empty?
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it "has no malformed whitespace" do
|
68
|
+
error_messages = []
|
69
|
+
@gemfiles.split(@eol).each do |filename|
|
70
|
+
filename = File.expand_path(File.join(File.dirname(__FILE__), ["..", "..", filename]))
|
71
|
+
unless File.exists?(filename)
|
72
|
+
puts "WARNING: .gemfiles out-of-date, #{filename} not found. Edit .gemfiles or run 'rake gemfiles' after committing changes."
|
73
|
+
next
|
74
|
+
end
|
75
|
+
next if filename =~ /\.gitmodules/
|
76
|
+
next if binary?(filename)
|
77
|
+
error_messages << check_for_tab_characters(filename)
|
78
|
+
error_messages << check_for_extra_spaces(filename)
|
79
|
+
end
|
80
|
+
error_messages.compact.should be_well_formed
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
13
84
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Oct do
|
4
4
|
|
@@ -6,7 +6,7 @@ describe Oct do
|
|
6
6
|
filename = File.expand_path('../../../oct.gemspec', __FILE__)
|
7
7
|
eval(File.read(filename), nil, filename)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
describe 'gemspec' do
|
11
11
|
|
12
12
|
it "should return the gem VERSION" do
|
@@ -27,31 +27,19 @@ describe Oct do
|
|
27
27
|
@gemspec.executables.is_a?(Array).should == true
|
28
28
|
end
|
29
29
|
|
30
|
-
describe 'without
|
30
|
+
describe 'without .gemfiles cache' do
|
31
31
|
before(:each) do
|
32
32
|
File.stub!('exists?').and_return false
|
33
33
|
@gemspec = load_gemspec
|
34
34
|
end
|
35
35
|
|
36
|
-
it "should
|
37
|
-
|
38
|
-
@gemspec.files.include?('VERSION').should == true
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'without a git repo' do
|
43
|
-
before(:each) do
|
44
|
-
File.stub!('directory?').and_return false
|
45
|
-
@gemspec = load_gemspec
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should return 'files' from cache" do
|
49
|
-
File.directory?(File.expand_path('../../../.git', __FILE__)).should == false
|
36
|
+
it "should return 'files' from using 'git ls-files" do
|
37
|
+
File.exists?(File.expand_path('../../../.gemfiles', __FILE__)).should == false
|
50
38
|
@gemspec.files.is_a?(Array).should == true
|
51
39
|
@gemspec.files.include?('VERSION').should == true
|
52
40
|
end
|
53
|
-
it "should return 'executables' from
|
54
|
-
File.
|
41
|
+
it "should return 'executables' from 'git ls-files" do
|
42
|
+
File.exists?(File.expand_path('../../../.gemfiles', __FILE__)).should == false
|
55
43
|
@gemspec.executables.is_a?(Array).should == true
|
56
44
|
end
|
57
45
|
end
|
@@ -64,12 +52,12 @@ describe Oct do
|
|
64
52
|
end
|
65
53
|
|
66
54
|
it "should return 'files' from cache" do
|
67
|
-
system('git --version').should == false
|
55
|
+
system('git --version').should == false
|
68
56
|
@gemspec.files.is_a?(Array).should == true
|
69
57
|
@gemspec.files.include?('VERSION').should == true
|
70
58
|
end
|
71
59
|
it "should return 'executables' from cache" do
|
72
|
-
system('git --version').should == false
|
60
|
+
system('git --version').should == false
|
73
61
|
@gemspec.executables.is_a?(Array).should == true
|
74
62
|
end
|
75
63
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,35 +1,11 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('..', __FILE__) unless
|
2
|
-
$LOAD_PATH.include? File.expand_path('..', __FILE__)
|
3
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) unless
|
4
|
-
$LOAD_PATH.include? File.expand_path('../../lib', __FILE__)
|
5
|
-
|
6
|
-
require 'rubygems'
|
7
1
|
require 'oct'
|
8
|
-
require '
|
9
|
-
require 'spec/autorun'
|
2
|
+
require 'rspec/core'
|
10
3
|
require 'aruba/api'
|
4
|
+
require 'aruba_helper'
|
11
5
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
if path.match(/^\/cygdrive/)
|
18
|
-
# match /cygdrive/c/path/to and return c:\\path\\to
|
19
|
-
path = `cygpath -w #{path}`.chomp
|
20
|
-
elsif path.match(/.\:/)
|
21
|
-
# match c:/path/to and return c:\\path\\to
|
22
|
-
path = path.gsub(/\//, '\\')
|
23
|
-
end
|
24
|
-
path
|
25
|
-
end
|
26
|
-
# @return the contents of "filename" in the aruba tmp folder
|
27
|
-
def get_file_contents(filename)
|
28
|
-
in_current_dir do
|
29
|
-
IO.read(filename)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
Spec::Runner.configure do |config|
|
34
|
-
config.include Aruba::Api
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.include Aruba::Api
|
8
|
+
config.filter_run :focus => true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
35
11
|
end
|
data/spec/watchr.rb
CHANGED