appveyor CI script
diff --git a/.appveyor.yml b/.appveyor.yml
new file mode 100644
index 0000000..7b309b3
--- /dev/null
+++ b/.appveyor.yml
@@ -0,0 +1,16 @@
+version: 1.0.{build}
+os: Visual Studio 2015
+clone_folder: C:\projects\pybind11
+branches:
+  only:
+    - master
+install:
+  - cinstall: python
+build_script:
+  - echo Running cmake...
+  - cd c:\projects\pybind11
+  - cmake -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR:PATH=C:/Python34-x64/include -DPYTHON_LIBRARY:FILEPATH=C:/Python34-x64/libs/python34.lib -DPYTHON_EXECUTABLE:FILEPATH=C:/Python34-x64/python.exe
+  - set MSBuildLogger="C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
+  - set MSBuildOptions=/v:m /p:Configuration=Release /logger:%MSBuildLogger%
+  - msbuild %MSBuildOptions% pybind11.sln
+  - ctest -C "Release"
diff --git a/README.md b/README.md
index 0898605..46f68c2 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,9 @@
 
 # pybind11 — Seamless operability between C++11 and Python
 
-[![Build Status](https://travis-ci.org/wjakob/pybind11.svg?branch=master)](https://travis-ci.org/wjakob/pybind11)
 [![Documentation Status](https://readthedocs.org/projects/pybind11/badge/?version=latest)](http://pybind11.readthedocs.org/en/latest/?badge=latest)
+[![Build Status](https://travis-ci.org/wjakob/pybind11.svg?branch=master)](https://travis-ci.org/wjakob/pybind11)
+[![Build status](https://ci.appveyor.com/api/projects/status/rfbxqkgxkcrxdu0f?svg=true)](https://ci.appveyor.com/project/wjakob/pybind11)
 
 **pybind11** is a lightweight header-only library that exposes C++ types in Python
 and vice versa, mainly to create Python bindings of existing C++ code. Its
diff --git a/example/example10.py b/example/example10.py
index 96cf9b0..4b01f81 100755
--- a/example/example10.py
+++ b/example/example10.py
@@ -4,7 +4,11 @@
 sys.path.append('.')
 
 import example
-import numpy as np
+try:
+    import numpy as np
+except ImportError:
+    print('NumPy missing')
+    exit(0)
 
 from example import vectorized_func
 from example import vectorized_func2
diff --git a/example/example7.py b/example/example7.py
index 3bfddb0..62d3301 100755
--- a/example/example7.py
+++ b/example/example7.py
@@ -4,7 +4,12 @@
 sys.path.append('.')
 
 from example import Matrix
-import numpy as np
+
+try:
+    import numpy as np
+except ImportError:
+    print('NumPy missing')
+    exit(0)
 
 m = Matrix(5, 5)
 
diff --git a/example/run_test.py b/example/run_test.py
index 294d031..fcfce14 100755
--- a/example/run_test.py
+++ b/example/run_test.py
@@ -25,7 +25,8 @@
         line = line.strip()
         if sys.platform == 'win32':
             lower = line.lower()
-            if 'constructor' in lower or 'destructor' in lower or 'ref' in lower:
+            if 'constructor' in lower or 'destructor' in lower \
+               or 'ref' in lower:
                 line = ""
         lines[i] = line
 
@@ -40,11 +41,16 @@
     os.chdir(path)
 
 name = sys.argv[1]
-output_bytes = subprocess.check_output([sys.executable, name + ".py"])
+output_bytes = subprocess.check_output([sys.executable, name + ".py"],
+                                       stderr=subprocess.STDOUT)
+
 output    = sanitize(output_bytes.decode('utf-8'))
 reference = sanitize(open(name + '.ref', 'r').read())
 
-if output == reference:
+if 'NumPy missing' in output:
+    print('Test "%s" could not be run.' % name)
+    exit(0)
+elif output == reference:
     print('Test "%s" succeeded.' % name)
     exit(0)
 else: