hx 0.8.3 → 0.8.4

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.
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ EOS
15
15
  gem.email = "mental@rydia.net"
16
16
  gem.homepage = "http://github.com/mental/hx"
17
17
  gem.authors = ["MenTaLguY"]
18
- gem.add_development_dependency "rspec", ">= 1.2.9"
18
+ gem.add_development_dependency "rspec", ">= 2.0.0"
19
19
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
20
20
  end
21
21
  Jeweler::GemcutterTasks.new
@@ -23,15 +23,13 @@ rescue LoadError
23
23
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
24
24
  end
25
25
 
26
- require 'spec/rake/spectask'
27
- Spec::Rake::SpecTask.new(:spec) do |spec|
28
- spec.libs << 'lib' << 'spec'
29
- spec.spec_files = FileList['spec/**/*_spec.rb']
26
+ require 'rspec/core/rake_task'
27
+ RSpec::Core::RakeTask.new(:spec) do |spec|
28
+ spec.rspec_opts = "--color"
30
29
  end
31
30
 
32
- Spec::Rake::SpecTask.new(:rcov) do |spec|
33
- spec.libs << 'lib' << 'spec'
34
- spec.pattern = 'spec/**/*_spec.rb'
31
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
32
+ spec.rspec_opts = "--color"
35
33
  spec.rcov = true
36
34
  end
37
35
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.3
1
+ 0.8.4
data/lib/hx.rb CHANGED
@@ -541,22 +541,24 @@ class Site
541
541
  end
542
542
  end
543
543
 
544
- def self.refresh_file(pathname, content, update_time)
544
+ def self.refresh_file(pathname, content, update_time, executable=false)
545
545
  begin
546
546
  return false if update_time and update_time < pathname.mtime
547
547
  rescue Errno::ENOENT
548
548
  end
549
- write_file(pathname, content)
549
+ write_file(pathname, content, executable)
550
550
  true
551
551
  end
552
552
 
553
- def self.write_file(pathname, content)
553
+ def self.write_file(pathname, content, executable=false)
554
554
  parent = pathname.parent
555
555
  parent.mkpath()
556
556
  tempfile = Tempfile.new('.hx-out', parent.to_s)
557
557
  begin
558
558
  File.open(tempfile.path, "wb") { |stream| stream << content.to_s }
559
- File.chmod(0666 & ~File.umask, tempfile.path)
559
+ base_mode = 0666
560
+ base_mode |= 0111 if executable
561
+ File.chmod(base_mode & ~File.umask, tempfile.path)
560
562
  File.rename(tempfile.path, pathname.to_s)
561
563
  ensure
562
564
  tempfile.unlink
@@ -68,6 +68,7 @@ class RawFiles
68
68
  pathname = path_to_pathname(path)
69
69
  begin
70
70
  { 'updated' => pathname.mtime,
71
+ 'executable' => pathname.executable?,
71
72
  'content' => Hx::LazyContent.new { pathname.read } }
72
73
  rescue Errno::ENOENT
73
74
  raise Hx::NoSuchEntryError, path
@@ -114,7 +114,8 @@ def self.do_gen(site, update_only)
114
114
  else
115
115
  update_time = nil
116
116
  end
117
- written = Hx.refresh_file(pathname, content, update_time)
117
+ written = Hx.refresh_file(pathname, content, update_time,
118
+ entry['executable'])
118
119
  puts "===> #{path}" if written
119
120
  end
120
121
  end
@@ -0,0 +1,54 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ require 'hx/backend/rawfiles'
4
+ require 'enumerator'
5
+ require 'set'
6
+ require 'tmpdir'
7
+
8
+ describe Hx::Backend::RawFiles do
9
+ before :each do
10
+ @dir = Dir.mktmpdir
11
+ @input = Hx::Backend::RawFiles.new(Hx::NULL_INPUT, {:entry_dir => @dir})
12
+ end
13
+
14
+ after :each do
15
+ FileUtils.rm_rf @dir
16
+ end
17
+
18
+ it "should retrieve file content" do
19
+ content = "foobar"
20
+ File.open(File.join(@dir, 'test'), 'w') { |s| s.write(content) }
21
+ @input.get_entry('test')['content'].to_s.should == content
22
+ end
23
+
24
+ it "should enumerate files" do
25
+ entry_names = Set.new %q(foo bar baz)
26
+ for name in entry_names
27
+ File.open(File.join(@dir, name), 'w') {}
28
+ end
29
+ enum = Enumerable::Enumerator.new(@input, :each_entry_path, Hx::Path::ALL)
30
+ Set.new(enum).should == entry_names
31
+ end
32
+
33
+ it "should retreive file content lazily" do
34
+ real_content = "foobar"
35
+ File.open(File.join(@dir, 'test'), 'w') { |s| s.write("blargh") }
36
+ entry_content = @input.get_entry('test')['content']
37
+ File.open(File.join(@dir, 'test'), 'w') { |s| s.write(real_content) }
38
+ entry_content.to_s.should == real_content
39
+ end
40
+
41
+ it "should retrieve file mtime" do
42
+ File.open(File.join(@dir, 'test'), 'w') {}
43
+ time = Time.at(0)
44
+ File.utime(time, time, File.join(@dir, 'test'))
45
+ @input.get_entry('test')['updated'].should == time
46
+ end
47
+
48
+ it "should return the executable bit" do
49
+ File.open(File.join(@dir, 'regular'), 'w') {}
50
+ File.open(File.join(@dir, 'executable'), 'w') { |s| s.chmod(0775) }
51
+ @input.get_entry('regular')['executable'].should be_false
52
+ @input.get_entry('executable')['executable'].should be_true
53
+ end
54
+ end
@@ -2,8 +2,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'hx'
4
4
  require 'ostruct'
