@@ -0,0 +1,1354 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4%0A%0A#    Licensed under the Apache License, Version 2.0 (the %22License%22); you may%0A#    not use this file except in compliance with the License. You may obtain%0A#    a copy of the License at%0A#%0A#         http://www.apache.org/licenses/LICENSE-2.0%0A#%0A#    Unless required by applicable law or agreed to in writing, software%0A#    distributed under the License is distributed on an %22AS IS%22 BASIS, WITHOUT%0A#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the%0A#    License for the specific language governing permissions and limitations%0A#    under the License.%0A%0A%0Afrom nose.plugins.attrib import attr%0Aimport unittest%0Aimport heat%0Aimport os%0Aimport subprocess%0A%0Abasepath = os.path.join(heat.__path__%5B0%5D, os.path.pardir)%0A%0A%0A@attr(tag=%5B'unit', 'cli'%5D)%0A@attr(speed='medium')%0Aclass CliTest(unittest.TestCase):%0A%0A    def test_bins(self):%0A        bins = %5B'heat-cfn', 'heat-boto', 'heat-watch'%5D%0A%0A        for bin in bins:%0A            fullpath = basepath + '/bin/' + bin%0A%0A            proc = subprocess.Popen(fullpath,%0A                stdout=subprocess.PIPE, stderr=subprocess.PIPE)%0A            stdout, stderr = proc.communicate()%0A%0A            if proc.returncode:%0A                print 'Error executing %25s:%5Cn %25s %25s ' %25 (bin, stdout, stderr)%0A                raise subprocess.CalledProcessError(proc.returncode, bin)%0A

Add test to simply run a few binaries