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

View File

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

View File

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

View File

@@ -24,7 +24,7 @@ class ServerPermissions {
manageRoles: this.manageRoles,
manageChannels: this.manageChannels,
readMessages: this.readMessages,
sendMessages: this.sendMessage,
sendMessages: this.sendMessages,
sendTTSMessages: this.sendTTSMessages,
manageMessages: this.manageMessages,
embedLinks: this.embedLinks,
@@ -119,7 +119,7 @@ class ServerPermissions {
} else {
// 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
or testing local builds
*/
var Discord = require("../");
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...");
}
mybot.once("ready", function(){
console.log("ready! beginning tests");
success1();
actions.push(() => {
mybot.createServer("test-server", "london").then(next).catch(error);
});
function success1(){ //make server
mybot.createServer("test-server", "london").then(success2).catch(error);
}
function success2(_server){ //make channel
console.log("test 1 successful");
actions.push((_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
console.log("test 2 successful");
actions.push((_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
console.log("test 3 successful");
message = _message;
mybot.deleteMessage(message).then(success5).catch(error);
}
actions.push((message) => {
mybot.deleteMessage(message).then(next).catch(error);
});
function success5(){ //send ping
console.log("test 4 successful");
mybot.sendMessage(channel, "ping").then(function(msg){
message = msg;
}).catch(error);
setTimeout(checkError, 30 * 1000);
}
actions.push(() => {
mybot.createRole(server, {
name: "Custom Role",
color: 0xff0000,
sendMessages: false
}).then(next).catch(error);
});
function success7(){
console.log("test 6 successful");
mybot.deleteChannel(channel).then(success8).catch(error);
}
function success8(){
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");
actions.push((_role) => {
role = _role;
if (role.name === "Custom Role" && !role.sendMessages) {
next();
} else {
error(new Error("bad role; " + role));
}
}
});
function success10(){
console.log("test 9 succesful");
mybot.leaveServer(server).then(success11).catch(error);
}
actions.push(() => {
mybot.deleteRole(role).then(next).catch(error);
});
function success11(){
console.log("test 10 succesful");
mybot.joinServer(process.env["ds_invite"]).then(success12).catch(error);
}
actions.push(() => {
mybot.sendMessage(channel, "ping").catch(error);
});
function success12(_server){
console.log("test 11 successful");
server = mybot.getServer("id", _server.id);
if(server){
success13();
}else{
error("reference error");
actions.push((message) => {
mybot.updateMessage(message, "pong").then(next).catch(error);
});
actions.push((message) => {
mybot.deleteMessage(message).then(next).catch(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(){
console.log("test 12 successful");
mybot.sendFile(server, "./test/image.png").then(function(msg){
mybot.deleteMessage(msg).then(success14).catch(error);
}).catch(error);
}
mybot.once("ready", function () {
console.log("ready! beginning tests");
next();
});
function success14(msg){
console.log("test 13 successful");
mybot.leaveServer(server).then(success15).catch(error);
}
mybot.login(process.env["ds_email"], process.env["ds_password"]).then(init).catch(error);
function success15(){
console.log("test 14 successful");
mybot.logout().then(done).catch(error);
}
function done(){
console.log("All tests completed succesfully.");
function done() {
console.log("Finished! Build successful.");
process.exit(0);
}
function checkError(){
if(!sentMessage){
error("failure receiving messages");
}
}
function error(err){
console.log("error", err);
function error(e) {
console.log("FAILED DURING TEST", current);
console.log(e.stack);
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);
}