Commit Graph

6089 Commits

Author SHA1 Message Date
Ben Newman
cfc167a67b Make test more reliable by calling insert in Meteor.startup. 2016-11-02 17:25:26 -04:00
Ben Newman
e345fc2d27 Separate failing part of "run --once" test into own test. 2016-11-02 17:07:50 -04:00
Ben Newman
476d6bf7b3 Attempt to fix "run --once" test by giving Mongo a chance to exit.
This test has been failing intermittently on Circle CI.
2016-11-02 16:25:37 -04:00
Ben Newman
31e7b8bb48 Clean up temporary package.json files. 2016-11-02 15:45:04 -04:00
Ben Newman
643a9f12da Move default npm deps install function into own module.
This extraction was necessary because importing tools/cli/commands.js is
not entirely side-effect-free, and was interfering with older tests.
2016-11-02 15:38:39 -04:00
Ben Newman
4bf69409fa Call installDefaultNpmDeps in old bundler-assets test. 2016-11-02 15:16:30 -04:00
Ben Newman
fd57b86125 Run npm install in test apps even if package.json exists. 2016-11-02 14:18:43 -04:00
Ben Newman
5f0ffc5217 Remove coffeescript version constraint in modules test app. 2016-11-02 14:18:42 -04:00
Ben Newman
a90011b885 Improve meteor shell self-test. 2016-11-02 14:18:42 -04:00
Ben Newman
5dc2eaa0f7 Add babel-runtime to test app package.json files. 2016-11-02 13:32:01 -04:00
Ben Newman
8bc4fe20c6 Cache .meteor-portable values temporarily in memory.
This is another way to fix the bug I previously fixed by passing
options.allowSyntaxError to optimisticReadJsonOrNull.

To reproduce the bug (and/or verify that it is fixed), run the following
commands in a terminal:

  rm -rf meteor/packages/npm-mongo/.npm
  meteor/meteor --get-ready

Before these two commits, optimisticReadJsonOrNull would throw a
SyntaxError when reading one of the .meteor-portable files because an
asynchronous write to the same file had not yet finished.
2016-11-02 13:15:57 -04:00
Ben Newman
909419b36e Optionally tolerate SyntaxError in optimisticReadJsonOrNull. 2016-11-02 13:04:09 -04:00
Ben Newman
6b6a71b073 Fix and improve app creation tests. 2016-11-02 12:47:01 -04:00
Ben Newman
270b5cc8ef Run meteor npm install as part of meteor create tests. 2016-11-02 12:05:33 -04:00
Ben Newman
6dcd8b78f2 Run installDefaultNpmDeps whenever creating self-test apps.
Some tests disable the --prepare-app step, but still need babel-runtime
to be installed.
2016-11-02 12:05:33 -04:00
Ben Newman
10f997ae0e Make --prepare-app install default npm deps to fix self-tests.
Tests were broken by the new dependency on the babel-runtime npm
package, but fortunately all those tests run `meteor --prepare-app`
whenever an app is created by a self-test, so this change should fix
most of the breakages.
2016-11-02 12:05:33 -04:00
Ben Newman
f0355276a5 Remove babel-runtime-specific logic from compiler-plugin.js. 2016-11-02 12:05:33 -04:00
Ben Newman
b3746d8879 Install basic npm dependencies when running test-packages.
At this point, the only dependencies installed in this way are
babel-runtime and meteor-node-stubs, but that set of packages will
expand in the future as we move more dependencies to npm.
2016-11-02 12:05:33 -04:00
Ben Newman
24489295f2 Add babel-runtime to the default new-app package.json file.
In light of issues like #7956, I would very much like for app developers
to be responsible for providing node_modules/babel-runtime, and for the
Meteor babel-runtime package to stop attempting to implement a subset of
the helpers.
2016-11-02 12:05:33 -04:00
Ben Newman
d8c0739a13 Make some matches in compiler-plugins.js test order-insensitive.
Also increased various timeouts to make tests more reliable.
2016-11-01 19:38:08 -04:00
Ben Newman
51819a6cb3 Implement Run#matchBeforeExit(pattern) for order-insensitive matching. 2016-11-01 18:23:35 -04:00
Ben Newman
dd012bf6e5 Tolerate " => awaited here:" in parseStackFrames.
da826064bc
2016-11-01 17:25:42 -04:00
Ben Newman
ca4baed90a Disable yielding for files.* operations unless explicitly un-disabled.
Set METEOR_DISABLE_FS_FIBERS=false to un-disable files.* fibers if you
suspect this commit has introduced a problematic difference in behavior.

