Skip to content

Commit

Permalink
Merge pull request nvm-sh#150 from tlevine/master
Browse files Browse the repository at this point in the history
I added tests.
  • Loading branch information
creationix committed Oct 11, 2012
2 parents d8713bb + a27d391 commit eea0b05
Show file tree
Hide file tree
Showing 17 changed files with 149 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Expand Up @@ -2,3 +2,7 @@ HEAD
src
v*
alias

# For testing
bak
.urchin.log
24 changes: 24 additions & 0 deletions README.markdown
Expand Up @@ -57,6 +57,30 @@ The above copyright notice and this permission notice shall be included in all c

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

## Running tests
Tests are written in [Urchin](http://www.urchin.sh). Install Urchin like so.

wget -O /usr/local/bin https://raw.github.com/scraperwiki/urchin/0c6837cfbdd0963903bf0463b05160c2aecc22ef/urchin
chmod +x /usr/local/bin/urchin

(Or put it some other place in your PATH.)

There are slow tests and fast tests. The slow tests do things like install node
and check that the right versions are used. The fast tests fake this to test
things like aliases and uninstalling. From the root of the nvm git repository,
run the fast tests like this.

urchin test/fast

Run the slow tests like this.

urchin test/slow

Run all of the tests like this

urchin test

Nota bene: Avoid running nvm while the tests are running.

## Bash completion

Expand Down
@@ -0,0 +1,4 @@
#!/bin/sh

. ../../../nvm.sh
[ $(nvm alias test1 | wc -l) = '2' ]
@@ -0,0 +1,4 @@
#!/bin/sh

. ../../../nvm.sh
[ $(nvm alias | wc -l) = '10' ]
6 changes: 6 additions & 0 deletions test/fast/Aliases/setup_dir
@@ -0,0 +1,6 @@
#!/bin/sh

for i in $(seq 1 10)
do
echo v0.0.$i > ../../../alias/test$i
done
@@ -0,0 +1,10 @@
#!/bin/sh

mkdir ../../../v0.1.3
mkdir ../../../v0.2.3

. ../../../nvm.sh

# The result should contain only the appropriate version numbers.
nvm ls 0.2 | grep v0.2.3 &&
nvm ls 0.1 | grep -v v0.2.3
@@ -0,0 +1,14 @@
#!/bin/sh

. ../../../nvm.sh

mkdir ../../../v0.0.{1,3,9}
mkdir ../../../v0.3.{1,3,9}

# The result should contain the version numbers.
nvm ls | grep v0.0.1 &&
nvm ls | grep v0.0.3 &&
nvm ls | grep v0.0.9 &&
nvm ls | grep v0.3.1 &&
nvm ls | grep v0.3.3 &&
nvm ls | grep v0.3.9
@@ -0,0 +1,5 @@
#!/bin/sh

. ../../nvm.sh
nvm alias test v0.1.2
[ $(cat ../../alias/test) = 'v0.1.2' ]
@@ -0,0 +1,6 @@
#!/bin/sh

. ../../nvm.sh
nvm &&
nvm deactivate &&
! nvm
6 changes: 6 additions & 0 deletions test/fast/Running "nvm unalias" should remove the alias file.
@@ -0,0 +1,6 @@
#!/bin/sh

echo v0.1.2 > ../../alias/test
. ../../nvm.sh
nvm unalias test
! [ -e ../../alias/test ]
@@ -0,0 +1,10 @@
#!/bin/sh

cd ../..
mkdir v0.0.1
mkdir src/node-v0.0.1

. ./nvm.sh
nvm uninstall v0.0.1

[ ! -d 'v0.0.1' ] && [ ! -d 'src/node-v0.0.1' ]
@@ -0,0 +1,4 @@
#!/bin/sh

. ../../nvm.sh
nvm
9 changes: 9 additions & 0 deletions test/fast/setup
@@ -0,0 +1,9 @@
#!/bin/sh

(
cd ../..

# Back up
rm -Rf v* src alias
mkdir src alias
)
9 changes: 9 additions & 0 deletions test/fast/setup_dir
@@ -0,0 +1,9 @@
#!/bin/sh

(
cd ../..

# Back up
mkdir -p bak
mv v* src alias bak || sleep 0s
)
7 changes: 7 additions & 0 deletions test/fast/teardown
@@ -0,0 +1,7 @@
#!/bin/sh

# Remove temporary files
(
cd ../..
rm -fR v* src alias
)
13 changes: 13 additions & 0 deletions test/fast/teardown_dir
@@ -0,0 +1,13 @@
#!/bin/sh

(
cd ../..

# Restore
if [ -d bak ]
then
mv bak/* . || sleep 0s
rmdir bak
fi
mkdir -p src alias
)
14 changes: 14 additions & 0 deletions test/slow/install
@@ -0,0 +1,14 @@
#!/bin/sh

set -e
. ../../nvm.sh

# Remove the stuff we're clobbering.
[ -e ../../v0.6.14 ] && rm -R ../../v0.6.14

# Install
nvm install 0.6.14

# Check
[ -d ../../v0.6.14 ]
nvm run v0.6.14 --version | grep v0.6.14

0 comments on commit eea0b05

Please sign in to comment.