To run all of the optional doctests, regardless of their modifiers, we
can use
sage -t -only-optional
Most machines do not have all of the optional packages installed, so
it may be more useful to target a particular package:
sage -t --only-optional=xyz
But this could still skip some xyz-only tests, if their doctesting
directives contain unnecessary modifiers.
I did a search for doctests with '#optional' tags:
cd /path/to/sage-4.5.3.alpha1/devel/sage
grep "sage:" `find doc sage -name \*.px\* -o -name \*.py\* -o -name
\*.rst -o -name \*.sage` | grep "#" | cut -d '#' -f 2- | sed 's/^[
\t]*//' | sed 's/[ \t]*$//' | grep optional | sort | uniq -c | sort -nr
599 optional
523 optional - magma
176 optional - qepcad
111 optional - axiom
110 optional - maple
96 optional - scilab
94 optional -- kash
88 optional - gap3
74 optional - mathematica
53 optional -- requires Octave
51 optional - mupad
49 optional - fricas
31 requires optional database_gap
27 optional - CHomP
25 optional - mupad-Combinat
23 optional - stein_watkins_database
20 requires optional GAP package Guava
19 optional - database_cremona_ellcurve
18 optional - internet
16 optional -- requires maple
16 optional -- requires LiE
15 optional -- souvigner
14 optional - jones_database
14 optional - gap_packages
13 requires optional gap package 'design'
13 optional requires database_symbolic_data
13 optional - database_gap
12 optional -- requires convert command
12 optional -- internet
12 optional -- gcc
11 optional - macaulay2
9 optional -- magma
7 random, optional - magma
7 optional: needs polymake
7 optional - dot2tex, graphviz
7 optional - database_cremona_ellcurves
6 requires optional package
6 requires optional database
6 optional - sloane_database
5 random; optional -- internet
4 requires internet, optional
4 optional -- rgraphics
4 optional -- requires mathematica
4 optional -- requires mathematica
4 optional - requires maple
4 optional -- requires internet
4 optional - latex
4 optional -- fortran
4 optional database_gap
3 random output # optional
3 random, optional - qepcad
3 optional - requires matlab
3 optional -- requires maple
3 optional - requires internet
3 optional - requires GLPK or COIN-OR/CBC
3 optional - requires dot2tex and graphviz
3 optional, needs lrs package installed
3 optional - matlab
2 requires the optional nauty package
2 requires optional octave
2 requires optional database_gap package
2 requires optional database_gap # long time
2 requires optional database_gap # indirect doctest
2 random; optional - maple
2 optional - scilab and not tested
2 optional -- requires Octave; random output
2 optional -- requires Maple
2 optional -- requires lie package
2 optional requires dot2tex
2 optional - requires dot2tex
2 optional -- pops up a window.
2 optional matlab package
2 optional - kash
2 optional (indirect doctest)
2 optional - gap_design
2 optional - gap3chevie
2 optional - cunningham
2 optional - CPLEX
2 optional - CBC
2 n�cessite le paquet facultatif database_gap (optional)
2 long time # optional - CHomP
2 long time and requires optional GAP package Guava
2 indirect doctest; optional - magma
2 implicit doctest; optional - magma
2 brackets are optional
1 We remove the file for doctesting; optional -- rgraphics
1 We remove the file for doctesting, not needed in notebook;
optional -- rgraphics
1 uses the sieve (optional: time doesn't work on cygwin)
1 use sets to ignore order #optional
1 This saves to filename, but is not viewable from command line;
optional -- rgraphics
1 ten thousand character string. # optional - magma
1 Steiner surface optional - surf
1 somewhat randomly ordered output; optional - maple
1 somewhat random and optional - kash
1 solves linear equation: a*c = b # optional -- requires Octave;
random output
1 sets foo to 0 in magma; optional - magma
1 same magma object, now prints as x; optional - magma
1 same code, from a different angle optional - surf
1 # sage: X = kash.help('IntegerRing') # needs
optional kash package
1 # sage: upper # optional
1 # sage: text # optional
1 sage: R(h) # optional
1 sage: R(h^20) == f^20 # optional
1 sage: macaulay2(R) # optional, requires M2
1 # sage: lower, upper, text = linear_code_bound(7, 32, 8)
# optional -- needs internet
1 # sage: lower # optional
1 # sage: linear_code_bound(9, 32, 200) #
optional -- needs internet
1 sage: h = f._macaulay2_() # optional
1 sage: C.minimum_distance_why() # optional (net connection)
1 sage: C.minimum_distance_why() # optional (net connection)
1 sage: C.minimum_distance_upper_bound() # optional (net connection)
1 sage: C.minimum_distance_upper_bound() # optional (net connection)
1 sage1 below somewhat random; optional -- kash
1 # requires optional octave
1 requires optional matlab
1 requires optional GAP database package
1 requires optional database_gap#
1 random output (optional -- requires time command)
1 random, optional -- requires MuPAD
1 random optional matlab package
1 random; optional - magma
1 random; optional - internet
1 random, optional - gap3
1 random #optional - gap3
1 random #optional - gap3
1 random #optional - gap3
1 random #optional - gap3
1 random, optional
1 random and optional
1 plot should appear; optional -- rgraphics
1 output somewhat random; optional -- kash
1 optional -- you must have phc install
1 optional -- to reset maple.
1 optional - scilab; random output
1 optional - scilab (indirect doctest)
1 optional -- requires time command
1 optional -- requires the internet
1 optional requires the Hmisc R package
1 optional -- requires precomputing "sympow('-new_data 2')"
1 optional - requires precomputing "sympow('-new_data 2')"
1 optional -- requires precomputations
1 optional -- requires Octave; random output depending on version
1 optional -- requires Octave (and output is slightly random in
low order bits)
1 optional -- requires Octave; and output is random
1 optional -- requires Octave, < 1/100th of a second
1 optional -- requires MuPAD
1 optional requires maple
1 optional, requires M2
1 optional requires internet connection
1 optional requires internet
1 optional -- requires gnuplot (not tested, since something pops up).
1 optional -- requires Gap optional databases
1 optional requires database_hohel
1 optional requires database_gap
1 optional -- requires database
1 optional -- requires Axiom
1 optional; random output
1 optional random
1 optional - qepcad
1 optional octave required
1 optional (normally use plot here)
1 optional - mupad # note: the order of the result seems to depend
on the version of MuPAD / MuPAD-Combinat
1 optional -- mupad
1 optional magma required
1 optional - magma, database_gap
1 optional - magma, , database_gap
1 optional: magma
1 optional- macaulay2
1 optional - macaulay2
1 optional Kohel database required
1 optional (internet connection)
1 optional, indirect doctest
1 optional fricas
1 optional - cremona
1 optional --- conductor is greater than 10000
1 optional - axiom
1 optional axiom
1 optional and randomly growing.
1 optional and not tested
1 Note the double quotes in single quotes!; optional -- rgraphics
1 new magma session; optional - magma
1 name sage34 below random; optional -- kash
1 name sage32 below random; optional -- kash
1 name sage2 below somewhat random; optional -- kash
1 name sage14 random; optional -- kash
1 name sage14 below random; optional -- kash
1 magma >= v2.12; optional - magma
1 long (10 seconds); optional - magma
1 indirect doctest # requires optional database_gap
1 indirect doctest # optional - mupad
1 (indirect doctest) optional - magma
1 indirect doctest; optional - macaulay2
1 indirect doctest, optional - CHomP
1 For doctesting, we remove the file; optional -- rgraphics
1 filename not needed in notebook, used for doctesting; optional
-- rgraphics
1 a cone optional - surf
According to the doctesting conventions section of the developer's guide
[1],
"""
Any text after 'optional' is interpreted as a package name. Therefore if
the doctest is marked 'optional: requires chomp', then 'requires' is viewed
as a package name, so the test would only be run by either 'sage -t
--optional f.py' or 'sage -t --only-optional=requires,chomp f.py'.
"""