Difference between revisions of "0.1 Release 2012 WebVTT Test Suite"
(Created page with '==Introduction== Bug https://github.com/rillian/webvtt/issues/7 In order to write our parser, we'll need a way to prove it's correct as per the spec. Doing so involves the cre…') |
|||
Line 18: | Line 18: | ||
The first file should go in the good/ directory, the second in bad/, indicating that we expect the first to validate, and the second to fail. | The first file should go in the good/ directory, the second in bad/, indicating that we expect the first to validate, and the second to fail. | ||
+ | |||
+ | == Method == | ||
+ | |||
+ | * Install the node-webvtt module: | ||
+ | ** Install node.js (which includes npm): http://nodejs.org/ | ||
+ | ** Install the webvtt npm module: | ||
+ | |||
+ | $ npm install -g webvtt | ||
+ | |||
+ | * Add humphd's webvtt github repo as a remote | ||
+ | |||
+ | $ cd your-webvtt-clone-dir | ||
+ | $ git remote add humphd git://github.com/humphd/webvtt.git | ||
+ | $ git fetch humphd | ||
+ | |||
+ | * Switch to the seneca branch | ||
+ | |||
+ | $ git checkout seneca | ||
+ | |||
+ | * Add your tests to test/spec/good and test/spec/bad | ||
+ | |||
+ | * Run your tests to make sure they pass in the JS WebVTT parser. You can do this directly or with make. To do it directly: | ||
+ | |||
+ | $ webvtt test/good/some-file.vtt | ||
+ | |||
+ | Or to do it with make across all your files | ||
+ | |||
+ | $ make check-js | ||
+ | |||
+ | * When you're done, send a pull request to your group member managing your tree, who will assemble all your tests, and then do a pull request to humphd. | ||
+ | |||
+ | == Tests == | ||
+ | |||
+ | What follows is a list of tests we need, followed by the name of the person doing it: | ||
+ | |||
+ | ''...tests go here...'' | ||
== Resources == | == Resources == | ||
* [http://dev.w3.org/html5/webvtt WebVTT Spec] | * [http://dev.w3.org/html5/webvtt WebVTT Spec] | ||
− | * | + | * [https://github.com/humphd/webvtt humphd's webvtt repo, with seneca branch] |
+ | * [https://github.com/humphd/node-webvtt node-webvtt repo] |
Revision as of 20:06, 19 September 2012
Contents
Introduction
Bug https://github.com/rillian/webvtt/issues/7
In order to write our parser, we'll need a way to prove it's correct as per the spec. Doing so involves the creation of a spec conformance test suite, consisting of good and bad WebVTT files. Each test file makes sure that a particular part of the spec is true, and forces the parser to do various things.
When writing test files, remember that each test should test only one thing. Make them simple, small, and discrete. All you're doing is writing a WebVTT file with enough data in it to trigger a rule in the parser.
Example
The spec says (http://dev.w3.org/html5/webvtt/#webvtt-file-body) that the file must begin with an optional BOM character, followed by the string WEBVTT. Assuming you're testing the optional BOM character not being present, you'd expect the following file to be valid:
WEBVTT
And the following file to be invalid:
NOT WEBVTT
The first file should go in the good/ directory, the second in bad/, indicating that we expect the first to validate, and the second to fail.
Method
- Install the node-webvtt module:
- Install node.js (which includes npm): http://nodejs.org/
- Install the webvtt npm module:
$ npm install -g webvtt
- Add humphd's webvtt github repo as a remote
$ cd your-webvtt-clone-dir $ git remote add humphd git://github.com/humphd/webvtt.git $ git fetch humphd
- Switch to the seneca branch
$ git checkout seneca
- Add your tests to test/spec/good and test/spec/bad
- Run your tests to make sure they pass in the JS WebVTT parser. You can do this directly or with make. To do it directly:
$ webvtt test/good/some-file.vtt
Or to do it with make across all your files
$ make check-js
- When you're done, send a pull request to your group member managing your tree, who will assemble all your tests, and then do a pull request to humphd.
Tests
What follows is a list of tests we need, followed by the name of the person doing it:
...tests go here...