<commit_before>var Parser = require('../lib/parser'),
    parseListEntry = Parser.parseListEntry;

var path = require('path'),
    assert = require('assert'),
    inspect = require('util').inspect;

var group = path.basename(__filename, '.js') + '/';

[
  { source: 'drwxr-xr-x  10 root   root    4096 Dec 21  2012 usr',
    expected: {
      type: 'd',
      name: 'usr',
      target: undefined,
      sticky: false,
      rights: { user: 'rwx', group: 'rx', other: 'rx' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-12-21T00:00')
    },
    what: 'Normal directory'
  },
  { source: 'drwxrwxrwt   7 root   root    4096 May 19 22:17 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'rwx' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and executable for others'
  },
  { source: 'drwxrwx--t   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'x' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and executable for others #2'
  },
  { source: 'drwxrwxrwT   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'rw' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and not executable for others'
  },
  { source: 'drwxrwx--T   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: '' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and not executable for others #2'
  },
].forEach(function(v) {
  var result = parseListEntry(v.source),
      msg = '[' + group + v.what + ']: parsed output mismatch.\n'
            + 'Saw: ' + inspect(result) + '\n'
            + 'Expected: ' + inspect(v.expected);
  assert.deepEqual(result, v.expected, msg);
});
<commit_msg>test: add more dir entry listing tests<commit_after>var Parser = require('../lib/parser'),
    parseListEntry = Parser.parseListEntry;

var path = require('path'),
    assert = require('assert'),
    inspect = require('util').inspect;

var group = path.basename(__filename, '.js') + '/';

[
  { source: 'drwxr-xr-x  10 root   root    4096 Dec 21  2012 usr',
    expected: {
      type: 'd',
      name: 'usr',
      target: undefined,
      sticky: false,
      rights: { user: 'rwx', group: 'rx', other: 'rx' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-12-21T00:00')
    },
    what: 'Normal directory'
  },
  { source: 'drwxrwxrwx   1 owner   group          0 Aug 31 2012 e-books',
    expected: {
      type: 'd',
      name: 'e-books',
      target: undefined,
      sticky: false,
      rights: { user: 'rwx', group: 'rwx', other: 'rwx' },
      owner: 'owner',
      group: 'group',
      size: 0,
      date: new Date('2012-08-31T00:00')
    },
    what: 'Normal directory #2'
  },
  { source: '-rw-rw-rw-   1 owner   group    7045120 Sep 02  2012 music.mp3',
    expected: {
      type: '-',
      name: 'music.mp3',
      target: undefined,
      sticky: false,
      rights: { user: 'rw', group: 'rw', other: 'rw' },
      owner: 'owner',
      group: 'group',
      size: 7045120,
      date: new Date('2012-09-02T00:00')
    },
    what: 'Normal file'
  },
  { source: 'drwxrwxrwt   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'rwx' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and executable for others'
  },
  { source: 'drwxrwx--t   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'x' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and executable for others #2'
  },
  { source: 'drwxrwxrwT   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: 'rw' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and not executable for others'
  },
  { source: 'drwxrwx--T   7 root   root    4096 May 19 2012 tmp',
    expected: {
      type: 'd',
      name: 'tmp',
      target: undefined,
      sticky: true,
      rights: { user: 'rwx', group: 'rwx', other: '' },
      owner: 'root',
      group: 'root',
      size: 4096,
      date: new Date('2012-05-19T00:00')
    },
    what: 'Directory with sticky bit and not executable for others #2'
  },
].forEach(function(v) {
  var result = parseListEntry(v.source),
      msg = '[' + group + v.what + ']: parsed output mismatch.\n'
            + 'Saw: ' + inspect(result) + '\n'
            + 'Expected: ' + inspect(v.expected);
  assert.deepEqual(result, v.expected, msg);
});

{'fraction_non_alphanumeric': 0.162534435261708, 'fraction_numerical': 0.057334710743801656, 'mean_word_length': 2.191758241758242, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2315697', 'n_tokens_mistral': 2248, 'n_tokens_neox': 2016, 'n_words': 584}