New travis build

This commit is contained in:
hydrabolt
2015-10-28 16:09:21 +00:00
parent 1125d4ae97
commit 834825a09d
5 changed files with 173 additions and 154 deletions

View File

@@ -802,15 +802,17 @@ var Client = (function (_EventEmitter) {
if (data.color) data.color = Color.toDec(data.color); if (data.color) data.color = Color.toDec(data.color);
self.guildRoleCreateIgnoreList[res.body.id] = function () { self.guildRoleCreateIgnoreList[res.body.id] = true;
self.updateRole(perm, data).then(function (perm) {
cb(null, perm); server.addRole(res.body);
resolve(perm);
})["catch"](function (err) { self.updateRole(perm, data).then(function (perm) {
cb(err); cb(null, perm);
reject(err); resolve(perm);
}); })["catch"](function (err) {
}; cb(err);
reject(err);
});
} }
}); });
}); });
@@ -825,6 +827,11 @@ var Client = (function (_EventEmitter) {
var server = role.server.id; var server = role.server.id;
var tempRole = role;
for (var key in data) {
tempRole[key] = data[key];
}
if (isNaN(Color.toDec(data.color))) { if (isNaN(Color.toDec(data.color))) {
var err = new Error("Invalid Color"); var err = new Error("Invalid Color");
reject(err); reject(err);
@@ -833,10 +840,10 @@ var Client = (function (_EventEmitter) {
} }
request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({ request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({
color: Color.toDec(data.color) || role.color, color: tempRole.color,
hoist: data.hoist || role.hoist, hoist: tempRole.hoist,
name: data.name || role.name, name: tempRole.name,
permissions: data.packed || role.packed permissions: tempRole.packed
}).end(function (err, res) { }).end(function (err, res) {
if (err) { if (err) {
cb(err); cb(err);
@@ -1302,15 +1309,21 @@ var Client = (function (_EventEmitter) {
}*/ }*/
if (self.serverCreateListener[data.id]) { if (data.owner_id === self.user.id) {
var cbs = self.serverCreateListener[data.id]; var keepCheck = setInterval(function () {
cbs[0](server); //promise then callback if (self.serverCreateListener[data.id]) {
cbs[1](null, server); //legacy callback var cbs = self.serverCreateListener[data.id];
self.serverCreateListener[data.id] = null; cbs[0](server); //promise then callback
cbs[1](null, server); //legacy callback
self.serverCreateListener[data.id] = null;
self.emit("serverCreate", server);
clearInterval(keepCheck);
}
}, 50);
} else {
self.emit("serverCreate", server);
} }
self.emit("serverCreate", server);
break; break;
case "CHANNEL_CREATE": case "CHANNEL_CREATE":
@@ -1469,8 +1482,6 @@ var Client = (function (_EventEmitter) {
var role = data.role; var role = data.role;
if (self.guildRoleCreateIgnoreList[data.role.id]) { if (self.guildRoleCreateIgnoreList[data.role.id]) {
server.addRole(role);
self.guildRoleCreateIgnoreList[data.role.id]();
self.guildRoleCreateIgnoreList[data.role.id] = null; self.guildRoleCreateIgnoreList[data.role.id] = null;
break; break;
} }

View File

@@ -30,7 +30,7 @@ var ServerPermissions = (function () {
manageRoles: this.manageRoles, manageRoles: this.manageRoles,
manageChannels: this.manageChannels, manageChannels: this.manageChannels,
readMessages: this.readMessages, readMessages: this.readMessages,
sendMessages: this.sendMessage, sendMessages: this.sendMessages,
sendTTSMessages: this.sendTTSMessages, sendTTSMessages: this.sendTTSMessages,
manageMessages: this.manageMessages, manageMessages: this.manageMessages,
embedLinks: this.embedLinks, embedLinks: this.embedLinks,
@@ -64,7 +64,7 @@ var ServerPermissions = (function () {
this.packed |= 1 << location; this.packed |= 1 << location;
} else { } else {
// not allowed // not allowed
this.packed &= 1 << location; this.packed &= ~(1 << location);
} }
}; };

View File

@@ -844,18 +844,19 @@ class Client extends EventEmitter {
if(data.color) if(data.color)
data.color = Color.toDec(data.color); data.color = Color.toDec(data.color);
self.guildRoleCreateIgnoreList[res.body.id] = function () { self.guildRoleCreateIgnoreList[res.body.id] = true;
self.updateRole(perm, data)
.then((perm) => { server.addRole(res.body);
cb(null, perm);
resolve(perm); self.updateRole(perm, data)
}) .then((perm) => {
.catch((err) => { cb(null, perm);
cb(err); resolve(perm);
reject(err); })
}); .catch((err) => {
cb(err);
} reject(err);
});
} }
@@ -873,6 +874,11 @@ class Client extends EventEmitter {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var server = role.server.id; var server = role.server.id;
var tempRole = role;
for(var key in data){
tempRole[key] = data[key];
}
if(isNaN(Color.toDec(data.color))){ if(isNaN(Color.toDec(data.color))){
var err = new Error("Invalid Color"); var err = new Error("Invalid Color");
@@ -885,10 +891,10 @@ class Client extends EventEmitter {
.patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`) .patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`)
.set("authorization", self.token) .set("authorization", self.token)
.send({ .send({
color: Color.toDec(data.color) || role.color, color: tempRole.color,
hoist: data.hoist || role.hoist, hoist: tempRole.hoist,
name: data.name || role.name, name: tempRole.name,
permissions: data.packed || role.packed permissions: tempRole.packed
}) })
.end(function (err, res) { .end(function (err, res) {
if (err) { if (err) {
@@ -1331,15 +1337,21 @@ class Client extends EventEmitter {
}*/ }*/
if (self.serverCreateListener[data.id]) { if(data.owner_id === self.user.id){
var cbs = self.serverCreateListener[data.id]; var keepCheck = setInterval(() => {
cbs[0](server); //promise then callback if (self.serverCreateListener[data.id]) {
cbs[1](null, server); //legacy callback var cbs = self.serverCreateListener[data.id];
self.serverCreateListener[data.id] = null; cbs[0](server); //promise then callback
cbs[1](null, server); //legacy callback
self.serverCreateListener[data.id] = null;
self.emit("serverCreate", server);
clearInterval(keepCheck);
}
}, 50);
}else{
self.emit("serverCreate", server);
} }
self.emit("serverCreate", server);
break; break;
case "CHANNEL_CREATE": case "CHANNEL_CREATE":
@@ -1500,8 +1512,6 @@ class Client extends EventEmitter {
var role = data.role; var role = data.role;
if (self.guildRoleCreateIgnoreList[data.role.id]) { if (self.guildRoleCreateIgnoreList[data.role.id]) {
server.addRole(role);
self.guildRoleCreateIgnoreList[data.role.id]();
self.guildRoleCreateIgnoreList[data.role.id] = null; self.guildRoleCreateIgnoreList[data.role.id] = null;
break; break;
} }

View File

@@ -24,7 +24,7 @@ class ServerPermissions {
manageRoles: this.manageRoles, manageRoles: this.manageRoles,
manageChannels: this.manageChannels, manageChannels: this.manageChannels,
readMessages: this.readMessages, readMessages: this.readMessages,
sendMessages: this.sendMessage, sendMessages: this.sendMessages,
sendTTSMessages: this.sendTTSMessages, sendTTSMessages: this.sendTTSMessages,
manageMessages: this.manageMessages, manageMessages: this.manageMessages,
embedLinks: this.embedLinks, embedLinks: this.embedLinks,
@@ -119,7 +119,7 @@ class ServerPermissions {
} else { } else {
// not allowed // not allowed
this.packed &= (1 << location); this.packed &= ~(1 << location);
} }
} }

View File

@@ -1,134 +1,132 @@
/* global process */
/* /*
this file should be used for travis builds only this file should be used for travis builds only
or testing local builds
*/ */
var Discord = require("../"); var Discord = require("../");
var mybot = new Discord.Client(); var mybot = new Discord.Client();
var server, channel, message, sentMessage = false; var server, channel, message, role, sentMessage = false, actions = [], current = -1;
function init(){ function next() {
current++;
if (current !== 0) {
console.log("Success on test", current, actions[current]);
}
if (current === actions.length)
done();
else
actions[current].apply(this, arguments);
}
function init() {
console.log("preparing..."); console.log("preparing...");
} }
mybot.once("ready", function(){ actions.push(() => {
console.log("ready! beginning tests"); mybot.createServer("test-server", "london").then(next).catch(error);
success1();
}); });
function success1(){ //make server actions.push((_server) => {
mybot.createServer("test-server", "london").then(success2).catch(error);
}
function success2(_server){ //make channel
console.log("test 1 successful");
server = _server; server = _server;
mybot.createChannel(server, "test-channel", "text").then(success3).catch(error); mybot.createChannel(server, "test-channel", "text").then(next).catch(error);
} });
function success3(_channel){ //send message actions.push((_channel) => {
console.log("test 2 successful");
channel = _channel; channel = _channel;
mybot.sendMessage(channel, [mybot.user.avatarURL, "an", "array", "of", "messages"]).then(success4).catch(error); mybot.sendMessage(channel, [mybot.user.avatarURL, "an", "array", "of", "messages"]).then(next).catch(error);
} });
function success4(_message){ //delete message actions.push((message) => {
console.log("test 3 successful"); mybot.deleteMessage(message).then(next).catch(error);
message = _message; });
mybot.deleteMessage(message).then(success5).catch(error);
}
function success5(){ //send ping actions.push(() => {
console.log("test 4 successful"); mybot.createRole(server, {
mybot.sendMessage(channel, "ping").then(function(msg){ name: "Custom Role",
message = msg; color: 0xff0000,
}).catch(error); sendMessages: false
setTimeout(checkError, 30 * 1000); }).then(next).catch(error);
} });
function success7(){ actions.push((_role) => {
console.log("test 6 successful"); role = _role;
mybot.deleteChannel(channel).then(success8).catch(error); if (role.name === "Custom Role" && !role.sendMessages) {
} next();
} else {
function success8(){ error(new Error("bad role; " + role));
console.log("test 7 successful");
mybot.createInvite(server).then(success9).catch(error);
}
function success9(invite){
console.log("test 8 successful");
if(invite.code){
success10();
}else{
error("reference error");
} }
} });
function success10(){ actions.push(() => {
console.log("test 9 succesful"); mybot.deleteRole(role).then(next).catch(error);
mybot.leaveServer(server).then(success11).catch(error); });
}
function success11(){ actions.push(() => {
console.log("test 10 succesful"); mybot.sendMessage(channel, "ping").catch(error);
mybot.joinServer(process.env["ds_invite"]).then(success12).catch(error); });
}
function success12(_server){ actions.push((message) => {
console.log("test 11 successful"); mybot.updateMessage(message, "pong").then(next).catch(error);
server = mybot.getServer("id", _server.id); });
if(server){
success13(); actions.push((message) => {
}else{ mybot.deleteMessage(message).then(next).catch(error);
error("reference error"); })
actions.push(() => {
mybot.sendFile(server, "./test/image.png").then(next).catch(error);
})
actions.push(() => {
mybot.leaveServer(server).then(next).catch(error);
});
// phase 2
actions.push(() => {
mybot.joinServer(process.env["ds_invite"]).then(next).catch(error);
});
actions.push((_server) => {
server = _server;
mybot.sendMessage(server.getMember("username", "hydrabolt"), "Travis Build test").then(next).catch(error);
});
actions.push((_message) => {
mybot.deleteMessage(_message).then(next).catch(error);
});
actions.push(() => {
mybot.logout().then(next).catch(error);
});
mybot.on("message", function (message) {
if(!message.isPrivate){
if (message.channel.equals(channel)) {
if (message.content === "ping") {
sentMessage = true;
next(message);
}
}
} }
} })
function success13(){ mybot.once("ready", function () {
console.log("test 12 successful"); console.log("ready! beginning tests");
mybot.sendFile(server, "./test/image.png").then(function(msg){ next();
mybot.deleteMessage(msg).then(success14).catch(error); });
}).catch(error);
}
function success14(msg){ mybot.login(process.env["ds_email"], process.env["ds_password"]).then(init).catch(error);
console.log("test 13 successful");
mybot.leaveServer(server).then(success15).catch(error);
}
function success15(){ function done() {
console.log("test 14 successful"); console.log("Finished! Build successful.");
mybot.logout().then(done).catch(error);
}
function done(){
console.log("All tests completed succesfully.");
process.exit(0); process.exit(0);
} }
function checkError(){ function error(e) {
if(!sentMessage){ console.log("FAILED DURING TEST", current);
error("failure receiving messages"); console.log(e.stack);
}
}
function error(err){
console.log("error", err);
process.exit(1); process.exit(1);
} }
mybot.on("message", function(message){
if(message.channel.equals(channel)){
if(message.content === "ping"){
console.log("test 5 successful");
sentMessage = true;
mybot.updateMessage(message, "pong").then(success7).catch(error);
}
}
});
mybot.login(process.env["ds_email"], process.env["ds_password"]).then(init).catch(error);