1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rubygems: update to 1.3.5.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-12-08 07:19:09 +00:00
parent 6c0f2b097e
commit ed5d5c5829
34 changed files with 6650 additions and 136 deletions

View file

@ -1,4 +1,6 @@
Tue Dec 8 16:16:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
Tue Dec 8 16:19:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rubygems: update to 1.3.5.
* lib/rubygems/defaults.rb (Gem::default_dir): removed a clause
doing nothing.

5529
doc/rubygems/ChangeLog Normal file

File diff suppressed because it is too large Load diff

799
doc/rubygems/History.txt Normal file
View file

@ -0,0 +1,799 @@
=== 1.3.5 / 2009-07-21
Bug fixes:
* Fix use of prerelease gems.
* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.
Deprecation Notices:
* Bulk index update is no longer supported (the code currently remains, but not
the tests)
* Gem::manage_gems was removed in 1.3.3.
* Time::today was removed in 1.3.3.
=== 1.3.4 / 2009-05-03
Bug Fixes:
* Fixed various warnings
* Gem::ruby_version works correctly for 1.8 branch and trunk
* Prerelease gems now show up in `gem list` and can be used
* Fixed option name for `gem setup --format-executable`
* RubyGems now matches Ruby > 1.9.1 gem paths
* Gem::RemoteFetcher#download now works for explicit Windows paths across
drives. Bug #25882 by Lars Christensen
* Fix typo in Gem::Requirement#parse. Bug #26000 by Mike Gunderloy.
Deprecation Notices:
* Bulk index update is no longer supported (the code currently remains, but not
the tests)
* Gem::manage_gems was removed in 1.3.3.
* Time::today was removed in 1.3.3.
=== 1.3.3 / 2009-05-04
New Features:
* `gem server` allows port names (from /etc/services) with --port.
* `gem server` now has search that jumps to RDoc. Patch #22959 by Vladimir
Dobriakov.
* `gem spec` can retrieve single fields from a spec (like `gem spec rake
authors`).
* Gem::Specification#has_rdoc= is deprecated and ignored (defaults to true)
* RDoc is now generated regardless of Gem::Specification#has_rdoc?
Bug Fixes:
* `gem clean` now cleans up --user-install gems. Bug #25516 by Brett
Eisenberg.
* Gem.bin_path now escapes paths with spaces.
* Rake extension builder uses explicit correctly loads rubygems when invoking
rake.
* Prerelease versions now match "~>" correctly. Patch #25759 by Yossef
Mendelssohn.
* Check bindir for executables, not root when validating. Bug reported by
David Chelimsky.
* Remove Time.today, no way to override it before RubyGems loads. Bug #25564
by Emanuele Vicentini
* Raise Gem::Exception for #installation_path when not installed. Bug #25741
by Daniel Berger.
* Don't raise in Gem::Specification#validate when homepage is nil. Bug #25677
by Mike Burrows.
* Uninstall executables from the correct directory. Bug #25555 by Brett
Eisenberg.
* Raise Gem::LoadError if Kernel#gem fails due to previously-loaded gem. Bug
reported by Alf Mikula.
Deprecation Notices:
* Gem::manage_gems has been removed.
* Time::today has been removed early. There was no way to make it warn and be
easy to override with user code.
=== 1.3.2 / 2009-04-15
Select New Features:
* RubyGems now loads plugins from rubygems_plugin.rb in installed gems.
This can be used to add commands (See Gem::CommandManager) or add
install/uninstall hooks (See Gem::Installer and Gem::Uninstaller).
* Gem::Version now understands prerelease versions using letters. (eg.
'1.2.1.b') Thanks to Josh Susser, Alex Vollmer and Phil Hagelberg.
* RubyGems now includes a Rake task for creating gems which replaces rake's
Rake::GemPackageTask. See Gem::PackageTask.
* Gem::find_files now returns paths in $LOAD_PATH.
* Added Gem::promote_load_path for use with Gem::find_files
* Added Gem::bin_path to make finding executables easier. Patch #24114 by
James Tucker.
* Various improvements to build arguments for installing gems.
* `gem contents` added --all and --no-prefix.
* Gem::Specification
* #validate strips directories and errors on not-files.
* #description no longer removes newlines.
* #name must be a String.
* FIXME and TODO are no longer allowed in various fields.
* Added support for a license attribute. Feature #11041 (partial).
* Removed Gem::Specification::list, too much process growth. Bug #23668 by
Steve Purcell.
* `gem generate_index`
* Can now generate an RSS feed.
* Modern indicies can now be updated incrementally.
* Legacy indicies can be updated separately from modern.
Select Bugs Fixed:
* Better gem activation error message. Patch #23082.
* Kernel methods are now private. Patch #20801 by James M. Lawrence.
* Fixed various usability issues with `gem check`.
* `gem update` now rescues InstallError and continues. Bug #19268 by Gabriel
Wilkins.
* Allow 'https', 'file' as a valid schemes for --source. Patch #22485.
* `gem install`
* Now removes existing path before installing. Bug #22837.
* Uses Gem::bin_path in executable stubs to work around Kernel#load bug in
1.9.
* Correctly handle build args (after --) via the API. Bug #23210.
* --user-install
* `gem install --no-user-install` now works. Patch #23573 by Alf Mikula.
* `gem uninstall` can now uninstall from ~/.gem. Bug #23760 by Roger Pack.
* setup.rb
* Clarify RubyGems RDoc installation location. Bug #22656 by Gian Marco
Gherardi.
* Allow setup to run from read-only location. Patch #21862 by Luis Herrera.
* Fixed overwriting ruby executable when BASERUBY was not set. Bug #24958
by Michael Soulier.
* Ensure we're in a RubyGems dir when installing.
* Deal with extraneous quotation mark when autogenerating .bat file on MS
Windows. Bug #22712.
Deprecation Notices:
* Gem::manage_gems has been removed.
* Time::today will be removed in RubyGems 1.4.
Special thanks to Chad Wooley for backwards compatibility testing and Luis
Lavena and Daniel Berger for continuing windows support.
=== 1.3.1 / 2008-10-28
Bugs fixed:
* Disregard ownership of ~ under Windows while creating ~/.gem. Fixes
issues related to no uid support under Windows.
* Fix requires for Gem::inflate, Gem::deflate, etc.
* Make Gem.dir respect :gemhome value from config. (Note: this feature may be
removed since it is hard to implement on 1.9.)
* Kernel methods are now private. Patch #20801 by James M. Lawrence.
* Gem::location_of_caller now behaves on Windows. Patch by Daniel Berger.
* Silence PATH warning.
Deprecation Notices:
* Gem::manage_gems will be removed on or after March 2009.
=== 1.3.0 / 2008-09-25
New features:
* RubyGems doesn't print LOCAL/REMOTE titles for `gem query` and friends if
stdout is not a TTY, except with --both.
* Added Gem.find_files, allows a gem to discover features provided by other
gems.
* Added pre/post (un)install hooks for packagers of RubyGems. (Not for gems
themselves).
* RubyGems now installs gems into ~/.gem if GEM_HOME is not writable. Use
--no-user-install command-line switch to disable this behavior.
* Fetching specs for update now uses If-Modified-Since requests.
* RubyGems now updates the ri cache when the rdoc gem is installed and
documentation is generated.
Deprecation Notices:
* Gem::manage_gems now warns when called. It will be removed on or after March
2009.
Bugs Fixed:
* RubyGems 1.3.0+ now updates when no previous rubygems-update is installed.
Bug #20775 by Hemant Kumar.
* RubyGems now uses the regexp we already have for `gem list --installed`. Bug
#20876 by Nick Hoffman.
* Platform is now forced to Gem::Platform::RUBY when nil or blank in the
indexer. Fixes various uninstallable gems.
* Handle EINVAL on seek. Based on patch in bug #20791 by Neil Wilson.
* Fix HTTPS support. Patch #21072 by Alex Arnell.
* RubyGems now loads all cache files even if latest has been loaded. Bug
#20776 by Uwe Kubosch.
* RubyGems checks for support of development dependencies for #to_ruby. Bug
#20778 by Evan Weaver.
* Now specifications from the future can be loaded.
* Binary script uninstallation fixed. Bug #21234 by Neil Wilson.
* Uninstallation with -i fixed. Bug #20812 by John Clayton.
* Gem::Uninstaller#remove_all now calls Gem::Uninstaller#uninstall_gem so hooks
get called. Bug #21242 by Neil Wilson.
* Gem.ruby now properly escaped on windows. Fixes problem with extension
compilation.
* `gem lock --strict` works again. Patch #21814 by Sven Engelhardt.
* Platform detection for Solaris was improved. Patch #21911 by Bob Remeika.
Other Changes Include:
* `gem help install` now describes _version_ argument to executable stubs
* `gem help environment` describes environment variables and ~/.gemrc and
/etc/gemrc
* On-disk gemspecs are now read in UTF-8 and written with a UTF-8 magic comment
* Rakefile
* If the SETUP_OPTIONS environment variable is set, pass its contents as
arguments to setup.rb
* lib/rubygems/platform.rb
* Remove deprecated constant warnings and really deprecate them. (WIN32,
etc).
* lib/rubygems/remote_fetcher.rb
* Now uses ~/.gem/cache if the cache dir in GEM_HOME is not writable.
* lib/rubygems/source_index.rb
* Deprecate options to 'search' other than Gem::Dependency instances and
issue warning until November 2008.
* setup.rb
* --destdir folder structure now built using Pathname, so it works for
Windows platforms.
* test/*
* Fixes to run tests when under test/rubygems/. Patch by Yusuke ENDOH
[ruby-core:17353].
* test/test_ext_configure_builder.rb
* Locale-free patch by Yusuke Endoh [ruby-core:17444].
=== 1.2.0 / 2008-06-21
New features:
* RubyGems no longer performs bulk updates and instead only fetches the gemspec
files it needs. Alternate sources will need to upgrade to RubyGems 1.2 to
allow RubyGems to take advantage of the new metadata updater. If a pre 1.2
remote source is in the sources list, RubyGems will revert to the bulk update
code for compatibility.
* RubyGems now has runtime and development dependency types. Use
#add_development_dependency and #add_runtime_dependency. All typeless
dependencies are considered to be runtime dependencies.
* RubyGems will now require rubygems/defaults/operating_system.rb and
rubygems/defaults/#{RBX_ENGINE}.rb if they exist. This allows packagers and
ruby implementers to add custom behavior to RubyGems via these files. (If
the RubyGems API is insufficient, please suggest improvements via the
RubyGems list.)
* /etc/gemrc (and windows equivalent) for global settings
* setup.rb now handles --vendor and --destdir for packagers
* `gem stale` command that lists gems by last access time
Bugs Fixed:
* File modes from gems are now honored, patch #19737
* Marshal Gem::Specification objects from the future can now be loaded.
* A trailing / is now added to remote sources when missing, bug #20134
* Gems with legacy platforms will now be correctly uninstalled, patch #19877
* `gem install --no-wrappers` followed by `gem install --wrappers` no longer
overwrites executables
* `gem pristine` now forces reinstallation of gems, bug #20387
* RubyGems gracefully handles ^C while loading .gemspec files from disk, bug
#20523
* Paths are expanded in more places, bug #19317, bug #19896
* Gem::DependencyInstaller resets installed gems every install, bug #19444
* Gem.default_path is now honored if GEM_PATH is not set, patch #19502
Other Changes Include:
* setup.rb
* stub files created by RubyGems 0.7.x and older are no longer removed. When
upgrading from these ancient versions, upgrade to 1.1.x first to clean up
stubs.
* RDoc is no longer required until necessary, patch #20414
* `gem server`
* Now completely matches the output of `gem generate_index` and
has correct content types
* Refreshes from source directories for every hit. The server will no longer
need to be restarted after installing gems.
* `gem query --details` and friends now display author, homepage, rubyforge url
and installed location
* `gem install` without -i no longer reinstalls dependencies if they are in
GEM_PATH but not in GEM_HOME
* Gem::RemoteFetcher now performs persistent connections for HEAD requests,
bug #7973
=== 1.1.1 / 2008-04-11
Bugs Fixed:
* Gem.prefix now returns non-nil only when RubyGems was installed outside
sitelibdir or libdir.
* The `gem server` gem list now correctly links to gem details.
* `gem update --system` now passes --no-format-executable to setup.rb.
* Gem::SourceIndex#refresh! now works with multiple gem repositories.
* Downloaded gems now go into --install-dir's cache directory.
* Various fixes to downloading gem metadata.
* `gem install --force` now ignores network errors too.
* `gem pristine` now rebuilds extensions.
* `gem update --system` now works on virgin Apple ruby.
* Gem::RemoteFetcher handles Errno::ECONNABORTED.
* Printing of release notes fixed.
=== 1.1.0 / 2008-03-29
New features:
* RubyGems now uses persistent connections on index updates. Index updates are
much faster now.
* RubyGems only updates from a latest index by default, cutting candidate gems
for updates to roughly 1/4 (at present). Index updates are even faster
still.
* `gem list -r` may only show the latest version of a gem, add --all to see
all gems.
* `gem spec` now extracts specifications from .gem files.
* `gem query --installed` to aid automation of checking for gems.
Bugs Fixed:
* RubyGems works with both Config and RbConfig now.
* Executables are now cleaned upon uninstall.
* You can now uninstall from a particular directory.
* Updating from non-default sources fixed.
* Executable stubs now use ruby install name in shebang.
* `gem unpack` checks every directory in Gem.path now.
* `gem install` now exits with non-zero exit code when appropriate.
* `gem update` only updates gems that need updates.
* `gem update` doesn't force remote-only updates.
* `gem update` handles dependencies properly when updating.
* Gems are now loaded in Gem.path order.
* Gem stub scripts on windows now work outside Gem.bindir.
* `gem sources -r` now works without network access.
Other Changes Include:
* RubyGems now requires Ruby > 1.8.3.
* Release notes are now printed upon installation.
* `gem env path` now prints a usable path.
* `gem install` reverts to local-only installation upon network error.
* Tar handling code refactoring and cleanup.
* Gem::DependencyInstaller's API has changed.
For a full list of changes to RubyGems, see the ChangeLog file.
=== 1.0.1 / 2007-12-20
Bugs Fixed:
* Installation on Ruby 1.8.3 through 1.8.5 fixed
* `gem build` on 1.8.3 fixed
Other Changes Include:
* Since RubyGems 0.9.5, RubyGems is no longer supported on Ruby 1.8.2 or older,
this is official in RubyGems 1.0.1.
=== 1.0.0 / 2007-12-20
Major New Features Include:
* RubyGems warns about various problems with gemspecs during gem building
* More-consistent versioning for the RubyGems software
Other Changes Include:
* Fixed various bugs and problems with installing gems on Windows
* Fixed using `gem server` for installing gems
* Various operations are even more verbose with --verbose
* Built gems are now backwards compatible with 0.9.4
* Improved detection of RUBYOPT loading rubygems
* `ruby setup.rb` now has a --help option
* Gem::Specification#bindir is now respected on installation
* Executable stubs can now be installed to match ruby's name, so if ruby is
installed as 'ruby18', foo_exec will be installed as 'foo_exec18'
* `gem unpack` can now unpack into a specific directory with --target
* OpenSSL is no longer required by default
Deprecations and Deletions:
* Kernel#require_gem has been removed
* Executables without a shebang will not be wrapped in a future version, this
may cause such executables to fail to operate on installation
* Gem::Platform constants other than RUBY and CURRENT have been removed
* Gem::RemoteInstaller was removed
* Gem::Specification#test_suite_file and #test_suite_file= are deprecated in
favor of #test_file and #test_file=
* Gem::Specification#autorequire= has been deprecated
* Time::today will be removed in a future version
=== 0.9.5 / 2007-11-19
Major New Features Include:
* Platform support
* Automatic installation of platform gems
* New bandwidth and memory friendlier index file format
* "Offline" mode (--no-update-sources)
* Bulk update threshold can be specified (-B, --bulk-threshold)
* New `gem fetch` command
* `gem` now has "really verbose" output when you specify -v
* Improved stubs and `gem.bat` on mswin, including better compatiblity
with the One-Click Installer.
Other Changes Include:
* Time::today is deprecated and will be removed at a future date
* Gem::manage_gems is deprecated and will be removed at a future date
* `gem install --include-dependencies` (-y) is now deprecated since it is the
default, use --ignore-dependencies to turn off automatic dependency
installation
* Multi-version diamond dependencies only are installed once
* Processing a YAML bulk index update takes less memory
* `gem install -i` makes sure all depenencies are installed
* `gem update --system` reinstalls into the prefix it was originally installed
in
* `gem update --system` respects --no-rdoc and --no-ri flags
* HTTP basic authentication support for proxies
* Gem::Specification#platforms should no longer be a String, use
Gem::Platform::CURRENT when building binary gems instead
* `gem env` has more diagnostic information
* require 'rubygems' loads less code
* sources.gem is gone, RubyGems now uses built-in defaults
* `gem install --source` will no longer add --source by default, use `gem
sources --add` to make it a permanent extra source
* `gem query` (list) no longer prints details by default
* Exact gem names are matched in various places
* mkrf extensions are now supported
* A gem can depend on a specific RubyGems version
* `gem_server` is now `gem server`
* `gemlock` is now `gem lock`
* `gem_mirror` is now `gem mirror`
* `gemwhich` is now `gem which`
* `gemri` is no longer included with RubyGems
* `index_gem_repository.rb` is now `gem generate_index`
* `gem` performs more validation of parameters
* Custom rdoc styles are now supported
* Gem indexer no longer removes quick index during index creation
* Kernel#require only rescues a LoadError for the file being required now
* `gem dependencies` can now display some information for remote gems
* Updating RubyGems now works with RUBYOPT=-rubygems
Special thanks to:
* Daniel Berger
* Luis Lavena
* Tom Copeland
* Wilson Bilkovich
=== 0.9.4 / 2007-05-23
If you are experiencing problems with the source index (e.g. strange
"No Method" errors), or problems with zlib (e.g. "Buffer Error"
messsage), we recommend upgrading to RubyGems 0.9.4.
Bug Fixes Include:
* Several people have been experiencing problems with no method errors
on the source index cache. The source index cache is now a bit more
self healing. Furthermore, if the source index cache is
irreparable, then it is automatically dropped and reloaded.
* The source cache files may now be dropped with the "gem sources
--clear-all" command. (This command may require root is the system
source cache is in a root protected area).
* Several sub-commands were accidently dropped from the "gem" command.
These commands have been restored.
=== 0.9.3 / 2007-05-10
Bug Fixes Include:
The ZLib library on Windows will occasionally complains about a buffer error
when unpacking gems. The Gems software has a workaround for that problem, but
the workaround was only enabled for versions of ZLib 1.2.1 or earlier. We
have received several reports of the error occuring with ZLib 1.2.3, so we
have permanently enabled the work around on all versions.
=== 0.9.2 / 2007-02-05
Bug Fixes Include:
* The "unpack" command now works properly.
* User name and password are now passed properly to the authenticating
proxy when downloading gems.
=== 0.9.1 / 2007-01-16
See ChangeLog
=== 0.9.0 / 2006-06-28
Finally, the much anticipated RubyGems version 0.9.0 is now available.
This release includes a number of new features and bug fixes. The
number one change is that we can now download the gem index
incrementally. This will greatly speed up the gem command when only a
few gems are out of date.
Major Enhancments include:
* The gem index is now downloaded incrementally, only updating entries
that are out of date. If more than 50 entries are out of date, we
revert back to a bulk download.
* Several patches related to allowing RubyGems to work with
authenticating proxies (from Danie Roux and Anatol Pomozov). Just
put the user and password in the proxy URL (e.g. -p
http://user:password@proxy.address.com:8080) or use the
HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables.
* The gem unpack command can now accept a file path rather than just a
install gem name.
* Both RI and RDOC documents are now generated by default.
* A gemri command is included to read gem RI docs (only needed for
Ruby 1.8.4 or earlier).
Minor enhancements include:
* Verison 0.0.0 is now a valid gem version.
* Better detection of missing SSL functionality.
* SSL is not required if the security policy does not require
signature checking.
* Rake built extensions are now supported (Tilman Sauerbeck).
* Several autorequire bug fixes.
* --traceback is now an alias for --backtrace (I can never remember
which one it is).
* SAFE=1 compatibility fixes.
* .rbw is now a supported suffix for RubyGem's custom require.
* Several Ruby 1.9 compatibility fixes (Eric Hodel).
Bug Fixes:
* Added dashes to gemspecs generated in Ruby 1.8.3. This solves some
cross-Ruby version compatibility issues.
* Fixed bug where the wrong executables could be uninstalled (Eric
Hodel).
* Fixed bug where gem unpack occasionally unpacked the wrong gem.
* Fixed bug where a fatal error occured when permissions on .gemrc
were too restrictive (reported by Luca Pireddu).
* Fixed prefix handling for native expressions (patch by Aaron Patterson).
* Fixed several Upgrade => Update typos.
=== 0.8.11 / 2005-07-13
* -y is a synonym for --include-dependencies.
* Better handling of errors in the top level rescue clause.
* Package list command (e.g. gem inspect GEM).
* .gemrc now allows cvsrc-like options to set defaults per subcommand.
* The autorequire gem spec field will now accept a list.
* Substituted Time for Date in specs, increasing performance
dramatically.
* Fixed reported bug of gem directories ending in "-" (reported by
Erik Hatcher).
* Fixed but in installer that caused dependency installation to not
work.
* Added Paul Duncan's gem signing patch.
* Added Mark Hubbart's Framework patch (for better integration with OS
X).
* Added David Glasser's install-from-mirror patch.
* Additional internal structural cleanup and test reorganization.
=== 0.8.10 / 2005-03-27
* In multi-user environments, it is common to supply mulitple versions of gems
(for example Rails), allowing individual users to select the version of the
gem they desire. This allows a user to be insulated from updates to that
gem. RubyGems 0.8.10 fixes a problem where gems could occasionally become
confused about the current versions of libraries selected by the user.
* The other annoying bug is that if there are any existing rubygems-update gems
installed, then the "gem update --system" command will download a new
update, but install the latest update prior to the download.
=== 0.8.9
Never released
=== 0.8.8 / 2005-03-14
* Moved the master definition of class Requirement back under version.
Kept the body of Requirement under Gem.
=== 0.8.7 / 2005-03-14
Even though it has only been a few weeks since that last release,
there are quite a number of new features in 0.8.7. A complete list of
new features will be given below, but here is a summary of the hot
items.
* The bug that prevented some users from installing rails has been
squashed. A big thanks to Bill Guindon (aGorilla) for helping track
that one down.
There are several new commands available on the gem command:
* gem cleanup GEMNAME -- Cleanup (uninstall) all the old versions of
gem. If the gem name is omitted, the entire repository is cleaned.
* gem dependency GEMNAME -- Show the dependencies for the named gems.
This is really helpful when trying to figure out what gem needs what
other gem.
There changes to the existing commands as well.
* gem uninstall is much smarter about removing gems from the
repository. Lists of gems are now uninstalled in proper dependency
order (ie. if A depends on B, A is uninstalled first). Also,
warnings about broken dependencies occur only when removing the
*last* gem that supports a dependency is removed.
Both gem install and gem uninstall support some new command line
options that can reduce the amount of yes/no queries given the user.
For install we have:
* --ignore-dependencies -- Only install requests gems, no
dependendecies are automatically installed.
* --include-dependencies -- Automatically install dependencies,
without confirmation.
For gem uninstall, the new options are:
* --all -- Uninstall all matching gems without confirmation.
* --ignore-dependencies -- Uninstall, even if dependencies are broken.
* --executables -- Remove executables without confirmation
Under general cleanup, gems will not, by default, run RDoc on packages
that do not have the RDoc flag set.
And finally there is a new library file 'gemconfigure' to aid in
writing version sensitive applications (without undue dependencies on
RubyGems); and 'gemwhich', a short script to locate libraries in the
file system. You can read more about them here:
* gemconfigure: http://docs.rubygems.org/read/chapter/4#page73
* gemwhich: http://docs.rubygems.org/read/chapter/17
=== 0.8.6 / 2005-02-27
* Fixed a small bug with shebang construction
=== 0.8.5 / 2005-02-26
Do you know how you used to dread getting the following message while
installing gems?
Updating Gem source index for: http://gems.rubyforge.org
It could take up to 30 seconds (on my machine, even worse on others) for
that crazy source index to update.
This latest release of RubyGems speeds that wait time up considerably.
The following table gives the following times for installing RedCloth
with a required source index update on three system we had available to
us. No RDoc generation was included in the following times.
RubyGems Linux Mac OSX Windows
0.8.4 33 secs 73 secs 58 secs
0.8.5 8 secs 14 secs 21 secs
The new caching code is at least 3x faster than previous versions. Woo
Hoo!
=== 0.8.4 / 2005-01-01
* Rubygems 0.8.3's installer was broken unless you already had an older
version of RubyGems installed. That's fixed.
* Change in the way Gem::Specification internally deals with lazy attributes
and defaults, bringing (with some loadpath_manager changes) a fairly
significant increase in speed.
* Support for lower-cased Gem file names (for you, Paul Duncan :)
* Erik Veenstra's patch for making Gem versions sortable.
=== 0.8.3 / 2004-12-07
No real earth shattering news here, but there were a number of really
annoying issues involving other libraries that RubyGems depends upon.
0.8.3 contains some workarounds for these issues. In particular:
* Added workaround for the null byte in Dir string issue. (see
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121702).
(Thanks to Mauricio Fernández for the quick response on this one).
* Added workaround for old version of Zlib on windows that caused
Ruwiki to fail to install. (see
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121770)
* Added workaround for large YAML file issues. (We dynamically cut
down the size of the source index YAML file and seem to have worked
around immediate issues.
There has been some minor usability enhancements and changes ...
* A user specific source index cache can be used when the site-wide
cache is unwritable (i.e. because you are running as a non-admin).
This *greatly* speeds up gem commands run in non-admin mode when the
site-wide cache is out of date.
* The gem command now used an HTTP HEAD command to detect if the
server's source index needs to be downloaed.
* gem check gemname --test will run unit tests on installed gems that
have unit tests.
* Multiple gem names are allowed on the gem install command line.
This means you can do:
gem install rake rails needle postgres-pr pimki
(Ok, you get the idea)
* Multiple authors my be specified in a Gem spec.
* Switched to using setup.rb (rather than a custom install script) for
the installation of RubyGems itself. If you have installed RubyGems
before, double check the installation instructions and make sure you
use setup.rb instead of install.rb.
* Ryan Davis has provided a patch so you can use an env variable
(GEM_SKIP), to tell loadpath_manager not to load gems of those
names. This was useful for him while testing libs that he had in
development.
=== 0.8.1 / 2009-09-14
* Quick release to capture some bug fixes.
=== 0.8.0 / 2009-09-12
* Remove need for library stubs. Set the RUBYOPT environment variable to
include "rrubygems", and a normal require will find gem files. Continue to
use 'require_gem gem_name, version' to specify gem versions.
* Deprecated "test_suite_file" gemspec attribute in favor of "test_files" array.
* Generates rdoc by default on installs.
* Adopted tar/gzip file format, thanks to Mauricio Fernandez.
* "gem rdoc" allows generation of rdoc after gem installation (will add a "gem
test"
* Application stubs can now accept an optional parameter of _VERSION_ that will
run an arbitrary version of the application requested.
* Various bug fixes
* Various platform-independency improvements
* "gem spec --all" displays spec info for all installed version of a given gem.
* Dynamic caching of sources
* Support for user-definable sources on the command line (thanks Assaph Mehr)
* More intelligent support for platform-dependent gems. Use Platform::CURRENT
when building a gem to set its platform to the one you're building on.
Installation displays a choice of platform-dependent gems, allowing the user
to pick.
* Added "gem unpack" for "unpacking" a gem to the current directory
=== 0.7.0 / 2004-07-09
See ChangeLog
=== 0.6.0 / 2004-06-08
* Collapse output of --search and --list (and gem_server) operations so that
each gem is listed only once, with each of its versions listed on the same
line.
* bin/gem: new --upgrade-all option allows one to upgrade every installed gem
* new #required_ruby_version attribute added to gem specification for
specifying a dependency on which version of ruby the gem needs. Format it
accepts is the same as the Gem::Version::Requirement format:
spec.required_ruby_version = "> 1.8.0"
* --install-stub defaults to true, so library stubs are created
=== 0.5.0 / 2004-06-06
* Jim added the ability to specify version constraints to avoid API
incompatibilities. This has been the subject of much debate for the past
couple of months, with many ideas and code contributed by Eivind Eklund and
Mauricio Fernandez. The following set of assertions shows how it works:
assert_inadequate("1.3", "~> 1.4")
assert_adequate( "1.4", "~> 1.4")
assert_adequate( "1.5", "~> 1.4")
assert_inadequate("2.0", "~> 1.4") # This one is key--the new operator
# disallows major version number
# differences.
* Group gem search output when multiple versions exist for a given gem:
activerecord (0.7.8, 0.7.7, 0.7.6, 0.7.5)
Implements the ActiveRecord pattern for ORM.
* Add arbitrary RDoc-able files via gemspec (not just Ruby source files) for
people who have, for example, README.rdoc in their distributions. Add to
gemspec via: spec.extra_rdoc_files = ["list", "of", "files"]. Ruby files are
automatically included.
* Some small bug fixes
=== 0.4.0 / 2004-05-31
* Minor bug fixes including Windows compatability issues
=== 0.3.0 / 2004-04-30
* Cleanup of command-line arguments and handling. Most commands accept a
--local or --remote modifier.
* Creation of Application Gems (packages that include executable programs).
See http://rubygems.rubyforge.org/wiki/wiki.pl?DeveloperGuide for information
on how to use it.
* Basic functionality for installing binary gems from source (:extensions
property of gem specification holds an array of paths to extconf.rb files to
be used for compilation)
* Install library "stub" allowing a normal 'require' to work (which then does
the rubygems require and 'require_gem'
* --run-tests runs the test suite specified by the "test_suite_file" property
of a gem specification
* HTTP Proxy support works. Rewrite of HTTP code.
* Unit and functional tests added (see Rakefile).
* Prompt before remote-installing dependencies during gem installation.
* Config file for storing preferences for 'gem' command usage.
* Generally improved error messages (still more work to do)
* Rearranged gem directory structure for cleanliness.
=== 0.2.0 / 2004-03-14
* Initial public release

53
doc/rubygems/LICENSE.txt Normal file
View file

@ -0,0 +1,53 @@
RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
Weirich and others. You can redistribute it and/or modify it under
either the terms of the GPL (see the GPL.txt file), or the conditions
below:
1. You may make and give away verbatim copies of the source form of the
software without restriction, provided that you duplicate all of the
original copyright notices and associated disclaimers.
2. You may modify your copy of the software in any way, provided that
you do at least ONE of the following:
a) place your modifications in the Public Domain or otherwise
make them Freely Available, such as by posting said
modifications to Usenet or an equivalent medium, or by allowing
the author to include your modifications in the software.
b) use the modified software only within your corporation or
organization.
c) rename any non-standard executables so the names do not conflict
with standard executables, which must also be provided.
d) make other distribution arrangements with the author.
3. You may distribute the software in object code or executable
form, provided that you do at least ONE of the following:
a) distribute the executables and library files of the software,
together with instructions (in the manual page or equivalent)
on where to get the original distribution.
b) accompany the distribution with the machine-readable source of
the software.
c) give non-standard executables non-standard names, with
instructions on where to get the original software distribution.
d) make other distribution arrangements with the author.
4. You may modify and include the part of the software into any other
software (possibly commercial).
5. The scripts and library files supplied as input to or produced as
output from the software do not automatically fall under the
copyright of the software, but belong to whomever generated them,
and may be sold commercially, and may be aggregated with this
software.
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.

40
doc/rubygems/README Normal file
View file

@ -0,0 +1,40 @@
= RubyGems
* http://rubygems.rubyforge.org/
* http://rubyforge.org/projects/rubygems
* http://rubygems.org/
== DESCRIPTION
RubyGems is a package management framework for Ruby.
This gem is an update for the RubyGems software. You must have an
installation of RubyGems before this update can be applied.
See Gem for information on RubyGems (or `ri Gem`)
To upgrade to the latest RubyGems, run:
$ gem install --system # you might need to be an administrator or root
NOTE: RubyGems 1.1 and 1.2 have problems upgrading when there is no
rubygems-update installed. You will need to use the following instructions
if you see "Nothing to update".
If you have an older version of RubyGems installed, then you can still
do it in two steps:
$ gem install rubygems-update # again, might need to be admin/root
$ update_rubygems # ... here too
If you don't have any RubyGems install, there is still the pre-gem approach to
getting software, doing it manually:
1. Download from: http://rubyforge.org/frs/?group_id=126
2. Unpack into a directory and cd there
3. Install with: ruby setup.rb # you may need admin/root privilege
For more details and other options, see:
ruby setup.rb --help

View file

@ -5,13 +5,14 @@
# See LICENSE.txt for permissions.
#++
require 'rubygems/rubygems_version'
require 'rubygems/defaults'
require 'thread'
require 'etc'
module Gem
RubyGemsVersion = VERSION = '1.3.5'
##
# Raised when RubyGems is unable to load or activate a gem. Contains the
# name and version requirements of the gem that either conflicts with
@ -381,7 +382,7 @@ module Gem
raise Gem::Exception, msg
end
File.join(spec.full_gem_path, spec.bindir, exec_name).sub(/.*\s.*/m, '"\&"')
File.join(spec.full_gem_path, spec.bindir, exec_name)
end
##

View file

@ -49,7 +49,7 @@ class Gem::Command
def self.build_args
@build_args ||= []
end
def self.build_args=(value)
@build_args = value
end
@ -197,7 +197,7 @@ class Gem::Command
# def usage
# "#{program_name} FILE [FILE ...]"
# end
#
#
# def arguments
# "FILE name of file to find"
# end

View file

@ -88,6 +88,8 @@ By default, this RubyGems will install gem as:
end
def execute
@verbose = Gem.configuration.really_verbose
install_destdir = options[:destdir]
unless install_destdir.empty? then
@ -113,22 +115,30 @@ By default, this RubyGems will install gem as:
remove_source_caches install_destdir
say "RubyGems #{Gem::VERSION} installed"
install_rdoc
say
say "-" * 78
say
release_notes = File.join Dir.pwd, 'doc', 'release_notes',
"rel_#{Gem::RubyGemsVersion.gsub '.', '_'}.rdoc"
if File.exist? release_notes then
say File.read(release_notes)
else
say "Oh-no! Unable to find release notes!"
say "Looked in: #{release_notes}" if Gem.configuration.really_verbose
if @verbose then
say "-" * 78
say
end
release_notes = File.join Dir.pwd, 'History.txt'
release_notes = if File.exist? release_notes then
open release_notes do |io|
text = io.gets '==='
text << io.gets('===')
text[0...-3]
end
else
"Oh-no! Unable to find release notes!"
end
say release_notes
say
say "-" * 78
say
@ -145,7 +155,7 @@ By default, this RubyGems will install gem as:
end
def install_executables(bin_dir)
say "Installing gem executable"
say "Installing gem executable" if @verbose
@bin_file_names = []
@ -203,7 +213,7 @@ TEXT
end
def install_lib(lib_dir)
say "Installing RubyGems"
say "Installing RubyGems" if @verbose
Dir.chdir 'lib' do
lib_files = Dir[File.join('**', '*rb')]
@ -226,23 +236,23 @@ TEXT
if File.writable? gem_doc_dir and
(not File.exist? rubygems_doc_dir or
File.writable? rubygems_doc_dir) then
say "Removing old RubyGems RDoc and ri"
say "Removing old RubyGems RDoc and ri" if @verbose
Dir[File.join(Gem.dir, 'doc', 'rubygems-[0-9]*')].each do |dir|
rm_rf dir
end
if options[:ri] then
ri_dir = File.join rubygems_doc_dir, 'ri'
say "Installing #{rubygems_name} ri into #{ri_dir}"
say "Installing #{rubygems_name} ri into #{ri_dir}" if @verbose
run_rdoc '--ri', '--op', ri_dir
end
if options[:rdoc] then
rdoc_dir = File.join rubygems_doc_dir, 'rdoc'
say "Installing #{rubygems_name} rdoc into #{rdoc_dir}"
say "Installing #{rubygems_name} rdoc into #{rdoc_dir}" if @verbose
run_rdoc '--op', rdoc_dir
end
else
elsif @verbose then
say "Skipping RDoc generation, #{gem_doc_dir} not writable"
say "Set the GEM_HOME environment variable if you want RDoc generated"
end
@ -327,7 +337,7 @@ abort "#{deprecation_message}"
system_cache_file = File.join(install_destdir,
Gem::SourceInfoCache.system_cache_file)
say "Removing old source_cache files"
say "Removing old source_cache files" if Gem.configuration.really_verbose
rm_f user_cache_file if File.writable? File.dirname(user_cache_file)
rm_f system_cache_file if File.writable? File.dirname(system_cache_file)
end

View file

@ -29,7 +29,7 @@ class Gem::Format
end
##
# Reads the named gem file and returns a Format object, representing
# Reads the named gem file and returns a Format object, representing
# the data from the gem file
#
# file_path:: [String] Path to the gem file

View file

@ -141,7 +141,7 @@ class Gem::Indexer
"Complete"
Gem.time 'Generated YAML quick index gemspecs' do
index.each do |original_name, spec|
index.released_gems.each do |original_name, spec|
spec_file_name = "#{original_name}.gemspec.rz"
yaml_name = File.join @quick_dir, spec_file_name
@ -221,7 +221,7 @@ class Gem::Indexer
files = []
Gem.time 'Generated Marshal quick index gemspecs' do
(index.gems.merge(index.prerelease_gems)).each do |original_name, spec|
index.gems.each do |original_name, spec|
spec_file_name = "#{original_name}.gemspec.rz"
marshal_name = File.join @quick_marshal_dir, spec_file_name
@ -275,7 +275,7 @@ class Gem::Indexer
# Builds indicies for RubyGems 1.2 and newer. Handles full, latest, prerelease
def build_modern_indicies(index)
build_modern_index(index.sort, @specs_index, 'specs')
build_modern_index(index.released_specs.sort, @specs_index, 'specs')
build_modern_index(index.latest_specs.sort,
@latest_specs_index,
'latest specs')
@ -534,7 +534,7 @@ class Gem::Indexer
FileUtils.rm_rf @directory
end
##
##
# Zlib::GzipWriter wrapper that gzips +filename+ on disk.
def gzip(filename)
@ -654,8 +654,8 @@ class Gem::Indexer
files = build_marshal_gemspecs index
Gem.time 'Updated indexes' do
update_specs_index index, @dest_specs_index, @specs_index
update_specs_index index, @dest_latest_specs_index, @latest_specs_index
update_specs_index index.released_gems, @dest_specs_index, @specs_index
update_specs_index index.released_gems, @dest_latest_specs_index, @latest_specs_index
update_specs_index(index.prerelease_gems, @dest_prerelease_specs_index,
@prerelease_specs_index)
end