cc @veered
2016-10-31 21:33:39 -04:00
Ben Newman
8fe91e22e7 Set METEOR_ALLOW_SUPERUSER if necessary when springboarding.
Part of #7959.
2016-10-31 13:57:27 -04:00
Jesse Rosenberger
74afdd5daf Don't pass --allow-superuser flags to a springboarded version of Meteor
By removing the `--allow-superuser` and `--unsafe-perm` arguments before springboarding, it prevents older versions of Meteor from objecting to its use.  Catching it at the highest level should be sufficient to discourage root usage as intended in meteor/meteor#7821

Intended to fix...  meteor/meteor#7959
2016-10-31 13:26:04 -04:00
Ben Newman
f5c61de2fa Fix watching of @scoped, linked npm packages.
https://github.com/meteor/meteor/issues/7978#issuecomment-257056243

Part of #7978.
2016-10-31 12:38:59 -04:00
Ben Newman
bf5f635ac7 Remove optimisticIsSymbolicLink-specific logic from shouldWatch. 2016-10-28 18:16:09 -04:00
Ben Newman
45bb2898fa Watch all paths in linked npm packages.
Fixes #7978.
2016-10-28 17:55:58 -04:00
Jesse Rosenberger
3ee8c252bb Fully implement --no-release-check for meteor test
I accidentally a line when I committed/submitted meteor/meteor#7799, as reported in this comment:

https://github.com/meteor/meteor/issues/7026#issuecomment-256728729

The `METEOR_NO_RELEASE_CHECK` environment variable did/does work properly, but both were meant to work.
2016-10-28 16:11:30 -04:00
Ben Newman
50528819cf Change terminology from METEOR_UNSAFE_PERM to METEOR_ALLOW_SUPERUSER.
The --unsafe-perm option is still supported but no longer advertised.
2016-10-28 16:11:29 -04:00
Ben Newman
e4acc36f63 Respect METEOR_UNSAFE_PERM in addition to --unsafe-perm.
This is important for `meteor npm`, since we don't parse or pass through
Meteor-specific command-line arguments when running `meteor npm`.

When METEOR_UNSAFE_PERM is set, its value is now propagated to any npm
commands via the NPM_CONFIG_UNSAFE_PERM variable.

Helps with #7959.
Follow-up to #7821.
2016-10-28 16:11:29 -04:00
Ben Newman
1b3edb2300 Write files with appropriate mode in Builder#copyDirectory.
Fixes #7974.
2016-10-28 16:11:29 -04:00
Lucas Hansen
2d9a67e609 Replace forkJoin with enterJob to avoid fiber issues 2016-10-28 16:11:29 -04:00
Ben Newman
5bc9bb4982 Update modules test app to Meteor 1.4.2. 2016-10-28 16:11:29 -04:00
Ben Newman
8d5bfd8ae9 Trivial: fix comment indentation. 2016-10-28 14:49:46 -04:00
Tom Coleman
04f401c711 JSdoc refactoring to make API boxes work again. 2016-10-27 14:55:56 -07:00
Ben Newman
45626b699b Support METEOR_DISABLE_FS_FIBERS to help @veered debug fiber storms. 2016-10-25 10:07:42 -07:00
Ben Newman
cadf113e6c Only strip devDependencies when buildMode !== "test".
Follow-up to #7953.
2016-10-25 08:46:33 -07:00
Ben Newman
03e798abc9 Only strip devDependencies when buildMode === "production".
Fixes #7953.
2016-10-24 22:10:02 -07:00
Ben Newman
7bcc50c842 Add profiling for meteorInstall-based require calls.
The options.wrapRequire API is new in install@0.8.2.
2016-10-24 18:48:16 -07:00
Ben Newman
33964e9661 Add profiling for Npm.require calls during server startup. 2016-10-24 18:18:03 -07:00
Ben Newman
0993eb664a Preserve own properties from Profile-wrapped functions. 2016-10-24 18:18:03 -07:00
Ben Newman
739890d955 Bump compiler.BUILT_BY and LINKER_CACHE_SALT. 2016-10-23 18:17:26 -04:00
Ben Newman
bdee913b1b Support npm packages with native .node "main" modules.
Note that the value of the "main" property must include the ".node"
extension explicitly, because I have yet to encounter an npm package with
a native "main" module that omits the ".node" extension, and I am loathe
to start calling files.stat(id + ".node") uselessly for every single
missing module.

