From: William Desportes <williamdes@wdes.fr>
Date: Thu, 2 Feb 2023 16:06:40 +0100
Subject: Change fontDir for tests and runtime

Origin: vendor
Forwarded: not-needed
---
 src/FontMetrics.php                   |  2 +-
 tests/Canvas/CPDFTest.php             | 10 +++----
 tests/Css/AttributeTranslatorTest.php |  2 +-
 tests/Css/SelectorTest.php            |  2 +-
 tests/Css/ShorthandTest.php           |  2 +-
 tests/Css/StyleTest.php               | 50 +++++++++++++++++------------------
 tests/Css/StylesheetTest.php          |  4 +--
 tests/DompdfTest.php                  | 18 ++++++-------
 tests/FrameReflower/ImageTest.php     |  2 +-
 tests/GeneratedContentTest.php        |  2 +-
 tests/Helpers/MockHelper.php          |  4 +--
 tests/LayoutTest/ImageTest.php        |  4 ++-
 tests/LayoutTest/PageTest.php         |  2 +-
 tests/OptionsTest.php                 | 23 +++++++++++-----
 tests/OutputTest/Dataset.php          | 31 +++++++++++++++++++++-
 tests/Renderer/RendererTest.php       |  2 +-
 tests/TestCase.php                    | 29 ++++++++++++++++++++
 17 files changed, 129 insertions(+), 60 deletions(-)

diff --git a/src/FontMetrics.php b/src/FontMetrics.php
index 9adfdb0..3442c2a 100644
--- a/src/FontMetrics.php
+++ b/src/FontMetrics.php
@@ -619,7 +619,7 @@ class FontMetrics
             foreach ($this->bundledFonts as $family => $variants) {
                 if (!isset($fontFamilies[$family])) {
                     $fontFamilies[$family] = array_map(function ($variant) {
-                        return $this->getOptions()->getRootDir() . '/lib/fonts/' . $variant;
+                        return $this->getOptions()->getFontDir() . '/' . $variant;
                     }, $variants);
                 }
             }
diff --git a/tests/Canvas/CPDFTest.php b/tests/Canvas/CPDFTest.php
index fa3a0a6..92c33c1 100644
--- a/tests/Canvas/CPDFTest.php
+++ b/tests/Canvas/CPDFTest.php
@@ -14,7 +14,7 @@ class CPDFTest extends TestCase
         $basePath = realpath(__DIR__ . "/..");
         $imagePath = "$basePath/_files/red-dot.png";
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $canvas = new CPDF([0, 0, 200, 200], "portrait", $dompdf);
         $canvas->new_page();
         $canvas->image($imagePath, 0, 0, 5, 5);
@@ -27,7 +27,7 @@ class CPDFTest extends TestCase
         global $called;
         $called = 0;
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $canvas = new CPDF([0, 0, 200, 200], "portrait", $dompdf);
         $canvas->new_page();
 