View file

@ -41,7 +41,7 @@ require 'rake/packagetask'
#
# require 'rubygems'
# require 'rubygems/package_task'
#
#
# spec = Gem::Specification.new do |s|
# s.platform = Gem::Platform::RUBY
# s.summary = "Ruby based make-like utility."
@ -56,7 +56,7 @@ require 'rake/packagetask'
# and dependencies are specified in standard Ruby syntax.
# EOF
# end
#
#
# Gem::PackageTask.new(spec) do |pkg|
# pkg.need_zip = true
# pkg.need_tar = true

View file

@ -103,7 +103,7 @@ class Gem::Platform
def to_s
to_a.compact.join '-'
end
def empty?
to_s.empty?
end

View file

@ -218,7 +218,7 @@ require 'rubygems/gem_openssl'
#
# # signing key (still kept in an undisclosed location!)
# s.signing_key = '/mnt/floppy/alf-private_key.pem'
#
#
# # certificate chain (includes the issuer certificate now too)
# s.cert_chain = ['/home/alf/doc/seattlerb-public_cert.pem',
# '/home/alf/doc/alf_at_seattle-public_cert.pem']
@ -274,7 +274,7 @@ require 'rubygems/gem_openssl'
# # convert a PEM format X509 certificate into DER format:
# # (note: Windows .cer files are X509 certificates in DER format)
# $ openssl x509 -in input.pem -outform der -out output.der
#
#
# # print out the certificate in a human-readable format:
# $ openssl x509 -in input.pem -noout -text
#
@ -282,7 +282,7 @@ require 'rubygems/gem_openssl'
#
# # convert a PEM format RSA key into DER format:
# $ openssl rsa -in input_key.pem -outform der -out output_key.der
#
#
# # print out the key in a human readable format:
# $ openssl rsa -in input_key.pem -noout -text
#