Fixes #7947.
2016-10-23 17:43:06 -04:00
Ben Newman
8e9896cfcf Include server startup timings in METEOR_PROFILE output.
Meteor 1.4.2 has been mostly focused on improving rebuild times, but what
ultimately matters is the time from changing a file to being able to make
requests against the restarted server, and any code that runs before
server startup should be considered part of that critical path.

If you have a lot of packages, and they do non-trivial work on startup,
this commit should give you much better insight into where time is spent.

Credit to @stubailo for pushing me to provide Meteor developers with
better profiling tools, and thanks to @veered for this specific idea.

Note: because tools/tool-env/profile.js is now loaded as-is by boot.js,
certain ECMAScript features are off-limits, e.g. ...rest params.
2016-10-23 16:36:23 -04:00
Ben Newman
5ae7a0954d Mark JS hot-code-push test "slow" so CircleCI will skip it.
This test has been the primary source of test suite unreliability in
recent weeks. By marking it "slow" I'm effectively disabling it on
CircleCI, which I think is acceptable because (1) it is, in fact, quite
slow; (2) it passes locally on Linux; and (3) it depends on the timing of
file change notifications, which is a recipe for test flakiness due to the
general non-determinism of file watching, but not necessarily a sign of a
broken developer experience.

Like other "slow" tests, I will keep running this test locally via

  meteor self-test --slow 'javascript hot code push'

as part of the manual QA testing that we do.
2016-10-22 13:56:06 -04:00
Ben Newman
0492b21333 Attempt to fix hot-code-push test by adding additional timeout. 2016-10-22 11:59:45 -04:00
Ben Newman
0d3c74d11c Only call watchersByIno.set(ino, entry) if ino > 0. 2016-10-21 21:39:39 -04:00
Ben Newman
35da19ab4e Avoid "The handle(...) returned by watching..." errors on Linux.
It's a shame that Pathwatcher issues this warning using console.error,
without taking any verbosity options into account:
https://github.com/atom/node-pathwatcher/blob/7ef76e5dfd/src/main.coffee#L53

Fortunately, I believe I've identified the underlying reason why this
happens, which may help resolve the following issue:
https://github.com/atom/node-pathwatcher/issues/98

If all goes well, I'll submit an upstream pull request.

I've also reinstated an old file watching test that I mistakenly removed
when I attempted to switch to chokidar instead of pathwatcher.
2016-10-21 21:14:44 -04:00
Ben Newman
48a2ccbde7 Dirty optimistic functions when node_modules directories change.
This is a bit different from the previous strategy of invalidating
optimistic functions for specific npm package names.

Now, whenever we make changes to the contents of a specific node_modules
directory, or whenever the developer independently modifies an app's
node_modules directory, all optimistic results derived from paths
contained within that node_modules directory will be marked as dirty, and
thus may need to be recomputed.

This strategy prioritizes starting fewer watchers (just one per
node_modules directory) while still allowing npm packages to be added or
removed while the app is running:

  https://github.com/meteor/meteor/pull/7668#issuecomment-255120373

The drawback is that changes within subdirectories of node_modules will
not be detected until the server is fully restarted, but that seems like
an acceptable tradeoff, since npm packages change much less often than
application code.
2016-10-21 20:06:23 -04:00