2016-05-26 9 views
0

Nach meiner vorherigen Frage, here, versuche ich 'spec' Dateien von Atom, die ich in, aber jetzt, egal wie viele describe und it registriert registriert registriert zu bekommen ' s ich tue, es tut nichts, wenn ich es teste.Atom 'spec' Dateien werden nicht getestet

Ich verwende den Befehl, apm test, und alles, was ich bekommen ist:

[655:0527/083825:WARNING:resource_bundle.cc(305)] locale_file_path.empty() for locale English 
[655:0527/083825:ERROR:file_io.cc(30)] read: expected 40, observed 0 
[659:0527/083825:WARNING:resource_bundle.cc(305)] locale_file_path.empty() for locale English 
[655:0527/083828:INFO:CONSOLE(52)] "Window load time: 2420ms", source: file:///Applications/Atom.app/Contents/Resources/app.asar/static/index.js (52) 


Finished in 0.023 seconds 
0 tests, 0 assertions, 0 failures, 0 skipped 

Tests passed 

durch die Spec-Datei zu urteilen (die ist definitiv registriert wird, wie es beschwert sich, wenn sie nicht existiert), I sollte 3 Tests laufen lassen.

Meine Spec-Datei ist wie folgt ... (Syntax Highlighter Paket)

describe "Jazz grammar", -> 
    grammar = null 

    beforeEach -> 
    waitsForPromise -> 
     atom.packages.activatePackage("language-jazz") 

    runs -> 
     grammar = atom.grammars.grammarForScopeName("source.jazz") 

    it "parses the grammar", -> 
     expect(grammar).toBeDefined() 
     expect(grammar.scopeName).toBe "source.jazz" 

    it "tokenises keywords", -> 
     tokens = grammar.tokenizeLines('func') 

     expect(tokens[0][0].value).toBe 'func' 
     expect(tokens[0][0].scopes).toEqual ['source.jazz', 'storage.type.jazz'] 

    it "tokenizes comments inside function parameters", -> 
     tokens = grammar.tokenizeLines('module test(arg1, ;; arg2)') 

     expect(tokens[0][0].value).toBe 'module' 
     expect(tokens[0][0].scopes).toEqual ['source.jazz', 'storage.type.jazz'] 
     expect(tokens[0][1].scopes).toEqual ['source.jazz', 'comment.line.jazz'] 

Meine Dateistruktur ist wie folgt:

  • sprach Jazz
    • Grammatiken
      • jazz.cson
    • Schnipsel
      • language-jazz.cson
    • spec
      • jazz-spec.coffee
    • package.json
    • Andere GitHub und Travis CI st uff.

Antwort

2

Das Problem ist die Vertiefung und die Struktur Ihres Tests in der Spec, bedenken Sie, dass in Coffeescript Leerzeichen signifikant ist und die run Blöcke werden verwendet, um Blöcke des Codes kapseln nicht it Aussagen zu gruppieren.

So sollte die Spezifikation sein:

describe "Jazz grammar", -> 
    grammar = null 

    beforeEach -> 
    waitsForPromise -> 
     atom.packages.activatePackage("language-jazz") 

    grammar = atom.grammars.grammarForScopeName("source.jazz") 

    it "parses the grammar", -> 
    expect(grammar).toBeDefined() 
    expect(grammar.scopeName).toBe "source.jazz" 

    it "tokenises keywords", -> 
    tokens = grammar.tokenizeLines('func') 

    expect(tokens[0][0].value).toBe 'func' 
    expect(tokens[0][0].scopes).toEqual ['source.jazz', 'storage.type.jazz'] 

    it "tokenizes comments inside function parameters", -> 
    tokens = grammar.tokenizeLines('module test(arg1, ;; arg2)') 

    expect(tokens[0][0].value).toBe 'module' 
    expect(tokens[0][0].scopes).toEqual ['source.jazz', 'storage.type.jazz'] 
    expect(tokens[0][1].scopes).toEqual ['source.jazz', 'comment.line.jazz'] 

ich diese lokal getestet haben und es zeigt sich als drei Prüfungen nicht, wie ich Ihre Grammatik umgesetzt haben.

+0

Entschuldigung, ich habe gerade eine Vorlage aus 'language-python' gemacht. Ich verwende einen Einzug mit vier Leerzeichen, verwende jedoch zwei Leerzeichen. Wie auch immer, ich krümme mich darüber, wie einfach die Antwort war, danke dir sehr, Richard. Jetzt muss ich nur noch die Fehler diagnostizieren ... – finnrayment

+0

Ich habe die 'runs ->' wieder hinzugefügt, und es scheint die "grammer.tokenizeLines' nicht gefunden Fehler behoben zu haben. Check out: https://github.com/ atom/language-python/blob/master/spec/python-spec.coffee für die 'runs'-Sache. – finnrayment