[librsvg: 1/22] Add a --testing option to rsvg-convert - doesn't restrict the foht map yet, though.




commit 0d22c3ae8ba2d8f28a50ae3457e8a301714fc974
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Sep 22 12:50:39 2021 -0500

    Add a --testing option to rsvg-convert - doesn't restrict the foht map yet, though.
    
    OK, I'll bite the bullet.  It's just going to be easier to maintain
    the test suite this way.
    
    Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/593>

 rsvg-convert.1          |  3 +++
 src/api.rs              |  7 ++-----
 src/bin/rsvg-convert.rs | 11 ++++++++++-
 src/c_api/handle.rs     | 10 +++-------
 tests/src/bugs.rs       |  2 +-
 tests/src/reference.rs  |  2 +-
 6 files changed, 20 insertions(+), 15 deletions(-)
---
diff --git a/rsvg-convert.1 b/rsvg-convert.1
index 06defff3..b4b13ecd 100644
--- a/rsvg-convert.1
+++ b/rsvg-convert.1
@@ -607,6 +607,9 @@ objects will be exported.
 The XML parser has some guards designed to mitigate large CPU or memory consumption in the face of
 malicious documents.  It may also refuse to resolve data: URIs used to embed image data.  If you are
 running into such issues when converting a SVG, this option allows to turn off these guards.
+.TP
+.I "\-\-testing"
+For developers only: render images for librsvg's test suite.
 
 .SH ENVIRONMENT VARIABLES
 .TP
diff --git a/src/api.rs b/src/api.rs
index d0795972..12da4b03 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -529,10 +529,7 @@ impl<'a> CairoRenderer<'a> {
     }
 
     /// Turns on test mode.  Do not use this function; it is for librsvg's test suite only.
-    pub fn test_mode(self) -> Self {
-        CairoRenderer {
-            is_testing: true,
-            ..self
-        }
+    pub fn test_mode(self, is_testing: bool) -> Self {
+        CairoRenderer { is_testing, ..self }
     }
 }
diff --git a/src/bin/rsvg-convert.rs b/src/bin/rsvg-convert.rs
index b5ebd81a..3aeb74ec 100644
--- a/src/bin/rsvg-convert.rs
+++ b/src/bin/rsvg-convert.rs
@@ -438,6 +438,7 @@ struct Converter {
     pub keep_image_data: bool,
     pub input: Vec<Input>,
     pub output: Output,
+    pub testing: bool,
 }
 
 impl Converter {
@@ -477,7 +478,8 @@ impl Converter {
 
             let renderer = CairoRenderer::new(&handle)
                 .with_dpi(self.dpi.0, self.dpi.1)
-                .with_language(&self.language);
+                .with_language(&self.language)
+                .test_mode(self.testing);
 
             let geometry = natural_geometry(&renderer, input, self.export_id.as_deref())?;
 
@@ -810,6 +812,12 @@ fn parse_args() -> Result<Converter, Error> {
                 .long("no-keep-image-data")
                 .help("Do not keep image data"),
         )
+        .arg(
+            clap::Arg::with_name("testing")
+                .long("testing")
+                .help("Render images for librsvg's test suite")
+                .hidden(true),
+        )
         .arg(
             clap::Arg::with_name("FILE")
                 .help("The input file(s) to convert")
@@ -936,6 +944,7 @@ fn parse_args() -> Result<Converter, Error> {
             .map(PathBuf::from)
             .map(Output::Path)
             .unwrap_or(Output::Stdout),
+        testing: matches.is_present("testing"),
     })
 }
 
diff --git a/src/c_api/handle.rs b/src/c_api/handle.rs
index 766091c9..1d04216d 100644
--- a/src/c_api/handle.rs
+++ b/src/c_api/handle.rs
@@ -931,13 +931,9 @@ impl CHandle {
         let imp = imp::CHandle::from_instance(self);
         let inner = imp.inner.borrow();
 
-        let mut renderer = CairoRenderer::new(&*handle_ref).with_dpi(inner.dpi.x(), inner.dpi.y());
-
-        if inner.is_testing {
-            renderer = renderer.test_mode();
-        }
-
-        renderer
+        CairoRenderer::new(&*handle_ref)
+            .with_dpi(inner.dpi.x(), inner.dpi.y())
+            .test_mode(inner.is_testing)
     }
 
     fn get_geometry_sub(
diff --git a/tests/src/bugs.rs b/tests/src/bugs.rs
index e439fe65..c495c4cd 100644
--- a/tests/src/bugs.rs
+++ b/tests/src/bugs.rs
@@ -331,7 +331,7 @@ fn test_text_bounds(name: &str) {
         .read_path(name)
         .unwrap_or_else(|e| panic!("could not load: {}", e));
 
-    let renderer = CairoRenderer::new(&handle).test_mode();
+    let renderer = CairoRenderer::new(&handle).test_mode(true);
 
     let (ink_r, _) = renderer
         .geometry_for_layer(
diff --git a/tests/src/reference.rs b/tests/src/reference.rs
index abc385a6..ce321d2f 100644
--- a/tests/src/reference.rs
+++ b/tests/src/reference.rs
@@ -53,7 +53,7 @@ fn reference_test(path: &str) {
         .unwrap_or_else(|e| panic!("could not load: {}", e));
 
     let renderer = CairoRenderer::new(&handle)
-        .test_mode()
+        .test_mode(true)
         .with_dpi(TEST_SUITE_DPI, TEST_SUITE_DPI);
     let (width, height) = image_size(renderer.intrinsic_dimensions(), TEST_SUITE_DPI);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]