View file

@ -30,7 +30,7 @@ class Gem::SourceIndex
include Gem::UserInteraction
attr_reader :gems, :prerelease_gems # :nodoc:
attr_reader :gems # :nodoc:
##
# Directories to use to refresh this SourceIndex when calling refresh!
@ -122,16 +122,22 @@ class Gem::SourceIndex
# #prerelease_gems
def initialize(specifications={})
@gems, @prerelease_gems = [{}, {}]
@gems = {}
specifications.each{ |full_name, spec| add_spec spec }
@spec_dirs = nil
end
##
# Both regular and prerelease gems
# TODO: remove method
def all_gems
@gems.merge @prerelease_gems
@gems
end
def prerelease_gems
@gems.reject{ |name, gem| !gem.version.prerelease? }
end
def released_gems
@gems.reject{ |name, gem| gem.version.prerelease? }
end
##
@ -153,8 +159,8 @@ class Gem::SourceIndex
end
##
# Returns an Array specifications for the latest versions of each gem in
# this index.
# Returns an Array specifications for the latest released versions
# of each gem in this index.
def latest_specs
result = Hash.new { |h,k| h[k] = [] }
@ -165,6 +171,7 @@ class Gem::SourceIndex
curr_ver = spec.version
prev_ver = latest.key?(name) ? latest[name].version : nil
next if curr_ver.prerelease?
next unless prev_ver.nil? or curr_ver >= prev_ver or
latest[name].platform != Gem::Platform::RUBY
@ -192,7 +199,14 @@ class Gem::SourceIndex
# An array including only the prerelease gemspecs
def prerelease_specs
@prerelease_gems.values
prerelease_gems.values
end
##
# An array including only the released gemspecs
def released_specs
released_gems.values
end
##
@ -201,11 +215,7 @@ class Gem::SourceIndex
def add_spec(gem_spec, name = gem_spec.full_name)
# No idea why, but the Indexer wants to insert them using original_name
# instead of full_name. So we make it an optional arg.
if gem_spec.version.prerelease?
@prerelease_gems[name] = gem_spec
else
@gems[name] = gem_spec
end
@gems[name] = gem_spec
end
##
@ -221,11 +231,7 @@ class Gem::SourceIndex
# Remove a gem specification named +full_name+.
def remove_spec(full_name)
if @gems.key? full_name then
@gems.delete full_name
else
@prerelease_gems.delete full_name
end
@gems.delete full_name
end
##
@ -408,7 +414,7 @@ class Gem::SourceIndex
end
def ==(other) # :nodoc:
self.class === other and @gems == other.gems
self.class === other and @gems == other.gems
end
def dump

