public function testStringToFile()
 {
     $this->assertTrue(Filesystem::stringToFile('a/test.txt', 'test content', 0666));
     $this->assertSame('test content', file_get_contents('a/test.txt'));
     $this->assertTrue(is_dir('a'));
     Filesystem::removeDir('a');
 }
 /**
  * Transforms XML document using XSLT.
  * @param DOMDocument $xmlDom source XML
  * @param DOMDocument $xsltDom source XSLT
  * @param string $outputFilenameBase base of output file with transformed XML
  *		to be created
  * @return bool true on success
  */
 protected function checkXsltValidity(DOMDocument $xmlDom, DOMDocument $xsltDom, $outputFilenameBase)
 {
     $this->useLibxmlErrors();
     $proc = new XSLTProcessor();
     $proc->importStylesheet($xsltDom);
     if (!$this->failGoalOnLibxmlErrors(self::goalValidXslt, null)) {
         return false;
     }
     $this->useLibxmlErrors();
     $newXmlDom = $proc->transformToDoc($xmlDom);
     if (!$this->reachGoalOnNoLibxmlErrors(self::goalValidXslt, null)) {
         return false;
     }
     $output = $newXmlDom->saveHTML();
     $suffix = '.html';
     if (!$output) {
         $output = $newXmlDom->saveXML();
         $suffix = '.xml';
     }
     Filesystem::stringToFile($outputFilenameBase . $suffix, $output);
     return true;
 }
    /**
     * Evaluates XPath expressions on XML and outputs results to files.
     * @param DOMDocument $xmlDom source XML
     * @param array $expressions XPath expressions
     * @param array $comments XPath comments belonging to @a $expressions
     * @return bool true on success
     */
    protected function evaluateXpathExpressions($xmlDom, $expressions, $comments)
    {
        $evaluator = new DOMXpath($xmlDom);
        $exprNumber = 0;
        for ($i = 0; $i < count($expressions); ++$i) {
            $expr = $expressions[$i];
            $this->useLibxmlErrors();
            $result = $evaluator->query($expr);
            $errors = $this->getLibxmlErrors();
            if ($errors) {
                return $this->failGoal(self::goalValidXpath, "XPath expression is invalid ({$expr}).");
            }
            $exprComments = !isset($comments[$i]) || empty($comments[$i]) ? '' : <<<COMMENTS
#\tComments from expression file:

{$comments[$i]}

COMMENTS;
            $output = <<<HEADER
#\tResults for XPath expression: {$expr}
{$exprComments}
#\tFound {$result->length} matching DOM nodes.
HEADER;
            $delimiter = "\n\n#\t%s result:\n\n";
            for ($j = 0; $j < $result->length; ++$j) {
                $output .= sprintf($delimiter, "Result " . ($j + 1)) . $xmlDom->saveXML($result->item($j));
            }
            Filesystem::stringToFile(sprintf($this->params[self::outputXpathMask], ++$exprNumber), $output);
        }
        return $this->reachGoal(self::goalValidXpath);
    }