Kategorien
Javascript Testen

Jasmine Tests vor jedem Git Commit ausführen

In meinem aktuellen Backbone.js Projekt verwende ich Jasmine für die Tests. Ich habe dazu das Jasmine Ruby Gem installiert.

Die Tests liefen erst als ich

require 'rubygems'

in die Rakefile eingefügt habe.

Bisher habe ich die Tests nur im Browser ausgeführt mit:

rake jasmine

Das ganze ist auch schön und gut, aber manchmal vergesse ich die Tests auszuführen und committe etwas, obwohl die Tests fehlschlagen.

Um die Tests laufen zu lassen, wenn ich commit-en will, habe ich einen pre-commit Hook geschrieben:

  • Erstelle die Datei .git/hooks/pre-commit
  • Folgendes in pre-commit kopiert:
rake jasmine:ci
exit $?
  • Den Hook ausführbar machen:
chmod +x .git/hooks/pre-commit
  • Tada! Bei jedem Aufruf von git commit -am ‚was geändert‘ werden zuerst die Tests ausgeführt, wenn sie fehlschlagen, wird auch nichts committet.

So sah es als ich git commit gestartet habe.

So sieht es aus, wenn die Tests fehlschlagen und der commit nicht durchgeführt wurde.

Das ganze dauert zwar ein bisschen, aber ich fühle mich sicherer, dass ich beim commit nichts zerstöre.

Kategorien
Javascript

JavaScript: Problem mit this

tl;dr http://howtonode.org/what-is-this hat mir this in JavaScript klar gemacht.

Vor kurzem habe ich angefangen, einen Memory-Klon in JavaScript zu entwickeln.

Zuerst verwendete ich nur prozedurales JS mit Underscore und jQuery. Nach über 500 Zeilen Spagetti-Code, habe ich nach Frameworks gesucht, um den Code zu organisieren und bin bei Backbone.js auf was Einfaches und Solides gestoßen.

Doch Code wie

_.delay(game.nextLevel, 500)

funktionierte nicht mehr. Das Problem ist JavaScripts this, das in verschiedenen Kontexten verschiedene Objekte referenziert. Das this in game.nextLevel referenziert nicht mehr game, sondern window.

Die Lösung zum Problem ist:

_.delay(_.bind(game.nextLevel, game), 500)

Somit wird game als Kontext der Funktion game.nextLevel gesetzt. Somit referenziert das this in der Funktion wieder das game Objekt.

Tim Caswells Artikel auf howtonode.org hat mir geholfen das Ganze besser zu verstehen.

Kategorien
Javascript Open Source PHP

Mein erster Open Source Beitrag

Version 1.0.4 von WPide wurde veröffentlicht und ich werde als Contributor gelistet 🙂

Kategorien
Javascript Open Source PHP

UPDATE: Ajax.org Code Editor(ACE) & WordPress

Nachdem ich den Ajax.org Code Editor entdeckt habe, dachte ich mir, dass es ganz nett wäre, das Ganze in WordPress einzubinden. Die Plugin-Suche führte mich zu WPide. Das Plugin ersetzt den Theme & Plugin Editor durch ACE. Leider unterstützt es nur PHP-Highlighting. Deshalb habe ich beschlossen, es um JS- & CSS Highlighting zu erweitern. Während ich dabei war habe ich die große PHP-Klasse auseinander genommen und das JavaScript in separate Dateien ausgelagert.

Ich habe im Plugin Forum angefragt, wie ich den Code zum eigentlichen Plugin beitragen kann und warte noch auf die Antwort. Wer mal einen Blick auf die Erweiterungen nehmen möchte, kann Sie hier finden.

Update

Mein Code ist in das Plugin eingeflossen. Jetzt muss ich nur noch warten, bis die Änderungen in das WP Plugin-Repository geschoben werden.