nanoc-tidy.rb 0.8.1 → 0.8.3

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
  SHA256:
3
- metadata.gz: '0898b9a7ec2f3c137c9fa5233313a88102ea13ad27f8b6093f258c1f0f096e66'
4
- data.tar.gz: 344d471e7428617674f06a759da09dcde5807ccdbc811ee76ab0a8e3d5d01083
3
+ metadata.gz: a795c8b72d5a01390d1fc1207f591907122770a381b87ce678e07536176e1b84
4
+ data.tar.gz: 334ae45c5f9d92401b5277a72eab418cd520b7b9cc0f867a6f22b944221ccefb
5
5
  SHA512:
6
- metadata.gz: dd18a0e8598f6cfd2fe27a2294deed691d8e671110ea1efa3521fbb7c0005a17e43178251c9a90a331a0a8bbfdea46fb728982b78debb49a8c8699d7eb0a1fd7
7
- data.tar.gz: 84471209421d20f88c6a6b36e05ed51f11c85cfebb623ad63c93ba35cf92a53335461cf518ea1ed56a32f4295e07d0924e91a5ad2be06ccf52dfbca9667c4d8a
6
+ metadata.gz: e9dcc2d5a72046d5250db9483057e6b64e2ead1ea5ceaea0a4e262cd54612698cd2314a19a5bd1ca52c8c1a22c947f1feddef9fe9fb5aa654b32d56ba169610e
7
+ data.tar.gz: b4d645c500657c30390a4c7cca1f75c73642cc45ef2e0bc88dc05a65bb7b2de58cdca362b848036b959c040a8f5d464638adcbcd3de0b5ff5d1802a6744be6f8
@@ -34,12 +34,13 @@ module Nanoc::Tidy
34
34
  # @return [String]
35
35
  # Returns HTML content (modified)
36
36
  def run(content, options = {})
37
+ options = Ryo(options)
37
38
  file = temporary_file(
38
39
  File.basename(item.identifier.to_s),
39
40
  content
40
41
  )
41
- spawn options[:exe] || "tidy5",
42
- [*default_argv, *(options[:argv] || []), "-modify", file.path]
42
+ spawn options.exe || "tidy5",
43
+ [*default_argv, *(options.argv || []), "-modify", file.path]
43
44
  File.read(file.path)
44
45
  ensure
45
46
  file ? file.tap(&:unlink).close : nil
@@ -19,11 +19,17 @@ module Nanoc::Tidy
19
19
  def spawn(exe, argv)
20
20
  r = cmd(exe, *argv)
21
21
  ##
22
- # exit codes
22
+ # tidy-html5 exit codes
23
23
  # * 0: no warnings, no errors
24
24
  # * 1: has warnings
25
25
  # * 2: has errors
26
- if [0, 1].include?(r.exit_status)
26
+ if r.exit_status == 1
27
+ if r.stderr =~ /No such file or directory/
28
+ raise Nanoc::Tidy::Error, "The #{exe} executable was not found"
29
+ else
30
+ r.exit_status
31
+ end
32
+ elsif r.exit_status == 0
27
33
  r.exit_status
28
34
  else
29
35
  raise Nanoc::Tidy::Error,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Nanoc
4
4
  module Tidy
5
- VERSION = "0.8.1"
5
+ VERSION = "0.8.3"
6
6
  end
7
7
  end
data/lib/nanoc/tidy.rb CHANGED
@@ -6,6 +6,7 @@ module Nanoc::Tidy
6
6
  # Generic error
7
7
  Error = Class.new(RuntimeError)
8
8
 
9
+ require "ryo"
9
10
  require_relative "tidy/version"
10
11
  require_relative "tidy/filter"
11
12
 
@@ -12,7 +12,8 @@ Gem::Specification.new do |gem|
12
12
  gem.require_paths = ["lib"]
13
13
  gem.summary = "nanoc-tidy.rb = nanoc + tidy-html5"
14
14
  gem.description = gem.summary
15
- gem.add_runtime_dependency "test-cmd.rb", "~> 0.12.2"
15
+ gem.add_runtime_dependency "ryo.rb", "~> 0.5"
16
+ gem.add_runtime_dependency "test-cmd.rb", "~> 0.12.3"
16
17
  gem.add_development_dependency "yard", "~> 0.9"
17
18
  gem.add_development_dependency "redcarpet", "~> 3.5"
18
19
  gem.add_development_dependency "test-unit", "~> 3.6"
@@ -4,17 +4,25 @@ require_relative "setup"
4
4
 
5
5
  class FilterTest < Test::Unit::TestCase
6
6
  def test_default_options
7
- options = {argv: ["--tidy-mark", "false"]}
7
+ options = {exe:, argv: ["--tidy-mark", "false"]}
8
8
  assert_equal read_result("default_options.html"),
9
9
  filter_for("fixture.html").run(html, options)
10
10
  end
11
11
 
12
12
  def test_upper_option
13
- options = {argv: ["-upper", "--tidy-mark", "false"]}
13
+ options = {exe:, argv: ["-upper", "--tidy-mark", "false"]}
14
14
  assert_equal read_result("upper_option.html"),
15
15
  filter_for("fixture.html").run(html, options)
16
16
  end
17
17
 
18
+ def test_exe_not_found
19
+ options = {exe: "/path/not/found", argv: ["-upper", "--tidy-mark", "false"]}
20
+ assert_raises(
21
+ Nanoc::Tidy::Error,
22
+ "The /path/not/found executable was not found"
23
+ ) { filter_for("fixture.html").run(html, options) }
24
+ end
25
+
18
26
  private
19
27
 
20
28
  def filter_for(basename)
@@ -39,4 +47,8 @@ class FilterTest < Test::Unit::TestCase
39
47
  def html
40
48
  File.binread "./test/fixtures/fixture.html"
41
49
  end
50
+
51
+ def exe
52
+ `which tidy || which tidy5`.chomp
53
+ end
42
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoc-tidy.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
@@ -10,20 +10,34 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2024-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ryo.rb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.5'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: test-cmd.rb
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 0.12.2
33
+ version: 0.12.3
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.12.2
40
+ version: 0.12.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: yard
29
43
  requirement: !ruby/object:Gem::Requirement