mortar 0.15.13 → 0.15.14

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.
@@ -142,7 +142,17 @@ module Mortar
142
142
  if File.directory? @path
143
143
  # get {script_name => full_path}
144
144
  file_paths = Dir[File.join(@path, "**", "*#{@filename_extension}")]
145
- file_paths_hsh = file_paths.collect{|element_path| [element_name(element_path), element(element_name(element_path), element_path)]}.flatten
145
+
146
+ scripts = file_paths.collect{|element_path| [element_name(element_path), element(element_name(element_path), element_path)]}
147
+
148
+ #Check for duplicates.
149
+ name_groups = scripts.group_by{ |x| x[0] }
150
+ duplicates = name_groups.find_all{ |k,v| v.length > 1 }
151
+ if duplicates.length > 0
152
+ raise ProjectError, "Multiple scripts found with the same name. Each script must have a unique name regardless of what directory it is in. Duplicate script names found: #{duplicates.collect{|d| d[0]}}"
153
+ end
154
+
155
+ file_paths_hsh = scripts.flatten
146
156
  return Hash[*file_paths_hsh]
147
157
  else
148
158
  raise ProjectError, "Unable to find #{@name} directory in project" if not @optional
@@ -217,7 +227,7 @@ module Mortar
217
227
  class ControlScript < Script
218
228
 
219
229
  def executable_path
220
- "controlscripts/#{self.name}.pig"
230
+ "#{self.rel_path}/#{self.name}.pig"
221
231
  end
222
232
 
223
233
  end
@@ -225,7 +235,7 @@ module Mortar
225
235
  class PigScript < Script
226
236
 
227
237
  def executable_path
228
- "pigscripts/#{self.name}.pig"
238
+ "#{self.rel_path}/#{self.name}.pig"
229
239
  end
230
240
 
231
241
  end
@@ -7,6 +7,9 @@ export PIG_CLASSPATH=<%= @pig_classpath %>
7
7
  export CLASSPATH=<%= @classpath %>
8
8
  export PIG_MAIN_CLASS=com.mortardata.hawk.HawkMain
9
9
  export PIG_OPTS="<% @pig_opts.each do |k,v| %>-D<%= k %>=<%= v %> <% end %>"
10
+ #Uncomment to debug pig code
11
+ #export PIG_OPTS="$PIG_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000"
12
+
10
13
 
11
14
  # UDF paths are relative to this direectory
12
15
  if [ -d "<%= @project_home %>/pigscripts" ]; then
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.15.13"
19
+ VERSION = "0.15.14"
20
20
  end
@@ -64,7 +64,7 @@ module Mortar
64
64
  write_file pigscript_path
65
65
  p.pigscripts.my_script.name.should == "my_script"
66
66
  p.pigscripts.my_script.path.should == pigscript_path
67
- p.pigscripts.my_script.executable_path.should == "pigscripts/my_script.pig"
67
+ p.pigscripts.my_script.executable_path.end_with?("pigscripts/my_script.pig")
68
68
  p.pigscripts.my_script.rel_path.end_with?('pigscripts').should be_true
69
69
  end
70
70
  end
@@ -78,6 +78,17 @@ module Mortar
78
78
  p.pigscripts.my_script.rel_path.end_with?("pigscripts/subdir").should be_true
79
79
  end
80
80
  end
81
+
82
+ it "throws error on duplicate script stored in a subdirectory" do
83
+ with_blank_project do |p|
84
+ pigscript_path = File.join(p.pigscripts_path, "my_script.pig")
85
+ write_file pigscript_path
86
+ pigscript_path = File.join(p.pigscripts_path, "subdir", "my_script.pig")
87
+ write_file pigscript_path
88
+
89
+ lambda { p.pigscripts }.should raise_error(Mortar::Project::ProjectError)
90
+ end
91
+ end
81
92
 
82
93
  it "finds multiple scripts in subdirectories with the same name" do
83
94
  end
data/spec/spec_helper.rb CHANGED
@@ -56,6 +56,15 @@ def execute_and_return_command(command_line, project=nil, git=nil)
56
56
  end
57
57
  end
58
58
 
59
+ # stub the relative paths which get messed up in tests
60
+ any_instance_of(Mortar::Project::PigScript) do |s|
61
+ stub(s).rel_path.returns('pigscripts')
62
+ end
63
+ any_instance_of(Mortar::Project::ControlScript) do |s|
64
+ stub(s).rel_path.returns('controlscripts')
65
+ end
66
+
67
+
59
68
  # stub git
60
69
  if git
61
70
  # stub out any operations that affect remote resources
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.13
4
+ version: 0.15.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-29 00:00:00.000000000 Z
12
+ date: 2014-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc