<commit_before>'use strict';

var Promise = require('bluebird');
Promise.longStackTraces();

var test = require('tape');
var session = require('express-session');
var KnexStore = require('./index.js')(session);
var knexPg = require('knex')({
	client: 'pg',
	connection: {
		host: '127.0.0.1',
		user: 'postgres',
		password: '',
		database: 'travis_ci_test'
	}
});
var knexMysql = require('knex')({
	client: 'mysql',
	connection: {
		host: '127.0.0.1',
		user: 'travis',
		password: '',
		database: 'travis_ci_test'
	}
});


var stores = [];
stores.push(new KnexStore({db: ':memory:', dir: 'dbs'}));
stores.push(new KnexStore({ knex: knexPg }));
stores.push(new KnexStore({ knex: knexMysql }))

stores.forEach(function (store) {

	test('initial clear', function (t) {
		t.plan(3);
		store.clear(function(err, success) {
			t.error(err);

			store.length(function(err, len) {
				t.error(err, 'no error after clear');
				t.equal(len, 0, 'empty after clear');
			});
		})
	})

	test('set then clear', function (t) {
		t.plan(4);

		store.set('1092348234', {cookie: {maxAge: 1000}, name: 'InsertThenClear'})
		.then(function () {
			store.clear(function(err, cleared) {
				t.error(err);
				t.equal(1, cleared, 'cleared 1');

				store.length(function(err, len) {
					t.error(err, 'no error after clear');
					t.equal(len, 0, 'empty after clear');
				});
			})
		})
	})

	test('double clear', function (t) {
		t.plan(4);

		store.clear()
		.then(function () {
			return store.clear()
		})
		.then(function () {
			store.clear(function(err, cleared) {
				t.error(err);
				t.equal(0, cleared, 'cleared 0');

				store.length(function(err, len) {
					t.notOk(err, 'no error after clear');
					t.equal(len, 0, 'length');
				});
			})
		})
	})

	test('destroy', function (t) {
		t.plan(4);

		store.set('555666777', {cookie: {maxAge: 1000}, name: '<NAME>'}, function(err, rows) {
			t.error(err);
			if (rows.rowCount && rows.rowCount > 1) {
				t.fail('Row count too large');
			}

			store.destroy('555666777', function(err) {
				t.error(err);

				store.length(function(err, len) {
					t.error(err, 'error');
					t.equal(len, 0);
				});
			});
		});
	})

	test('set', function (t) {

		store.set('1111222233334444', {cookie: {maxAge: 20000}, name: '<NAME>'}, function(err, rows) {
			t.error(err);
			if (rows.rowCount) {
				t.equal(rows.rowCount, 1, 'row count');
			}
			t.end();	
		});
	})

	test('retrieve', function (t) {
		t.plan(3);

		store.get('1111222233334444', function(err, session) {
			t.error(err);
			t.ok(session, 'session');
			t.deepEqual(session,{cookie: {maxAge: 20000 }, name: '<NAME>'})
		})
	})

	test('unknown session', function (t) {
		t.plan(2);

		store.get('hope-and-change', function(err, rows) {
			t.error(err);
			t.equal(rows, undefined, 'unknown session is not undefined');
		})
	})

	test('only one session should exist', function (t) {
		t.plan(2);

		store.length(function(err, len) {
			t.error(err);
			t.equal(len, 1);
		});
	})

	test('cleanup', function (t) {
		store.knex.destroy();
		t.end();
		oneDbDone();
	})	
})

var done = 0;
function oneDbDone() {
	done++;
	if (done == stores.length) {
		process.exit();
	}
}

<commit_msg>Use knex.destroy promise in test<commit_after>'use strict';

var Promise = require('bluebird');
Promise.longStackTraces();

var test = require('tape');
var session = require('express-session');
var KnexStore = require('./index.js')(session);
var knexPg = require('knex')({
	client: 'pg',
	connection: {
		host: '127.0.0.1',
		user: 'postgres',
		password: '',
		database: 'travis_ci_test'
	}
});
var knexMysql = require('knex')({
	client: 'mysql',
	connection: {
		host: '127.0.0.1',
		user: 'travis',
		password: '',
		database: 'travis_ci_test'
	}
});


var stores = [];
stores.push(new KnexStore({db: ':memory:', dir: 'dbs'}));
stores.push(new KnexStore({ knex: knexPg }));
stores.push(new KnexStore({ knex: knexMysql }))

stores.forEach(function (store) {

	test('initial clear', function (t) {
		t.plan(3);
		store.clear(function(err, success) {
			t.error(err);

			store.length(function(err, len) {
				t.error(err, 'no error after clear');
				t.equal(len, 0, 'empty after clear');
			});
		})
	})

	test('set then clear', function (t) {
		t.plan(4);

		store.set('1092348234', {cookie: {maxAge: 1000}, name: 'InsertThenClear'})
		.then(function () {
			store.clear(function(err, cleared) {
				t.error(err);
				t.equal(1, cleared, 'cleared 1');

				store.length(function(err, len) {
					t.error(err, 'no error after clear');
					t.equal(len, 0, 'empty after clear');
				});
			})
		})
	})

	test('double clear', function (t) {
		t.plan(4);

		store.clear()
		.then(function () {
			return store.clear()
		})
		.then(function () {
			store.clear(function(err, cleared) {
				t.error(err);
				t.equal(0, cleared, 'cleared 0');

				store.length(function(err, len) {
					t.notOk(err, 'no error after clear');
					t.equal(len, 0, 'length');
				});
			})
		})
	})

	test('destroy', function (t) {
		t.plan(4);

		store.set('555666777', {cookie: {maxAge: 1000}, name: '<NAME>'}, function(err, rows) {
			t.error(err);
			if (rows.rowCount && rows.rowCount > 1) {
				t.fail('Row count too large');
			}

			store.destroy('555666777', function(err) {
				t.error(err);

				store.length(function(err, len) {
					t.error(err, 'error');
					t.equal(len, 0);
				});
			});
		});
	})

	test('set', function (t) {

		store.set('1111222233334444', {cookie: {maxAge: 20000}, name: '<NAME>'}, function(err, rows) {
			t.error(err);
			if (rows.rowCount) {
				t.equal(rows.rowCount, 1, 'row count');
			}
			t.end();	
		});
	})

	test('retrieve', function (t) {
		t.plan(3);

		store.get('1111222233334444', function(err, session) {
			t.error(err);
			t.ok(session, 'session');
			t.deepEqual(session,{cookie: {maxAge: 20000 }, name: '<NAME>'})
		})
	})

	test('unknown session', function (t) {
		t.plan(2);

		store.get('hope-and-change', function(err, rows) {
			t.error(err);
			t.equal(rows, undefined, 'unknown session is not undefined');
		})
	})

	test('only one session should exist', function (t) {
		t.plan(2);

		store.length(function(err, len) {
			t.error(err);
			t.equal(len, 1);
		});
	})

	test('cleanup', function (t) {
		store.knex.destroy().then(t.end);
	})	
})



{'fraction_non_alphanumeric': 0.21032504780114722, 'fraction_numerical': 0.0345761631612492, 'mean_word_length': 3.50933908045977, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4448892', 'n_tokens_mistral': 2903, 'n_tokens_neox': 2420, 'n_words': 484}