View file

@ -286,7 +286,7 @@ class Gem::SourceInfoCache
next unless Gem.sources.include? source_uri
# TODO - Remove this gunk after 2008/11
unless pattern.kind_of?(Gem::Dependency)
pattern = Gem::Dependency.new(pattern, Gem::Requirement.default)
pattern = Gem::Dependency.new(pattern, Gem::Requirement.default)
end
sic_entry.source_index.search pattern, platform_only
end.flatten.compact
@ -306,7 +306,7 @@ class Gem::SourceInfoCache
# TODO - Remove this gunk after 2008/11
unless pattern.kind_of?(Gem::Dependency)
pattern = Gem::Dependency.new(pattern, Gem::Requirement.default)
pattern = Gem::Dependency.new(pattern, Gem::Requirement.default)
end
sic_entry.source_index.search(pattern, only_platform).each do |spec|

View file

@ -22,7 +22,7 @@ class Gem::SpecFetcher
attr_reader :latest_specs # :nodoc:
##
# Cache of all spces
# Cache of all released specs
attr_reader :specs # :nodoc:
@ -61,8 +61,9 @@ class Gem::SpecFetcher
##
# Fetch specs matching +dependency+. If +all+ is true, all matching
# versions are returned. If +matching_platform+ is false, all platforms are
# returned. If +prerelease+ is true, prerelease versions are included.
# (released) versions are returned. If +matching_platform+ is
# false, all platforms are returned. If +prerelease+ is true,
# prerelease versions are included.
def fetch(dependency, all = false, matching_platform = true, prerelease = false)
specs_and_sources = find_matching dependency, all, matching_platform, prerelease
@ -112,9 +113,9 @@ class Gem::SpecFetcher
end
##
# Find spec names that match +dependency+. If +all+ is true, all matching
# versions are returned. If +matching_platform+ is false, gems for all
# platforms are returned.
# Find spec names that match +dependency+. If +all+ is true, all
# matching released versions are returned. If +matching_platform+
# is false, gems for all platforms are returned.
def find_matching(dependency, all = false, matching_platform = true, prerelease = false)
found = {}
@ -161,7 +162,7 @@ class Gem::SpecFetcher
##
# Returns a list of gems available for each source in Gem::sources. If
# +all+ is true, all versions are returned instead of only latest
# +all+ is true, all released versions are returned instead of only latest
# versions. If +prerelease+ is true, include prerelease versions.
def list(all = false, prerelease = false)
@ -183,7 +184,7 @@ class Gem::SpecFetcher
cache = { :latest => @latest_specs,
:prerelease => @prerelease_specs,
:all => @specs }[type]
Gem.sources.each do |source_uri|
source_uri = URI.parse source_uri
@ -194,6 +195,12 @@ class Gem::SpecFetcher
list[source_uri] = cache[source_uri]
end
if type == :all
list.values.map do |gems|
gems.reject! { |g| g[1].prerelease? }
end
end
list
end

View file

@ -11,9 +11,9 @@ require 'rubygems/remote_fetcher'
# @fetcher = Gem::FakeFetcher.new
# @fetcher.data['http://gems.example.com/yaml'] = source_index.to_yaml
# Gem::RemoteFetcher.fetcher = @fetcher
#
#
# # invoke RubyGems code
#
#
# paths = @fetcher.paths
# assert_equal 'http://gems.example.com/yaml', paths.shift
# assert paths.empty?, paths.join(', ')

View file

