From 4a497eb26a8e1591c145e081bef646e78be85470 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Fri, 16 Aug 2024 22:26:33 +0900 Subject: [PATCH 01/13] include coverimage file implicitly when verify_target_images is enabled. Closes: #1918 --- lib/review/epubmaker.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/review/epubmaker.rb b/lib/review/epubmaker.rb index 9daf4e13..66d1c0b7 100644 --- a/lib/review/epubmaker.rb +++ b/lib/review/epubmaker.rb @@ -220,6 +220,11 @@ def verify_target_images(basetmpdir) end end end + + if @config['coverimage'] + @config['epubmaker']['force_include_images'].push(File.join(@config['imagedir'], @config['coverimage'])) + end + @config['epubmaker']['force_include_images'] = @config['epubmaker']['force_include_images'].compact.sort.uniq end From 4da6e4cb0d07bd380904be5ee9b85397bff2e9c0 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 12:23:04 +0900 Subject: [PATCH 02/13] remove quotation from CSS url string --- lib/review/epubmaker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/review/epubmaker.rb b/lib/review/epubmaker.rb index 66d1c0b7..8a281d24 100644 --- a/lib/review/epubmaker.rb +++ b/lib/review/epubmaker.rb @@ -214,7 +214,7 @@ def verify_target_images(basetmpdir) File.open(File.join(basetmpdir, content.file)) do |f| f.each_line do |l| l.scan(/url\((.+?)\)/) do |_m| - @config['epubmaker']['force_include_images'].push($1.strip) + @config['epubmaker']['force_include_images'].push($1.strip.gsub(/\A(['"])(.*)\1\Z/, '\2')) end end end From 57d5ebc6fb583c7590bccede36f23c7ab21df647 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 12:23:24 +0900 Subject: [PATCH 03/13] add test for verify_target_images --- test/test_epubmaker.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index cdca5f82..b129d1ee 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -867,6 +867,10 @@ def config @config end + def producer + @producer + end + def error(s) raise ApplicationError, s end @@ -940,4 +944,20 @@ def test_copy_static_file end end end + + def test_verify_target_images + epubmaker_instance do |epubmaker, tmpdir| + epubmaker.config['epubmaker']['verify_target_images'] = true + epubmaker.config['coverimage'] = 'cover.png' + + epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) + File.write(File.join(tmpdir, 'ch01.html'), '') + epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') + File.write(File.join(tmpdir, 'style.css'), 'div { background-image: url("images/bg.jpg")}') + epubmaker.verify_target_images(tmpdir) + + expect = %w(images/bg.jpg images/ch01.png images/cover.png) + assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] + end + end end From 738b81e9d2847cdf27dd93e2d1fde38ddda17775 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 12:30:19 +0900 Subject: [PATCH 04/13] rubocop --- test/test_epubmaker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index b129d1ee..ef18a4a5 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -956,7 +956,7 @@ def test_verify_target_images File.write(File.join(tmpdir, 'style.css'), 'div { background-image: url("images/bg.jpg")}') epubmaker.verify_target_images(tmpdir) - expect = %w(images/bg.jpg images/ch01.png images/cover.png) + expect = %w[images/bg.jpg images/ch01.png images/cover.png] assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] end end From cb1429f174edbcb6f2f6f808376cc90cf56f21bf Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 12:55:54 +0900 Subject: [PATCH 05/13] unlink before closing block --- test/test_epubmaker.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index ef18a4a5..ffcdadf5 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -955,6 +955,7 @@ def test_verify_target_images epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') File.write(File.join(tmpdir, 'style.css'), 'div { background-image: url("images/bg.jpg")}') epubmaker.verify_target_images(tmpdir) + File.unlink(File.join(tmpdir, 'ch01.html'), File.join(tmpdir, 'style.css')) expect = %w[images/bg.jpg images/ch01.png images/cover.png] assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] From 6ee03899bd6c2d61f0310cda886b4a173296abec Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 13:14:32 +0900 Subject: [PATCH 06/13] write files in epubmaker_instance --- test/test_epubmaker.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index ffcdadf5..c4538247 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -884,6 +884,8 @@ def error(s) Dir.chdir(tmpdir) do Dir.mkdir('test') + File.write(File.join(tmpdir, 'test', 'ch01.html'), '') + File.write(File.join(tmpdir, 'test', 'style.css'), 'div { background-image: url("images/bg.jpg")}') yield(epubmaker, File.join(tmpdir, 'test')) end end @@ -951,11 +953,8 @@ def test_verify_target_images epubmaker.config['coverimage'] = 'cover.png' epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) - File.write(File.join(tmpdir, 'ch01.html'), '') epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') - File.write(File.join(tmpdir, 'style.css'), 'div { background-image: url("images/bg.jpg")}') epubmaker.verify_target_images(tmpdir) - File.unlink(File.join(tmpdir, 'ch01.html'), File.join(tmpdir, 'style.css')) expect = %w[images/bg.jpg images/ch01.png images/cover.png] assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] From 46f184b374e5c1a260aaf3c5bbc53621f3089397 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 13:19:45 +0900 Subject: [PATCH 07/13] write files at outside of chdir --- test/test_epubmaker.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index c4538247..3166cdc6 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -882,10 +882,11 @@ def error(s) Dir.mkdir(File.join(tmpdir, 'subdir')) File.write(File.join(tmpdir, 'subdir', 'exist.html'), '') + Dir.mkdir(File.join(tmpdir, 'test')) + File.write(File.join(tmpdir, 'test', 'ch01.html'), '') + File.write(File.join(tmpdir, 'test', 'style.css'), 'div { background-image: url("images/bg.jpg")}') + Dir.chdir(tmpdir) do - Dir.mkdir('test') - File.write(File.join(tmpdir, 'test', 'ch01.html'), '') - File.write(File.join(tmpdir, 'test', 'style.css'), 'div { background-image: url("images/bg.jpg")}') yield(epubmaker, File.join(tmpdir, 'test')) end end From 923f5b07c0faa080ae18044d7f9102d396807608 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 13:52:37 +0900 Subject: [PATCH 08/13] remove test --- test/test_epubmaker.rb | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index 3166cdc6..90f93885 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -948,17 +948,17 @@ def test_copy_static_file end end - def test_verify_target_images - epubmaker_instance do |epubmaker, tmpdir| - epubmaker.config['epubmaker']['verify_target_images'] = true - epubmaker.config['coverimage'] = 'cover.png' - - epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) - epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') - epubmaker.verify_target_images(tmpdir) - - expect = %w[images/bg.jpg images/ch01.png images/cover.png] - assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] - end - end + # def test_verify_target_images + # epubmaker_instance do |epubmaker, tmpdir| + # epubmaker.config['epubmaker']['verify_target_images'] = true + # epubmaker.config['coverimage'] = 'cover.png' + # + # epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) + # epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') + # epubmaker.verify_target_images(tmpdir) + # + # expect = %w[images/bg.jpg images/ch01.png images/cover.png] + # assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] + # end + # end end From d412007b0e78d84b7c899ed97f7bbdf86d1a80af Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 14:01:44 +0900 Subject: [PATCH 09/13] skip run verify_target_images --- test/test_epubmaker.rb | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index 90f93885..9de8db4d 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -948,17 +948,18 @@ def test_copy_static_file end end - # def test_verify_target_images - # epubmaker_instance do |epubmaker, tmpdir| - # epubmaker.config['epubmaker']['verify_target_images'] = true - # epubmaker.config['coverimage'] = 'cover.png' - # - # epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) - # epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') - # epubmaker.verify_target_images(tmpdir) - # - # expect = %w[images/bg.jpg images/ch01.png images/cover.png] - # assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] - # end - # end + def test_verify_target_images + epubmaker_instance do |epubmaker, _tmpdir| + epubmaker.config['epubmaker']['verify_target_images'] = true + epubmaker.config['coverimage'] = 'cover.png' + + epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) + epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') + # epubmaker.verify_target_images(tmpdir) + + # expect = %w[images/bg.jpg images/ch01.png images/cover.png] + # assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] + assert_equal true, true + end + end end From 0be9b0d128f390ff9c73edc7537c9c6b0a51b464 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 14:06:26 +0900 Subject: [PATCH 10/13] enable verify_target_images --- test/test_epubmaker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index 9de8db4d..cf3750f6 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -955,7 +955,7 @@ def test_verify_target_images epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'ch01.html', title: 'CH01', level: 1) epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') - # epubmaker.verify_target_images(tmpdir) + epubmaker.verify_target_images(tmpdir) # expect = %w[images/bg.jpg images/ch01.png images/cover.png] # assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] From 81ad7f77737eb57dbf688ad0e70387357d89f4f7 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 14:19:40 +0900 Subject: [PATCH 11/13] enable verify_target_images --- test/test_epubmaker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index cf3750f6..74a1563a 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -949,7 +949,7 @@ def test_copy_static_file end def test_verify_target_images - epubmaker_instance do |epubmaker, _tmpdir| + epubmaker_instance do |epubmaker, tmpdir| epubmaker.config['epubmaker']['verify_target_images'] = true epubmaker.config['coverimage'] = 'cover.png' From 84048888263aa51310524dfc79c09aa542257489 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 14:28:16 +0900 Subject: [PATCH 12/13] try to ignore Errno::EACCES --- test/test_epubmaker.rb | 66 ++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index 74a1563a..d53af660 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -854,41 +854,45 @@ def test_epub_unsafe_id end def epubmaker_instance - Dir.mktmpdir do |tmpdir| - epubmaker = ReVIEW::EPUBMaker.new - epubmaker.instance_eval do - @config = ReVIEW::Configure.create(maker: 'epubmaker') - @config['titlepage'] = nil - @producer = ReVIEW::EPUBMaker::Producer.new(@config) - - @htmltoc = ReVIEW::HTMLToc.new(tmpdir) - - def config - @config - end - - def producer - @producer + begin + Dir.mktmpdir do |tmpdir| + epubmaker = ReVIEW::EPUBMaker.new + epubmaker.instance_eval do + @config = ReVIEW::Configure.create(maker: 'epubmaker') + @config['titlepage'] = nil + @producer = ReVIEW::EPUBMaker::Producer.new(@config) + + @htmltoc = ReVIEW::HTMLToc.new(tmpdir) + + def config + @config + end + + def producer + @producer + end + + def error(s) + raise ApplicationError, s + end end - def error(s) - raise ApplicationError, s - end - end + File.write(File.join(tmpdir, 'exist.css'), 'body {}') + File.write(File.join(tmpdir, 'exist.html'), '') - File.write(File.join(tmpdir, 'exist.css'), 'body {}') - File.write(File.join(tmpdir, 'exist.html'), '') + Dir.mkdir(File.join(tmpdir, 'subdir')) + File.write(File.join(tmpdir, 'subdir', 'exist.html'), '') - Dir.mkdir(File.join(tmpdir, 'subdir')) - File.write(File.join(tmpdir, 'subdir', 'exist.html'), '') + Dir.mkdir(File.join(tmpdir, 'test')) + File.write(File.join(tmpdir, 'test', 'ch01.html'), '') + File.write(File.join(tmpdir, 'test', 'style.css'), 'div { background-image: url("images/bg.jpg")}') - Dir.mkdir(File.join(tmpdir, 'test')) - File.write(File.join(tmpdir, 'test', 'ch01.html'), '') - File.write(File.join(tmpdir, 'test', 'style.css'), 'div { background-image: url("images/bg.jpg")}') - - Dir.chdir(tmpdir) do - yield(epubmaker, File.join(tmpdir, 'test')) + Dir.chdir(tmpdir) do + yield(epubmaker, File.join(tmpdir, 'test')) + end end + rescue Errno::EACCES + # Windows fails unlink when file is opened end end @@ -957,8 +961,8 @@ def test_verify_target_images epubmaker.producer.contents << ReVIEW::EPUBMaker::Content.new(file: 'style.css') epubmaker.verify_target_images(tmpdir) - # expect = %w[images/bg.jpg images/ch01.png images/cover.png] - # assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] + expect = %w[images/bg.jpg images/ch01.png images/cover.png] + assert_equal expect, epubmaker.config['epubmaker']['force_include_images'] assert_equal true, true end end From 78a561e05d7f9c3089812d91c1adf0927ca26c04 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Sun, 18 Aug 2024 14:36:11 +0900 Subject: [PATCH 13/13] ignore Errno::ENOTEMPTY also --- test/test_epubmaker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_epubmaker.rb b/test/test_epubmaker.rb index d53af660..ef3ad77a 100644 --- a/test/test_epubmaker.rb +++ b/test/test_epubmaker.rb @@ -891,7 +891,7 @@ def error(s) yield(epubmaker, File.join(tmpdir, 'test')) end end - rescue Errno::EACCES + rescue Errno::EACCES, Errno::ENOTEMPTY # Windows fails unlink when file is opened end end