Commit Graph

136 Commits

Author SHA1 Message Date
David Greenspan
67b9da63ad Throw error if package is prodOnly and debugOnly
With self-test.
2015-08-06 16:49:26 -07:00
David Greenspan
a63dc1f5c2 Support prodOnly in addition to debugOnly
It's very useful to be able to include code only in production.  It's
useful for React integration, but presumably also for many apps.

* Add prodOnly boolean flag alongside debugOnly in Package.describe

* Packages the set prodOnly to true auto-depend on isobuild:prod-only
  (making them error in the old tool where prodOnly isn't supported)

* The `includeDebug` boolean build option is replaced by a string
  named buildMode, which can be 'development' or 'production', just
  like minifyMode.

Tested by self-test.
2015-08-06 16:49:26 -07:00
Slava Kim
3d2282d9ad fix imports for tests for tool-testing 2015-08-06 16:39:01 -07:00
Slava Kim
39d8aef3d9 move files into console/ tool-testing/ 2015-08-06 16:39:00 -07:00
Slava Kim
f49de5b9ac Move files connecting to Meteor-provided services
to a separate folder
2015-08-06 16:00:39 -07:00
Sashko Stubailo
a50095b2a6 Remove lots of mentions of meteor-platform in tests 2015-08-05 15:15:13 -07:00
Slava Kim
6b1bb038d8 Move files into tools/fs 2015-08-03 22:09:28 -07:00
Slava Kim
8a8db83d29 Move files into tools/utils 2015-08-03 20:32:38 -07:00
Slava Kim
36b542f822 move files into tools/packaging 2015-08-03 16:03:15 -07:00
Slava Kim
3ddd281d8c Move catalog files into tools/catalog/ 2015-07-30 12:12:07 -07:00
Slava Kim
bde35fc505 adjust test to babel's error reporting, since we don't use esprima for parsing anymore 2015-07-24 15:21:40 -07:00
Slava Kim
ae398ede87 Don't expect a wrapped path in self-tests for meteor show 2015-03-30 21:51:54 -07:00
Slava Kim
479a14af1d Don't expect the directory line to be wrapped 2015-03-30 21:10:22 -07:00
Slava Kim
742fdca951 Don't wrap the tests and patterns 2015-03-30 21:06:47 -07:00
David Greenspan
a4bda98fa8 Fix self-test 'add package with no builds' 2015-03-30 17:01:16 -07:00
David Glasser
21bdac8734 Merge branch 'master' into devel
Conflicts:
	History.md
	packages/accounts-password/package.js
	packages/accounts-password/password_server.js
	packages/constraint-solver/package.js
	packages/meteor-tool/package.js
	packages/non-core/npm-bcrypt/package.js
	packages/package-version-parser/package-version-parser-tests.js
	packages/package-version-parser/package-version-parser.js
	packages/package-version-parser/package.js
	tools/selftest.js
2015-03-17 13:41:14 -07:00
David Greenspan
269f32fec6 Fix package-tests: package specifying a name
a self-test broken by the version solver changes.
2015-03-16 16:18:02 -07:00
Sashko Stubailo
c6ea68f9b3 Make meteor create --package not use prefix
It used to create a directory with an underscore instead of a colon
Now, it just removes the prefix.

In cases where the name of the package has more than one colon or starts or ends
witha colon, we report an error.
2015-03-12 17:57:27 -07:00
David Glasser
34df238362 Delete "sync local catalog" test
It's been auto-failing for many months. If somebody wants to fix it,
feel free to revert this and fix it, but there's no reason to just
entirely stop self-test --slow from having any hope of passing forever.
2015-03-11 17:46:17 -07:00
David Glasser
52d500e123 Delete "sync local catalog" test
It's been auto-failing for many months. If somebody wants to fix it,
feel free to revert this and fix it, but there's no reason to just
entirely stop self-test --slow from having any hope of passing forever.
2015-03-10 20:54:22 -07:00
David Glasser
f207371bc0 Revert "Add some helpers for testing wrapped text"
This reverts commit 4a6dd52bca.

This made some tests flaky because notSpaceSensitive sometimes (but not
always!) ate the newline after the regexp.

We should just disable word wrapping in processes run by self-test
instead.
2015-03-09 22:31:49 -07:00
David Glasser
adc6d9969c Revert "Add some helpers for testing wrapped text"
This reverts commit 4a6dd52bca.

This made some tests flaky because notSpaceSensitive sometimes (but not
always!) ate the newline after the regexp.

We should just disable word wrapping in processes run by self-test
instead.
2015-03-09 22:30:44 -07:00
sashko
4a6dd52bca Add some helpers for testing wrapped text 2015-03-05 21:07:14 -08:00
sashko
e6dd488842 Make addendum not sensitive to line breaks 2015-03-05 20:24:44 -08:00
Slava Kim
7d39f9e796 Uncomment and fix the "Default release track is METEOR@" test for Windows 2015-03-05 17:44:33 -08:00
David Glasser
9c210f8bcb Fix crash in publish
Specifically, a "no pluginProviderPackageMap on isopack?" error would be
thrown when running publish in the following circumstances:

- You are inside an app (so it uses the app's .meteor/local/isopacks as
  an IsopackCache instead of a temporary directory)
- Your package does not need to be rebuilt (so it gets read in "up to
  date" mode by the IsopackCache)
- Your app has at least one cordova platform (so that
  includeCordovaUnibuild was true on the cached isopack; it is always
  true when building for publish)

In this case, we read the Isopack from disk but didn't keep the
pluginProviderPackageMap that we read from its isopack-buildinfo.json,
which later lead to a crash.

Fixes #3676.
2015-03-03 18:54:53 -08:00
Avital Oliver
e866f7ca8c Tag known failing Windows self-tests
This way we can start running `meteor self-test` for regression testing,
while in parallel addressing the failures that are tagged by this commit.
2015-02-10 13:33:14 -08:00
Sashko Stubailo
6aa9142e67 Fix some test bugs related to package names/dirs 2015-02-06 14:49:23 -08:00
Sashko Stubailo
e6a26bded0 Wrong method call in self test. (add flow plz) 2015-02-06 13:56:01 -08:00
Sashko Stubailo
497340498f Fix missing createPackage arguments in selftest 2015-02-06 13:53:24 -08:00
David Glasser
2cc0d41ee2 Fix packages with organizations test 2015-02-05 22:32:42 -08:00
Avital Oliver
59b1e145c6 Fix selftests that create packages with colons
We used to create package directories with the same name as the package
name, but on windows you can't have directories with colons in them.

Now Sandbox.prototype.createPackage takes an additional argument
with the directory name, as distinct from the package name.

This commit updates all the tests that called createPackage to generate
a directory name with no colons.
2015-02-05 00:12:09 -08:00
Avital Oliver
c614ebd107 Fix selftests in Windows with fake warehouses
There were two issues:
1. The meteor.bat file we used to simulate symlinks in Windows didn't
   correctly deal with absolute paths
2. The way we overrided DEFAULT_TRACK in Windows led to some other piece
   of code not doing the right thing, presumably because it compared
   a track to DEFAULT_TRACK which wasn't overridden in Windows.
2015-02-04 20:25:27 -08:00
Slava Kim
2d7aa3f80e Fix test broken by changing package skeleton 2015-01-21 14:04:07 -08:00
ekatek
b5628f4b23 minor test fixes
This mostly fixes tests:
- removes the 'restarted' check from some tests. We don't need it in those cases
  (printing the other banner is enough). We can no longer rely on that executing
  after the code in the package (in fact it seems to execute before, and then
  get overwritten), and the test still tests what it is intended to (that the new
  package code executes).

- minor fixes to essentially syntax errors -- the skeleton now uses double quotes
  instead of single quotes, so a regex failed to work, for example. We changed a
  version number in one part of the test, but not another.

- fixes selftest.js, sort of, to actually print out what test we are testing. This
  is an unfortunate interaction of Console.js changes in 1.0.2 and a progress bar
  (that came later). The progress bar erases the message telling you what test is
  running when you use a standard terminal. That's awkward, fixed.
2015-01-16 16:50:51 -08:00
ekatek
fe88795ef9 fixing some tests
Literally, just fixing a test to account for the fact that we now use " instead of
' in the package.js skeleton.
2015-01-15 13:20:14 -08:00
ekatek
e4bd9b7a07 merging 'meteor show' changes
This is mostly cleaning up some syntax errrors that have resulted from
merging the previous commits.
2015-01-13 13:53:22 -08:00
ekatek
798c1635fc show version number in package view
Summary:
When running 'meteor show <packageName>' show

Package: <packageName>@<defaultVersion>

(instead of  "Package: <packageName>" )

The default version is the version number of the version record
that acts as the source for exports, implies, long description, etc.
It is the local record (in which case, we will show "@local" to be
more clear); if there is no local record, it is the highest semver mainline
record (ie: not a pre-release) and if *that* doesn't exist, it is just
the highest semver record that we have.

Test Plan: self-test show --slow

Reviewers: glasser

Differential Revision: https://phabricator.meteor.io/D8
2015-01-13 13:53:22 -08:00
ekatek
4f5fdbfac2 minor edits to the output of 'meteor show'
- Package: <name>@<version> rather than
  Package: <name>
  Version: <version>
  in the version output

- Remove the summary line from version output.
  Move 'Published by' to the bottom as a separate line.

- Move git up.

The impetus behind these changes is to reduce the size of the header on 'meteor show'.
We thought that the long paragraph of "Foo: Bar" type things was too overwhelming.

Some more changes:

- Clean up an extra line that comes up when printing the description sometimes.

- Add 'This package version is built locally from source' to the message about versions
  available on the server.

- For releases, process the "non-recommended versions have been hidden message" for the single-hidden-version
  case, in the same way that we do for packages.
2015-01-13 13:53:21 -08:00
ekatek
064580b553 show implied packages
In 'meteor show', display the list of packages implied by a package/version.

Implied exports are part of the package's exports, especially for an umbrealla
package like 'meteor-platform' or 'cfs:standard-packages'. However, we can't
tell you the exact exports (ex: "Mongo") without running the constraint solver
(because we don't know what version of the implied package you will end up with).

Showing implies also makes umbrella packages like 'meteor-platform' and
'cfs:standard-packages' more obvious -- the user can tell what is going on with the
package much better.
2015-01-13 13:53:21 -08:00
ekatek
0f6c31cab7 upload README.md files to the server and view the excerpt in meteor show
This commit is based on the following design document:
https://mdg.hackpad.com/Creating-and-Updating-Docs-0ZyyDcSZDxp,
and some other stuff from here: https://mdg.hackpad.com/Meteor-Long-Description-wGZ1vIOwVlF
and was code reviewed here: https://github.com/meteor/meteor/pull/3375

It does the following:

- Allow the user to specify package documentation in Package.Describe.
  We will take the README.md file by default, to make the transition easier.
  Users can specify ‘documentation: null’ to not submit a README.md

- From that documentation, extract the section between the first and second header
  to use as the long form description for the package.

- Upload the documentation to the server at publish-time. Allow metadata changes with ‘publish —update’.

- Change the default package skeleton to include the README.md file.
  Also, changes the skeleton to have fewer useless placeholders in Package.describe values.

- Fix a minor bug where Git did not show up when running ‘meteor show’ on local packages.

A note on ‘documentation: null’ and blank documentation — we don’t let maintainers upload
blank README.md files, because we want to encourage people to fill them out. (Instead,
we allow a ‘documentation: null’ as an override) This is a UX issue! It is not a technical thing.

There is more discussion and code review in: https://github.com/meteor/meteor/pull/3375
2015-01-13 13:53:21 -08:00
ekatek
5bba62e1f2 display exports for packages in ‘meteor show’
Contains:
- method to aggregate exports for a package in packageSource (exports are per-architecture).

- get this data from packageSource in PackageQuery for ‘meteor show’. Don’t store it in the
local catalog — while it is not a particularly expensive operation, it is still more expensive
than a simple lookup. We really do care about minimizing any sort of computation when we
are initializing packages, since we want the tool to be fast.

- display the data in ‘meteor show’. It makes sense to line wrap this with the ‘Exports:’ label as a
bulletPoint (just look at the test to see an example where this improves user experience). Since we
are doing that, we might as well use that bulletPoint functionality on the other labels as well.

- There is also a test. Run ‘meteor self-test show’ to test, or run ‘meteor show’ on a local package
with exports.

The Troposphere counterpoint to this is: meteor/troposphere#5
2015-01-13 13:53:21 -08:00
ekatek
a66bb6b10d enable meteor show w/o arguments
This is a thing that I wanted to try -- running 'meteor show' in a
package directory shows you that version's data.
- You might want to run 'meteor show' to get export or dependency
  information on a local package, instead of looking through the
  package.js file.

- Before publishing your package, or updating its metadata, you might
  want to make really sure that its longform description looks good
  in 'meteor show'. Hopefully it does! I would want to check.

Running 'meteor show <name>@local' from a package directory feels
slightly janky to me.
- Other commands in the publiction workflow read 'package.js' to figure
  out your package name. It feels weird to type it out.
- Many package names don't correspond to the directory name. It is good
  to help the user spend less time inspecting package.js files for
  obvious information.

This has bothered me a lot during testing, which is not a normal workflow.
I might be somewhat biased here, in a way that normal users would not be.

There is a minor inefficiency around retrieving a local version record twice,
but I think that it is worth it for code simplicity/readability/etc.
2015-01-13 13:53:21 -08:00
ekatek
ba7480a363 more helpful message about hidden versions
Instead of the generic "Some versions of X have been hidden"
message when only showing some versions of a package, use a more
detailed message. For example:
- "Older versions of X have been hidden"
- "Older, pre-release and unmigrated versions of X have been hidden"
- "One older version of X has been hidden."

There is some hand-waving around the logic resolving what to do about,
for example, old pre-releases. Overall, we want to err on the side of
having a clear and obviously consistent user experience:

- any version less than the lowest shown version (ex: 1.0.0-rc.0 vs 1.0.0)
is an 'older' version. Sometimes, that version is also a pre-release. It
is possible that if we were NOT filtering out pre-releases, we would show it.
We still respond that it is ‘older’, because that seems more obviously consistent.

 - we report any ‘pre-release’ or ‘unmigrated’ versions in the version interval
that we show. That is, if we are showing ‘1.0.0’ and ‘2.0.0’, and hiding
2.0.0-rc.0 and the un-migrated 1.1.0, we will mention it.

Of course, that interval does depend on what versions we choose to hide. It is
possible to imagine a situation where we don’t hide pre-releases, in which case,
‘1.0.0’ above might not make the cut, and neither would 1.1.0. Luckily, we either
show everything, or hide everything, so this is only theoretical.
2015-01-13 13:53:21 -08:00
ekatek
12d030dd53 completely rewrite of ‘meteor show’; some changes to ‘meteor search’.
The ‘show’ command has been completely rewritten. It has different output
and now does the following:

- Interacts with local package versions. Checks in the local package catalog, and
  returns the local versions along with the server versions. When ‘meteor show’ is
  run with a specific version request (‘meteor show foo@<version>’), default to
  showing the local package version (but show a message that a server version is
  available). Running ‘meteor show foo@local’ will always show the local version
  (useful for version-less local packages).

- Simplify the interface. Instead of various ‘show-*’ flags, we only have one: show-all.
  By default, we only show the top 5 official (non-prerelease) unmigrated versions of a
  package (+ local version, if applicable). This can be overridden with ‘show-all’, and we
  let the user know that more versions are available. For releases, ‘show-all’ will show
  non-recommended releases.

- Display publication time for non-local package versions. This makes it easier to run
  ‘meteor show <name>’ and see if <name> is actively maintained. For local packages,
  we display the root directory (useful for large apps or running with the
  LOCAL_PACKAGE_DIRS variable, for example).

- For non-local package versions, show if the version is ‘installed’ (downloaded into the
  warehouse). This involved minor changes to tropohouse.js. The idea is that this should
  give a pretty good clue whether the version can be added offline.

- Show version dependencies. This should help the user understand, track down and
  debug constraint solver failures.

- Do not show version architectures except in —ejson mode.

- Allow an ‘—ejson’ flag to get the output in EJSON format. That should make scripting
  easier. (As a bonus, for release versions, the EJSON output acts as a nice template
  for the release configuration file.)

The search command now does the following:

- Interacts with local package versions. Specifically, local versions override equivalent
  server versions. Also, ‘search’ works on local packages (so, for example,
  ‘meteor search troposphere’ inside the package server app will give you the troposphere
  package).

- Allows an ‘—ejson’ flag to get the outout in EJSON format.

Minor changes to some minor testing infrastructure:

 - A new skeleton package, package-for-show. Its versions contain different
   values for various metadata, so we can test that metadata comes from
   the right version.

 - In several places, replace the pattern of copying around
   package.js files with using the replace function on a placeholder
   string. (Mostly, as applied to package versions).

This is based on these hackpads: https://mdg.hackpad.com/Showing-Package-Metadata-HdGo3Lzx3hR
and https://mdg.hackpad.com/Meteor-Search-Output-1xxEzrAK9YU.
2015-01-13 13:53:20 -08:00
David Greenspan
132f316953 Fix typo in a self-test 2015-01-09 14:38:25 -08:00
David Glasser
6320acabc4 Merge branch 'master' into devel
Conflicts:
	History.md
	tools/safe-pathwatcher.js
	tools/tests/old.js
	tools/watch.js
2014-12-19 11:42:50 -08:00
David Glasser
7633de6efd fix another word-wrap self-test 2014-12-18 16:11:23 -08:00
Sashko Stubailo
e7167e5257 Factor out almost all fs. and path. calls in the tool
This will be useful when we want to be smart with windows file paths later
Also, all of the file calls are asynchronous with fibers now, which comes with
many benefits.

This is a combination of 23 commits. Original messages:
Wrap a large number of fs calls inside files.*

Convert a few more fs calls to files.*

More moving fs.* to files

Implement read/write streams and open/read/close

Get rid of fs from auth.js

Remove fs and unused imports from catalog-local and catalog-remote

Remove unused imports from catalog.js

Replace a whole lot of fs calls

Fix error

Migrate a lot more fs. calls to files.

Add a temporary symlink method

Convert old test to files.*

Use files.pathX instead of path.x everywhere

Replace path.x to files.pathX in tests

Small fixes to files.js and one rename

Make cleanup run in a fiber

Make wrapping functions take function name in case we need it

Add some timeouts and stuff to HCP tests

wrapFsFunc also makes a sync version of the function

Sometimes you just don't want to yield!

Make sure JsImage readFromDisk doesn't yield

Remove unused imports from npm test

Change order of test now that some things don't yield

Fix missing files import, and add a debug error printout
2014-12-15 15:32:06 -08:00
David Glasser
79527ccd9c Don't crash on circular dependency
Previously, we would register the circular dependency error properly
with buildmessage, but then try to build the package with a circular
dependency anyway, leading to a crash.

Fixes #3280.
2014-12-11 21:31:41 -08:00