joseramoncajide
8/29/2017 - 2:10 PM

results.js

// --------------------------------------------------------------------------------------------------
// -------------                        Generamos XML de salida                         -------------
// --------------------------------------------------------------------------------------------------

var fs = require('fs');
var forEachInDir = require('foreach-in-dir');
var path = require('path');

var dirAllureResults = './fop/allure-results/';
var fileAuditResults = './fop/audit-results/testResult.xml';

var search = "<?xml version='1.0'?>";

function remove() {

  var body = fs.readFileSync(fileAuditResults).toString();
  var idx = body.indexOf(search);

  if (idx >= 0 ) {
    var output = body.substr(0, idx) + body.substr(idx + search.length);
    fs.writeFileSync(fileAuditResults, output);
  }

}

// Recogemos todos los XML que devuelve allure y lo unimos en uno solo
describe( 'Creting output XML', function() {
    it('XML done', function () {
        var numXMLfunction = function () {
            var i=0;

            fs.readdirSync(dirAllureResults).forEach(file => {
                // console.log(">> LEO archivo: " + file);
                if (file.indexOf(".xml") !== -1) {
                    i++;
                }
            })

            return i;
        }
        var j = 0;
        var numXML = numXMLfunction();

        fs.writeFile(fileAuditResults, '<myroot> ', (err) => {
          if (err) throw err;
        });

        forEachInDir(dirAllureResults, function (filename, done) {
            if (filename.indexOf(".xml") !== -1){
                const fd = fs.openSync(dirAllureResults+filename, 'r+');
                const stats = fs.statSync(dirAllureResults+filename);
                const fileSizeInBytes = stats.size - 0;
                const buf = new Buffer(fileSizeInBytes);

                fs.readSync(fd, buf, 0, fileSizeInBytes, 0);

                fs.appendFileSync(fileAuditResults, buf);

                if (j++ === numXML-1) {
                    fs.appendFileSync(fileAuditResults, ' </myroot>');
                }
            }

            //eliminamos los <?xml version='1.0'?>
            remove();
        }, function (err, results) {
            if (err) throw err;
        });



    });
})