nodejs: сравнить два файла в формате dos и unix - PullRequest
0 голосов
/ 31 октября 2019

Я сравниваю два содержимого файла, если они имеют одинаковое содержимое, один файл в формате dos, а другой в формате unix, поэтому я запускаю команду dos2unix, чтобы получить оба в одном формате. В коде происходит что-то асинхронное, что иногда приводит к сбою теста (когда я удаляю содержимое для повторного запуска файла).

Примечание: Я выполняю свой код в машине Windows

Что я пробовал

require('fs').writeFileSync('test.txt', somedata.replace(/\n/g, '\r\n'), {encoding: 'utf8'});

Это не сработало для меня. Я использую пакет сравнения файлов npm для сравнения файлов

test.js

const expect = require('chai').expect;
const { spawn } = require('child_process')
let path = require('path');
let fs = require('fs');
var fc = require('filecompare');
describe('something', function() {

 beforeEach(function(done) {
  let options = ['-h'];
  const cmd = spawn('ipconfig',[all], {shell: true, stdio: 'inherit'});

  let filepath2 = path.resolve(__dirname,'../../../../LicensingOps/ansysfnonetclient/tests/help.log');
  let filepath1 = path.resolve(__dirname,'../../../../../../../../../testfile/help.log');
  cmd.stdout.on('data',function(chunk) {
   fs.writeFile(filepath1, chunk.toString(), function(err) {
        if(err) {
                  return console.log(err);
        }

   let filepath1 = path.resolve(__dirname,'../../../../../../../../../testfile/help.log');
   const cmd1 = spawn('dos2unix',[filepath1], {shell: true, stdio: 'inherit'});

  })

 })
    done();
}) 

afterEach(function(done) {
   let filepath2 = path.resolve(__dirname,'../../../../LicensingOps/ansysfnonetclient/tests/help.log');
   let filepath1 = path.resolve(__dirname,'../../../../../../../../../testfile/help.log');

   var cb = function(isEqual) {
      console.log("equal? :" + isEqual);
      expect(isEqual).to.be.eql(true);
      done();
   }
    fc(filepath2,filepath1,cb);

})

  it('something',function(done) {
    this.timeout(3000000);
    //do nothing
    done();
  })

Как вы видите, я запускаю команду ipconfig -all, я пишу эту команду o /p в файл (это в формате dos), и я уже храню o / p в файле, но этот файл в стиле Unix. Поэтому, когда я сопоставляю эти два файла с помощью пакета сравнения файлов npm, я получаю результат, что эти два файла не равны, хотя их содержимое одинаково.

...