5
- require 'spec'
6
- require 'spec/autorun'
5
+ require 'rspec'
7
6
  begin
8
7
  require 'rubygems'
9
8
  rescue LoadError
@@ -36,12 +35,8 @@ class FakeInput
36
35
  end
37
36
  end
38
37
 
39
- Spec::Matchers.define :accept do |value|
38
+ RSpec::Matchers.define :accept do |value|
40
39
  match do |acceptor|
41
40
  acceptor.accept?(value)
42
41
  end
43
42
  end
44
-
45
- Spec::Runner.configure do |config|
46
-
47
- end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ hash: 55
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 8
9
+ - 4
10
+ version: 0.8.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - MenTaLguY
@@ -9,19 +15,25 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-05-29 00:00:00 -04:00
18
+ date: 2011-02-09 00:00:00 -08:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
23
- version: 1.2.9
24
- version:
29
+ hash: 15
30
+ segments:
31
+ - 2
32
+ - 0
33
+ - 0
34
+ version: 2.0.0
35
+ type: :development
36
+ version_requirements: *id001
25
37
  description: |
26
38
  Hx is a simple static site generator in the spirit of Hobix which reads a
27
39
  YAML configuration file, constructs a filter graph, and generates output
@@ -38,7 +50,6 @@ extra_rdoc_files:
38
50
  - README.rdoc
39
51
  files:
40
52
  - .document
41
- - .gitignore
42
53
  - LICENSE
43
54
  - README.rdoc
44
55
  - Rakefile
@@ -64,6 +75,7 @@ files:
64
75
  - spec/overlay_spec.rb
65
76
  - spec/pathops_spec.rb
66
77
  - spec/rack_spec.rb
78
+ - spec/rawfiles_spec.rb
67
79
  - spec/selector_spec.rb
68
80
  - spec/site_spec.rb
69
81
  - spec/spec.opts
@@ -73,37 +85,44 @@ homepage: http://github.com/mental/hx
73
85
  licenses: []
74
86
 
75
87
  post_install_message:
76
- rdoc_options:
77
- - --charset=UTF-8
88
+ rdoc_options: []
89
+
78
90
  require_paths:
79
91
  - lib
80
92
  required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
81
94
  requirements:
82
95
  - - ">="
83
96
  - !ruby/object:Gem::Version
97
+ hash: 3
98
+ segments:
99
+ - 0
84
100
  version: "0"
85
- version:
86
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
87
103
  requirements:
88
104
  - - ">="
89
105
  - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
108
+ - 0
90
109
  version: "0"
91
- version:
92
110
  requirements: []
93
111
 
94
112
  rubyforge_project:
95
- rubygems_version: 1.3.5
113
+ rubygems_version: 1.3.7
96
114
  signing_key:
97
115
  specification_version: 3
98
116
  summary: A miniature static site generator.
99
117
  test_files:
100
- - spec/spec_helper.rb
101
118
  - spec/cache_spec.rb
102
119
  - spec/hx_dummy.rb
103
- - spec/nullinput_spec.rb
104
- - spec/site_spec.rb
105
120
  - spec/hx_dummy2.rb
106
- - spec/rack_spec.rb
121
+ - spec/nullinput_spec.rb
107
122
  - spec/overlay_spec.rb
108
123
  - spec/pathops_spec.rb
124
+ - spec/rack_spec.rb
125
+ - spec/rawfiles_spec.rb
109
126
  - spec/selector_spec.rb
127
+ - spec/site_spec.rb
128
+ - spec/spec_helper.rb
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC