refactor: simplify and make tests work in JS and Dart

* remove `wraps` syntax enhancements for imports
  and support new `import * as module from ...` syntax

  - default imports are the wrong construct for importing
    everything from a module

* moved tests from transpiler to jasmine and karma

  - transpiler tests are included when running karma in main project folder
  - transpiler is reloaded after every test run in karma,
    so no need to restart karma when the transpiler has been changed.
  - removed own gulp build for transpiler and `postinstall.sh`
    as they are no more needed.
  - transpiler tests are now executed in Dart AND JavaScript (used to be executed
    only in Dart), which allowed to catch some bugs (see the bug with the
    import specification above).

* made tests work in dart as well by using the following hack:

  - dependencies are loaded from the `build` folder, which makes
    running `gulp build` necessary before running karma for dart
  - for this to work,
    the dependencies are included in main `pubspec.yaml` of project
  - reason for the hack: `karma-dart` loads all `packages` urls
    directly from disc (should rather use the karma file list)

* added explicit annotations `FIELD`, `ABSTRACT`, ... to `facade/lang.*`

  - needed for now that we can run tests and don't get errors for undefined
    annotations.

* added `README.md` with details about the build and tests
This commit is contained in:
Tobias Bosch
2014-09-28 13:55:01 -07:00
parent 817c005845
commit c79f0c3472
47 changed files with 338 additions and 508 deletions

49
README.md Normal file
View File

@ -0,0 +1,49 @@
## Build
### Prerequisites:
1. `npm install`
2. `pub get`
3. `install -g gulp`
4. `install -g karma`
### Folder structure
* `modules/*`: modules that will be loaded in the browser
* `tools/*`: tools that are needed to build Angular
### File endings
* `*.js`: javascript files that get transpiled to Dart and EcmaScript 5
* `*.es6`: javascript files that get transpiled only to EcmaScript 5
* `*.es5`: javascript files that don't get transpiled
* `*.dart`: dart files that don't get transpiled
### Build:
1. `gulp build` -> result is in `build` folder
* will also to `pubg get` for the subfolders in `modules`
and run `dartanalyzer` for every file that matches
`<module>/src/<module>.dart`, e.g. `di/src/di.dart`
2. `gulp clean` -> cleans the `build` folder
### Tests:
1. `karma start karma-js.conf.js`: JS tests
2. `karma start karma-dart.conf.js`: JS tests
Notes for all tests:
The karma preprocessor is setup in a way so that after every test run
the transpiler is reloaded. With that it is possible to make changes
to the preprocessor and run the tests without exiting karma
(just touch a test file that you would like to run).
Restriction for Dart tests (for now):
* Due to a bug `karma-dart` plugin,
this will use the files in the `build` folder for resolving
`package:` dependencies (created e.g. for `import ... from 'di:di'`).
So you need to execute `gulp build` before this.