@ -15,7 +15,7 @@ begin
Gem.activate('test-unit')
rescue Gem::LoadError
# Ignore - use the test-unit library that's part of the standard library
end
end
##
# Validator performs various gem file and gem database validation

View file

@ -166,7 +166,7 @@ class Gem::Version
def prerelease?
parts.any? { |part| part.alpha? }
end
##
# The release for this version (e.g. 1.2.0.a -> 1.2.0)
# Non-prerelease versions return themselves

View file

@ -35,7 +35,7 @@ class TarTestCase < RubyGemTestCase
linkname 100
magic 6
version 2
uname 32
uname 32
gname 32
devmajor 8
devminor 8
@ -54,7 +54,7 @@ class TarTestCase < RubyGemTestCase
next
end
assert_equal expected[offset, length], actual[offset, length],
assert_equal expected[offset, length], actual[offset, length],
"Field #{name} of the tar header differs."
offset += length

View file

@ -23,7 +23,7 @@ def install_session
puts
puts "with the appropriate admin privileges."
puts "*****************************************************************"
puts
puts
exit
end
gem 'session'

View file

@ -5,10 +5,10 @@
#++
SIMPLE_GEM = <<-GEMDATA
MD5SUM = "e3701f9db765a2358aef94c40ded71c8"
MD5SUM = "b12a4d48febeb2289c539c2574c4b6f8"
if $0 == __FILE__
require 'optparse'
options = {}
ARGV.options do |opts|
opts.on_tail("--help", "show this message") {puts opts; exit}
@ -19,45 +19,45 @@
end
require 'rubygems'
@directory = options[:directory] || Gem.dir
@directory = options[:directory] || Gem.dir
@force = options[:force]
gem = Gem::Installer.new(__FILE__).install(@force, @directory)
gem = Gem::Installer.new(__FILE__).install(@force, @directory)
if options[:gen_rdoc]
Gem::DocManager.new(gem).generate_rdoc
end
end
__END__
--- !ruby/object:Gem::Specification
--- !ruby/object:Gem::Specification
rubygems_version: "1.0"
name: testing
version: !ruby/object:Gem::Version
version: !ruby/object:Gem::Version
version: 1.2.3
date: 2004-03-18 22:01:52.859121 -05:00
platform:
platform:
summary: This exercise the gem testing stuff.
require_paths:
require_paths:
- lib
files:
files:
- lib/foo.rb
- lib/test
- lib/test.rb
- lib/test/wow.rb
autorequire: test
test_suite_file: foo
requirements:
requirements:
- a computer processor
---
-
---
-
size: 109
mode: 420
path: lib/foo.rb
-
-
size: 0
mode: 420
path: lib/test.rb
-
-
size: 15
mode: 420
path: lib/test/wow.rb

View file

@ -78,14 +78,6 @@ class TestGem < RubyGemTestCase
end
end
def test_self_bin_path_with_spaces
quick_gem 'sp ace', '3' do |s|
s.executables = ['exec']
end
path = Gem.bin_path('sp ace', 'exec')
assert_equal %w(" "), [path[0,1], path[-1,1]], "Path should be escaped"
end
def test_self_bin_path_not_found
assert_raises(Gem::GemNotFoundException) do
Gem.bin_path('non-existent')
@ -449,7 +441,7 @@ class TestGem < RubyGemTestCase
def test_self_refresh
util_make_gems
a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
FileUtils.mv a1_spec, @tempdir

View file

@ -43,6 +43,8 @@ Gem a-1
Gem a-2
Gem a-3.a
Gem a_evil-9
Gem b-2
@ -100,6 +102,8 @@ Gem a-1
Gem a-2
Gem a-3.a
Gem a_evil-9
Gem b-2

View file

@ -57,5 +57,25 @@ class TestGemCommandsUninstallCommand < GemInstallerTestCase
assert_empty output, "UI output should be empty after an uninstall error"
end
def test_execute_prerelease
@spec = quick_gem "pre", "2.b"
@gem = File.join @tempdir, "#{@spec.full_name}.gem"
FileUtils.touch @gem
util_setup_gem
use_ui @ui do
@installer.install
end
@cmd.options[:args] = ["pre"]
use_ui @ui do
@cmd.execute
end
output = @ui.output
assert_match(/Successfully uninstalled/, output)
end
end

0
test/rubygems/test_gem_digest.rb Executable file → Normal file
View file

View file

@ -18,7 +18,7 @@ class TestGemDocManager < RubyGemTestCase
def test_uninstall_doc_unwritable
orig_mode = File.stat(@spec.installation_path).mode
# File.chmod has no effect on MS Windows directories (it needs ACL).
if win_platform?
skip("test_uninstall_doc_unwritable skipped on MS Windows")

View file

@ -9,7 +9,7 @@ require_relative 'gemutilities'
require 'rubygems/indexer'
unless ''.respond_to? :to_xs then
warn "Gem::Indexer tests are being skipped. Install builder gem."
warn "Gem::Indexer tests are being skipped. Install builder gem." if $VERBOSE
end
class TestGemIndexer < RubyGemTestCase
@ -118,10 +118,13 @@ class TestGemIndexer < RubyGemTestCase
expected = <<-EOF
a-1
a-2
a-3.a
a_evil-9
b-2
c-1.2
d-2.0
d-2.0.a
d-2.0.b
pl-1-i386-linux
EOF
@ -163,13 +166,13 @@ pl-1-i386-linux
assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
expected = <<-EOF
<?xml version="1.0"?>
<rss version="2.0">
<?xml version=\"1.0\"?>
<rss version=\"2.0\">
<channel>
<title>ExampleForge gems</title>
<link>http://example.com</link>
<description>Recently released gems from http://example.com</description>
<generator>RubyGems v#{Gem::RubyGemsVersion}</generator>
<generator>RubyGems v1.3.4</generator>
<docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
<item>
<title>a-2</title>
@ -178,9 +181,21 @@ pl-1-i386-linux
</description>
<author>example@example.com (A User)</author>
<guid>a-2</guid>
<enclosure url="http://gems.example.com/gems/a-2.gem"
length="3072" type="application/octet-stream" />
<pubDate>#{Gem::Specification::TODAY.rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/a-2.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@a2.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
<title>a-3.a</title>
<description>
&lt;pre&gt;This is a test description&lt;/pre&gt;
</description>
<author>example@example.com (A User)</author>
<guid>a-3.a</guid>
<enclosure url=\"http://gems.example.com/gems/a-3.a.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@a3a.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
@ -190,9 +205,9 @@ pl-1-i386-linux
</description>
<author>example@example.com (A User)</author>
<guid>a_evil-9</guid>
<enclosure url="http://gems.example.com/gems/a_evil-9.gem"
length="3072" type="application/octet-stream" />
<pubDate>#{Gem::Specification::TODAY.rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/a_evil-9.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@a_evil9.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
@ -202,9 +217,9 @@ pl-1-i386-linux
</description>
<author>example@example.com (A User)</author>
<guid>b-2</guid>
<enclosure url="http://gems.example.com/gems/b-2.gem"
length="3072" type="application/octet-stream" />
<pubDate>#{Gem::Specification::TODAY.rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/b-2.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@b2.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
@ -214,9 +229,33 @@ pl-1-i386-linux
</description>
<author>example@example.com (A User)</author>
<guid>c-1.2</guid>
<enclosure url="http://gems.example.com/gems/c-1.2.gem"
length="3072" type="application/octet-stream" />
<pubDate>#{Gem::Specification::TODAY.rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/c-1.2.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@c1_2.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
<title>d-2.0.a</title>
<description>
&lt;pre&gt;This is a test description&lt;/pre&gt;
</description>
<author>example@example.com (A User)</author>
<guid>d-2.0.a</guid>
<enclosure url=\"http://gems.example.com/gems/d-2.0.a.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@d2_0_a.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
<title>d-2.0.b</title>
<description>
&lt;pre&gt;This is a test description&lt;/pre&gt;
</description>
<author>example@example.com (A User)</author>
<guid>d-2.0.b</guid>
<enclosure url=\"http://gems.example.com/gems/d-2.0.b.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@d2_0_b.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
@ -226,9 +265,9 @@ pl-1-i386-linux
</description>
<author>example@example.com (A User)</author>
<guid>pl-1-x86-linux</guid>
<enclosure url="http://gems.example.com/gems/pl-1-x86-linux.gem"
length="3072" type="application/octet-stream" />
<pubDate>#{Gem::Specification::TODAY.rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/pl-1-x86-linux.gem\"
length=\"3072\" type=\"application/octet-stream\" />
<pubDate>#{@pl1.date.rfc2822}</pubDate>
<link>http://example.com</link>
</item>
<item>
@ -247,9 +286,9 @@ eighty characters.&lt;/pre&gt;
</description>
<author>example@example.com (Example), example2@example.com (Example2)</author>
<guid>a-1</guid>
<enclosure url="http://gems.example.com/gems/a-1.gem"
length="3584" type="application/octet-stream" />
<pubDate>#{(Gem::Specification::TODAY - 86400).rfc2822}</pubDate>
<enclosure url=\"http://gems.example.com/gems/a-1.gem\"
length=\"3584\" type=\"application/octet-stream\" />
<pubDate>#{@a1.date.rfc2822}</pubDate>
<link>http://a.example.com</link>
</item>
</channel>
@ -462,9 +501,9 @@ eighty characters.&lt;/pre&gt;
@ui.output
assert_match %r%^\.\.\.\.\.\.\.\.\.\.$%, @ui.output
assert_match %r%^Loaded all gems$%, @ui.output
assert_match %r%^Generating Marshal quick index gemspecs for 7 gems$%,
assert_match %r%^Generating Marshal quick index gemspecs for 10 gems$%,
@ui.output
assert_match %r%^Generating YAML quick index gemspecs for 7 gems$%,
assert_match %r%^Generating YAML quick index gemspecs for 10 gems$%,
@ui.output
assert_match %r%^Complete$%, @ui.output
assert_match %r%^Generating specs index$%, @ui.output
@ -473,7 +512,7 @@ eighty characters.&lt;/pre&gt;
assert_match %r%^Generating latest index$%, @ui.output
assert_match %r%^Generating prerelease specs index$%, @ui.output
assert_match %r%^Generating Marshal master index$%, @ui.output
assert_match %r%^Generating YAML master index for 7 gems \(this may take a while\)$%, @ui.output
assert_match %r%^Generating YAML master index for 10 gems \(this may take a while\)$%, @ui.output
assert_match %r%^Complete$%, @ui.output
assert_match %r%^Compressing indicies$%, @ui.output