@@ -57,7 +57,7 @@ class CPDFTest extends TestCase
 
     public function testPageText(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $canvas = new CPDF([0, 0, 200, 200], "portrait", $dompdf);
         $canvas->new_page();
 
@@ -70,7 +70,7 @@ class CPDFTest extends TestCase
 
     public function testPageLine(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $canvas = new CPDF([0, 0, 200, 200], "portrait", $dompdf);
         $canvas->new_page();
 
@@ -145,7 +145,7 @@ class CPDFTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('fontSupportsCharProvider')]
     public function testFontSupportsChar(string $font, string $char, bool $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $canvas = new CPDF("letter", "portrait", $dompdf);
         $fontFile = $dompdf->getFontMetrics()->getFont($font);
 
diff --git a/tests/Css/AttributeTranslatorTest.php b/tests/Css/AttributeTranslatorTest.php
index 9c11043..f154a1b 100644
--- a/tests/Css/AttributeTranslatorTest.php
+++ b/tests/Css/AttributeTranslatorTest.php
@@ -88,7 +88,7 @@ HTML
         $styles = array_fill_keys(array_keys($expectedStyles), []);
 
         // Use callback to inspect frame tree
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setCallbacks([
             [
                 "event" => "begin_frame",
diff --git a/tests/Css/SelectorTest.php b/tests/Css/SelectorTest.php
index 85e01d5..59177e1 100644
--- a/tests/Css/SelectorTest.php
+++ b/tests/Css/SelectorTest.php
@@ -13,7 +13,7 @@ class SelectorTest extends TestCase
 {
     private function stylesheet()
     {
-        return new class(new Dompdf()) extends Stylesheet {
+        return new class($this->getDompdf()) extends Stylesheet {
             public function specificity(string $selector, int $origin = self::ORIG_AUTHOR): int
             {
                 return parent::specificity($selector, $origin);
diff --git a/tests/Css/ShorthandTest.php b/tests/Css/ShorthandTest.php
index faa6167..bbb6dee 100644
--- a/tests/Css/ShorthandTest.php
+++ b/tests/Css/ShorthandTest.php
@@ -10,7 +10,7 @@ class ShorthandTest extends TestCase
 {
     protected function style(): Style
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $sheet->set_base_path(__DIR__); // Treat stylesheet as being located in this directory
 
diff --git a/tests/Css/StyleTest.php b/tests/Css/StyleTest.php
index a131431..ae0f256 100644
--- a/tests/Css/StyleTest.php
+++ b/tests/Css/StyleTest.php
@@ -22,7 +22,7 @@ class StyleTest extends TestCase
 {
     public function testInitial(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -35,7 +35,7 @@ class StyleTest extends TestCase
 
     public function testUnsetNonInherited(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $s1 = new Style($sheet);
         $s2 = new Style($sheet);
@@ -52,7 +52,7 @@ class StyleTest extends TestCase
 
     public function testUnsetInherited(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $s1 = new Style($sheet);
         $s2 = new Style($sheet);
@@ -190,7 +190,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('lengthInPtProvider')]
     public function testLengthInPt(string $length, ?float $ref_size, $expected, ?int $precision = null): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $s = new Style($sheet);
 
@@ -253,7 +253,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('cssImageNoBaseHrefProvider')]
     public function testCssImageNoBaseHref(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $sheet->set_base_path(__DIR__); // Treat stylesheet as being located in this directory
         $s = new Style($sheet);
@@ -272,7 +272,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('cssImageWithBaseHrefProvider')]
     public function testCssImageWithBaseHref(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setProtocol("https://");
         $dompdf->setBaseHost("example.com");
         $dompdf->setBasePath("/");
@@ -294,7 +294,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('cssImageWithStylesheetBaseHrefProvider')]
     public function testCssImageWithStylesheetBaseHref(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $sheet->set_protocol("https://");
         $sheet->set_host("example.com");
@@ -377,7 +377,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('backgroundPositionProvider')]
     public function testBackgroundPosition(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -426,7 +426,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('backgroundSizeProvider')]
     public function testBackgroundSize(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -489,7 +489,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('fontWeightProvider')]
     public function testFontWeight(string $value, $expected, int $parentWeight = 400): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
         $parentStyle = new Style($sheet);
@@ -508,7 +508,7 @@ class StyleTest extends TestCase
         $expected,
         $initialProps = []
     ): void {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -878,7 +878,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('borderSpacingProvider')]
     public function testBorderSpacing(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -930,7 +930,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('counterIncrementProvider')]
     public function testCounterIncrement(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -982,7 +982,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('counterResetProvider')]
     public function testCounterReset(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1023,7 +1023,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('quotesProvider')]
     public function testQuotes(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1146,7 +1146,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('contentProvider')]
     public function testContent(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1210,7 +1210,7 @@ class StyleTest extends TestCase
     {
         $options = new Options();
         $options->setDefaultPaperSize("A5");
-        $dompdf = new Dompdf($options);
+        $dompdf = $this->getDompdf($options);
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1278,7 +1278,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('transformProvider')]
     public function testTransform(string $value, $expected, array $initial = []): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1366,7 +1366,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('transformOriginProvider')]
     public function testTransformOrigin(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1407,7 +1407,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('opacityProvider')]
     public function testOpacity(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1441,7 +1441,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('zIndexProvider')]
     public function testZIndex(string $value, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1451,7 +1451,7 @@ class StyleTest extends TestCase
 
     public function testWordBreakBreakWord(): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1563,7 +1563,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('varValueProvider')]
     public function testVar(array $properties, $lookup_property, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $style = new Style($sheet);
 
@@ -1625,7 +1625,7 @@ class StyleTest extends TestCase
     #[\PHPUnit\Framework\Attributes\DataProvider('mergedVarValueProvider')]
     public function testMergeVar(array $styleDefs, $lookup_property, $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $styles = [
             new Style($sheet),
@@ -1743,7 +1743,7 @@ class StyleTest extends TestCase
 
         $styles = [];
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
 
         $dompdf->setCallbacks(['test' => [
             'event' => 'end_frame',
diff --git a/tests/Css/StylesheetTest.php b/tests/Css/StylesheetTest.php
index 5fcbf49..cd54d41 100644
--- a/tests/Css/StylesheetTest.php
+++ b/tests/Css/StylesheetTest.php
@@ -52,7 +52,7 @@ CSS
     #[\PHPUnit\Framework\Attributes\DataProvider('parseCssProvider')]
     public function testParseCss(string $css, array $expected): void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $sheet->load_css($css);
 
@@ -88,7 +88,7 @@ CSS
         $dataUri = "data:image/jpeg;base64," . $imageEncoded;
         $css = "div { background-color: #000; background-image: url(\"$dataUri\"); }";
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $sheet = new Stylesheet($dompdf);
         $sheet->load_css($css);
 
diff --git a/tests/DompdfTest.php b/tests/DompdfTest.php
index 384d5f6..dc1bd23 100644
--- a/tests/DompdfTest.php
+++ b/tests/DompdfTest.php
@@ -16,7 +16,7 @@ class DompdfTest extends TestCase
 {
     public function testConstructor()
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $this->assertInstanceOf(CPDF::class, $dompdf->getCanvas());
         $this->assertSame("", $dompdf->getProtocol());
         $this->assertSame("", $dompdf->getBaseHost());
@@ -31,7 +31,7 @@ class DompdfTest extends TestCase
 
     public function testSetters()
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setBaseHost('test1');
         $dompdf->setBasePath('test2');
         $dompdf->setCallbacks(['test' => ['event' => 'test', 'f' => function () {}]]);
@@ -52,7 +52,7 @@ class DompdfTest extends TestCase
         $this->assertEquals('test3', $dompdf->getProtocol());
         $this->assertInstanceOf(FrameTree::class, $dompdf->getTree());
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setHttpContext(['ssl' => ['verify_peer' => false]]);
         $this->assertIsResource($dompdf->getHttpContext());
     }
@@ -166,7 +166,7 @@ class DompdfTest extends TestCase
         ?string $encoding,
         string $expectedText
     ): void {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->loadHtml($html, $encoding);
 
         $this->assertSame($expectedText, $dompdf->getDom()->textContent);
@@ -174,7 +174,7 @@ class DompdfTest extends TestCase
 
     public function testRender()
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->loadHtml('<html><body><strong>Hello</strong></body></html>');
         $dompdf->render();
 
@@ -200,7 +200,7 @@ class DompdfTest extends TestCase
     {
         $called = 0;
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setCallbacks([
             [
                 "event" => $event,
@@ -223,7 +223,7 @@ class DompdfTest extends TestCase
     {
         $called = 0;
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setCallbacks([
             [
                 "event" => "end_document",
@@ -269,7 +269,7 @@ class DompdfTest extends TestCase
         $options = new Options();
         $options->setDefaultPaperSize("Letter");
 
-        $dompdf = new Dompdf($options);
+        $dompdf = $this->getDompdf($options);
 
         if ($setPaper) {
             $dompdf->setPaper($size, $orientation);
@@ -288,7 +288,7 @@ class DompdfTest extends TestCase
     {
         $text_frame_contents = [];
 
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
 
         // Use a callback to inspect the frame tree; otherwise FrameReflower\Page::reflow()
         // will dispose of it before dompdf->render finishes
diff --git a/tests/FrameReflower/ImageTest.php b/tests/FrameReflower/ImageTest.php
index 0829d3e..96c406f 100644
--- a/tests/FrameReflower/ImageTest.php
+++ b/tests/FrameReflower/ImageTest.php
@@ -128,7 +128,7 @@ class ImageTest extends TestCase
         ?ImageFrameDecorator $parentFrame = null,
         array $containingBlock = [0, 0, 400, 400]
     ): ImageFrameDecorator {
-        $style = new Style(new Stylesheet(new Dompdf()));
+        $style = new Style(new Stylesheet($this->getDompdf()));
 
         foreach ($styleProperties as $prop => $val) {
             $style->set_prop($prop, $val);
diff --git a/tests/GeneratedContentTest.php b/tests/GeneratedContentTest.php
index 03e0ff7..0613b32 100644
--- a/tests/GeneratedContentTest.php
+++ b/tests/GeneratedContentTest.php
@@ -602,7 +602,7 @@ HTML
         $content = array_fill_keys(array_keys($expectedContent), []);
 
         // Use callback to inspect frame tree
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $dompdf->setCallbacks([
             [
                 "event" => "begin_frame",
diff --git a/tests/Helpers/MockHelper.php b/tests/Helpers/MockHelper.php
index c3fddf5..cba82af 100644
--- a/tests/Helpers/MockHelper.php
+++ b/tests/Helpers/MockHelper.php
@@ -17,9 +17,9 @@ class MockHelper
         // initialize static properties
         // For now we cannot mock methods in a constructor
         // https://github.com/mockery/mockery/issues/534
-        // $style = \Mockery::mock(Style::class, [new Stylesheet(new Dompdf())]);
+        // $style = \Mockery::mock(Style::class, [new Stylesheet($this->getDompdf())]);
 
-        new Style(new Stylesheet(new Dompdf()));
+        new Style(new Stylesheet($this->getDompdf()));
         $style = \Mockery::mock(Style::class);
 
         foreach ($properties as $property => $value) {
diff --git a/tests/LayoutTest/ImageTest.php b/tests/LayoutTest/ImageTest.php
index 201840a..d861b08 100644
--- a/tests/LayoutTest/ImageTest.php
+++ b/tests/LayoutTest/ImageTest.php
@@ -183,7 +183,9 @@ HTML
         $options = new Options();
 
         // Use callback to inspect frame tree
-        $dompdf = new Dompdf($options);
+        $dompdf = $this->getDompdf($options);
+        $rootDir = realpath(__DIR__ . '/../../');
+        $options->setChroot([$rootDir, '/usr/share/php/dompdf']);
         $dompdf->setBasePath(__DIR__);
         $dompdf->setCallbacks([
             [
diff --git a/tests/LayoutTest/PageTest.php b/tests/LayoutTest/PageTest.php
index bf37685..6f5ba2c 100644
--- a/tests/LayoutTest/PageTest.php
+++ b/tests/LayoutTest/PageTest.php
@@ -93,7 +93,7 @@ HTML
         $options = new Options();
 
         // Use callback to inspect frame tree
-        $dompdf = new Dompdf($options);
+        $dompdf = $this->getDompdf($options);
         $dompdf->setCallbacks([
             [
                 "event" => "begin_frame",
diff --git a/tests/OptionsTest.php b/tests/OptionsTest.php
index 2231c30..9bb4bcd 100644
--- a/tests/OptionsTest.php
+++ b/tests/OptionsTest.php
@@ -8,12 +8,21 @@ class OptionsTest extends TestCase
 {
     public function testConstructor()
     {
-        $root = realpath(dirname(__DIR__));
-        $option = new Options();
-        $this->assertEquals(sys_get_temp_dir(), $option->getTempDir());
-        $this->assertEquals($root . '/lib/fonts', $option->getFontDir());
-        $this->assertEquals($root . '/lib/fonts', $option->getFontCache());
-        $this->assertEquals([$root], $option->getChroot());
+        $option = $this->getOptions();
+        if (is_dir('/usr/share/php/dompdf/lib/fonts')) {
+            $root = '/usr/share/php/dompdf';
+            $this->assertEquals('/var/cache/php-dompdf/tmp', $option->getTempDir());
+            $this->assertEquals($root . '/lib/fonts', $option->getFontDir());
+            $this->assertEquals('/var/cache/php-dompdf/fonts/', $option->getFontCache());
+            $this->assertEquals([$root], $option->getChroot());
+        }
+        if (! is_dir('/usr/share/php/dompdf/lib/fonts')) {
+            $root = realpath(dirname(__DIR__));
+            $this->assertEquals($root . '/tmp', $option->getTempDir());
+            $this->assertEquals($root . '/lib/fonts', $option->getFontDir());
+            $this->assertEquals($root . '/lib/fonts', $option->getFontCache());
+            $this->assertEquals([$root], $option->getChroot());
+        }
         $this->assertEmpty($option->getLogOutputFile());
         $this->assertEquals('screen', $option->getDefaultMediaType());
         $this->assertEquals('letter', $option->getDefaultPaperSize());
@@ -114,7 +123,7 @@ class OptionsTest extends TestCase
         [$validation_result] = $allowedProtocols["http://"]["rules"][0]("http://example.com/");
         $this->assertFalse($validation_result);
 
-        
+
         $mock_protocol = [
             "mock://" => [
                 "rules" => [
diff --git a/tests/OutputTest/Dataset.php b/tests/OutputTest/Dataset.php
index 2760586..9b74200 100644
--- a/tests/OutputTest/Dataset.php
+++ b/tests/OutputTest/Dataset.php
@@ -34,12 +34,41 @@ final class Dataset
         return new SplFileInfo("$path/$name.pdf");
     }
 
+    protected function getDompdf(Options $options = null): Dompdf
+    {
+        return new Dompdf($this->getOptions($options));
+    }
+
+    protected function getOptions(Options $options = null): Options
+    {
+        $options = $options === null ? new Options() : $options;
+
+        if (is_dir('/usr/share/php/dompdf/lib/fonts')) {
+
+            $rootDir = realpath(__DIR__ . '/../../');
+            $options = $options
+                ->setChroot(array($rootDir))
+                ->setRootDir($rootDir);
+            return $options;
+        }
+
+        $rootDir = realpath(__DIR__ . '/../../');
+        $options = $options
+            ->setChroot(array($rootDir))
+            ->setRootDir($rootDir)
+            ->setTempDir($rootDir . '/tmp')
+            ->setFontDir($rootDir . '/lib/fonts')
+            ->setFontCache($rootDir . '/lib/fonts');
+
+        return $options;
+    }
+
     public function render(string $backend = "cpdf"): Dompdf
     {
         $options = new Options();
         $options->setPdfBackend($backend);
 
-        $pdf = new Dompdf($options);
+        $pdf = $this->getDompdf($options);
         $pdf->loadHtmlFile($this->file->getPathname());
         $pdf->setBasePath($this->file->getPath());
         $pdf->render();
diff --git a/tests/Renderer/RendererTest.php b/tests/Renderer/RendererTest.php
index 9ef8648..fb71dee 100644
--- a/tests/Renderer/RendererTest.php
+++ b/tests/Renderer/RendererTest.php
@@ -16,7 +16,7 @@ class RendererTest extends TestCase
 
     public function setUp() : void
     {
-        $dompdf = new Dompdf();
+        $dompdf = $this->getDompdf();
         $this->renderer = new Renderer($dompdf);
         $this->resizeBackgroundImageMethod = self::getMethod('_resize_background_image');
     }
diff --git a/tests/TestCase.php b/tests/TestCase.php
index b9ad809..bdaa24a 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -3,9 +3,38 @@ namespace Dompdf\Tests;
 
 use PHPUnit\Framework\TestCase as BaseTestCase;
 use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
+use Dompdf\Dompdf;
+use Dompdf\Options;
 
 class TestCase extends BaseTestCase
 {
     use MockeryPHPUnitIntegration;
 
+    protected function getDompdf(Options $options = null): Dompdf
+    {
+        if (is_dir('/usr/share/php/dompdf/lib/fonts')) {
+            return new Dompdf($options);
+        }
+
+        return new Dompdf($this->getOptions($options));
+    }
+
+    protected function getOptions(Options $options = null): Options
+    {
+        $options = $options === null ? new Options() : $options;
+
+        if (is_dir('/usr/share/php/dompdf/lib/fonts')) {
+            return $options;
+        }
+
+        $rootDir = realpath(__DIR__ . '/../');
+        $options = $options
+            ->setChroot(array($rootDir))
+            ->setRootDir($rootDir)
+            ->setTempDir($rootDir . '/tmp')
+            ->setFontDir($rootDir . '/lib/fonts')
+            ->setFontCache($rootDir . '/lib/fonts');
+
+        return $options;
+    }
 }