View file

@ -47,7 +47,7 @@ class TestGemPackageTarInput < TarTestCase
meta = @spec.to_yaml
f.write tar_file_header("metadata", "", 0644, meta.size)
f.write meta + "\0" * (1024 - meta.size)
f.write meta + "\0" * (1024 - meta.size)
f.write "\0" * 1024
end

View file

@ -45,7 +45,7 @@ class TestTarWriter < TarTestCase
def test_add_file_simple_padding
@tar_writer.add_file_simple 'x', 0, 100
assert_headers_equal tar_file_header('x', '', 0, 100),
assert_headers_equal tar_file_header('x', '', 0, 100),
@io.string[0, 512]
assert_equal "\0" * 512, @io.string[512, 512]
@ -60,7 +60,7 @@ class TestTarWriter < TarTestCase
end
def test_add_file_simple_size
assert_raises Gem::Package::TarWriter::FileOverflow do
assert_raises Gem::Package::TarWriter::FileOverflow do
@tar_writer.add_file_simple("lib/foo/bar", 0, 10) do |io|
io.write "1" * 11
end
@ -68,7 +68,7 @@ class TestTarWriter < TarTestCase
end
def test_add_file_unseekable
assert_raises Gem::Package::NonSeekableIO do
assert_raises Gem::Package::NonSeekableIO do
Gem::Package::TarWriter.new(Object.new).add_file 'x', 0
end
end

View file

@ -335,14 +335,12 @@ WARNING: Invalid .gemspec format in '#{spec_file}'
@source_index.add_spec gem_a1_alpha
refute @source_index.latest_specs.include?(gem_a1_alpha)
assert_nil @source_index.specification(gem_a1_alpha.full_name)
assert @source_index.find_name(gem_a1_alpha.full_name).empty?
assert @source_index.prerelease_specs.include?(gem_a1_alpha)
# TODO: don't think this tests writing prerelease index to disk
end
def test_refresh_bang
a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
a1_spec = File.join @gemhome, "specifications", "#{@a1.full_name}.gemspec"
FileUtils.mv a1_spec, @tempdir

View file

@ -45,6 +45,8 @@ class TestGemSpecFetcher < RubyGemTestCase
util_zip(Marshal.dump(@a2))
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.full_name}.gemspec.rz"] =
util_zip(Marshal.dump(@a_pre))
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a3a.full_name}.gemspec.rz"] =
util_zip(Marshal.dump(@a3a))
dep = Gem::Dependency.new 'a', 1
specs_and_sources = @sf.fetch dep, true
@ -273,7 +275,12 @@ RubyGems will revert to legacy indexes degrading performance.
assert_equal [@uri], specs.keys
assert_equal @specs, specs[@uri].sort
assert_equal([["a", Gem::Version.new("1"), "ruby"],
["a", Gem::Version.new("2"), "ruby"],
["a_evil", Gem::Version.new("9"), "ruby"],
["c", Gem::Version.new("1.2"), "ruby"],
["pl", Gem::Version.new("1"), "i386-linux"]],
specs[@uri].sort)
end
def test_list_cache
@ -307,7 +314,12 @@ RubyGems will revert to legacy indexes degrading performance.
specs = @sf.list true
assert_equal [@specs], specs.values, 'specs file not loaded'
assert_equal([[["a", Gem::Version.new("1"), "ruby"],
["a", Gem::Version.new("2"), "ruby"],
["a_evil", Gem::Version.new("9"), "ruby"],
["c", Gem::Version.new("1.2"), "ruby"],
["pl", Gem::Version.new("1"), "i386-linux"]]],
specs.values, 'specs file not loaded')
end
def test_list_prerelease
@ -320,8 +332,10 @@ RubyGems will revert to legacy indexes degrading performance.
specs = @sf.load_specs @uri, 'specs'
expected = [
['a', Gem::Version.new('1.a'), Gem::Platform::RUBY],
['a', Gem::Version.new(1), Gem::Platform::RUBY],
['a', Gem::Version.new(2), Gem::Platform::RUBY],
['a', Gem::Version.new('3.a'), Gem::Platform::RUBY],
['a_evil', Gem::Version.new(9), Gem::Platform::RUBY],
['c', Gem::Version.new('1.2'), Gem::Platform::RUBY],
['pl', Gem::Version.new(1), 'i386-linux'],

View file

@ -566,7 +566,7 @@ end
'i386-mswin32_80' => 'a-1-x86-mswin32-80',
'i386-mingw32' => 'a-1-x86-mingw32'
}
test_cases.each do |arch, expected|
util_set_arch arch
@a1.platform = 'current'

View file

@ -199,7 +199,7 @@ class TestGemVersion < RubyGemTestCase
refute Gem::Version.new('2.9').prerelease?
refute Gem::Version.new('22.1.50.0').prerelease?
end
def test_release
assert_equal Gem::Version.new('1.2.0'), Gem::Version.new('1.2.0.a').release
assert_equal Gem::Version.new('1.1'), Gem::Version.new('1.1.rc10').release
@ -219,7 +219,7 @@ class TestGemVersion < RubyGemTestCase
assert_adequate( "1.4.5", "~> 1.4.4")
assert_inadequate("1.5", "~> 1.4.4")
assert_inadequate("2.0", "~> 1.4.4")
assert_inadequate("1.1.pre", "~> 1.0.0")
assert_adequate( "1.1.pre", "~> 1.1")
assert_inadequate("2.0.a", "~> 1.0")