Chromium Code Reviews| Index: ports/devenv/tests/demo2014_test.js |
| diff --git a/ports/devenv/tests/demo2014_test.js b/ports/devenv/tests/demo2014_test.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..682da40679a725eca6191d9a7c205ff22db3a06a |
| --- /dev/null |
| +++ b/ports/devenv/tests/demo2014_test.js |
| @@ -0,0 +1,138 @@ |
| +/* |
|
binji
2016/03/11 19:30:39
huh, why wasn't this detected as a copy?
bradnelson
2016/03/11 23:26:11
Dunno, too many little changes.
|
| + * Copyright (c) 2014 The Native Client Authors. All rights reserved. |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +/* globals TEST_F, ASSERT_EQ, ASSERT_TRUE, chrometest, DevEnvTest */ |
| + |
| +'use strict'; |
| + |
| +// Install the default packages. |
| +// This test must be run before any tests that use these packages. |
| +TEST_F(DevEnvTest, 'testDefaultPackageInstall', function() { |
| + var self = this; |
| + return Promise.resolve().then(function() { |
| + return self.installDefaultPackages(); |
| + }); |
| +}); |
| + |
| +// Test of the Google I/O 2014 tutorial at: |
| +// https://developer.chrome.com/native-client/io2014 |
| +TEST_F(DevEnvTest, 'testIO2014', function() { |
| + var self = this; |
| + var pid; |
| + var bashrc = 'git config --global user.name "John Doe"\n' + |
| + 'git config --global user.email johndoe@example.com\n'; |
| + return Promise.resolve().then(function() { |
| + return self.initFileSystem(); |
| + }).then(function() { |
| + return self.writeFile('/home/user/.bashrc', bashrc); |
| + }).then(function() { |
| + return self.checkCommand('source ~/.bashrc'); |
| + }).then(function() { |
| + return self.checkCommand('mkdir work'); |
| + }).then(function() { |
| + return self.checkCommand( |
| + 'cd work && ' + |
| + 'curl http://nacltools.storage.googleapis.com/io2014/voronoi.zip -O'); |
| + }).then(function() { |
| + return self.checkCommand('cd work && ls', 0, 'voronoi.zip\n'); |
| + }).then(function() { |
| + return self.checkCommand('cd work && unzip voronoi.zip'); |
| + }).then(function() { |
| + return self.checkCommand('cd work/voronoi && ls Makefile', 0, 'Makefile\n'); |
| + }).then(function() { |
| + return self.checkCommand('cd work/voronoi && git init'); |
| + }).then(function() { |
| + return self.checkCommand('cd work/voronoi && git add .'); |
| + }).then(function() { |
| + return self.checkCommand( |
| + 'cd work/voronoi && git commit -m "imported voronoi demo"'); |
| + }).then(function() { |
| + if (self.params['TOOLCHAIN'] === 'glibc' && |
| + self.params['SYS_ARCH'] === 'x86_64') { |
| + return Promise.resolve().then(function() { |
| + return self.checkCommand('cd work/voronoi && make voronoi.nexe'); |
| + }).then(function() { |
| + chrometest.info('spawn voronoi'); |
| + return self.spawnCommand('cd work/voronoi && make voronoi'); |
| + }).then(function(msg) { |
| + pid = msg.pid; |
| + chrometest.info('got pid ' + pid); |
| + return chrometest.sleep(3000); |
| + }).then(function(msg) { |
| + chrometest.info('killing'); |
| + self.sigint(); |
| + return self.waitCommand(pid); |
| + }).then(function(msg) { |
| + chrometest.info('done killing'); |
| + ASSERT_EQ(2, msg.status, 'Expect 2 from make'); |
| + }); |
| + } else { |
| + // TODO(bradnelson): Fix other combinations. |
| + chrometest.info('skipping unsupported toolchain / arch to build on'); |
| + } |
| + }); |
| +}); |
| + |
| +// Test of the Chrome Dev Summit cpp tutorial at: |
| +// https://developer.chrome.com/native-client/cds2014/cpp |
| +TEST_F(DevEnvTest, 'testCDS2014', function() { |
| + var self = this; |
| + var pid; |
| + var bashrc = 'git config --global user.name "John Doe"\n' + |
| + 'git config --global user.email johndoe@example.com\n'; |
| + return Promise.resolve().then(function() { |
| + return self.initFileSystem(); |
| + }).then(function() { |
| + return self.writeFile('/home/user/.bashrc', bashrc); |
| + }).then(function() { |
| + return self.checkCommand('source ~/.bashrc'); |
| + }).then(function() { |
| + return self.checkCommand('mkdir work2'); |
| + }).then(function() { |
| + return self.checkCommand( |
| + 'cd work2 && ' + |
| + 'curl https://nacltools.storage.googleapis.com/' + |
| + 'cds2014/cds2014_cpp.zip -O'); |
| + }).then(function() { |
| + return self.checkCommand('cd work2 && ls', 0, 'cds2014_cpp.zip\n'); |
| + }).then(function() { |
| + return self.checkCommand('cd work2 && unzip cds2014_cpp.zip'); |
| + }).then(function() { |
| + return self.checkCommand( |
| + 'cd work2/cds2014_cpp && ls Makefile', 0, 'Makefile\n'); |
| + }).then(function() { |
| + return self.checkCommand('cd work2/cds2014_cpp && git init'); |
| + }).then(function() { |
| + return self.checkCommand('cd work2/cds2014_cpp && git add .'); |
| + }).then(function() { |
| + return self.checkCommand( |
| + 'cd work2/cds2014_cpp && git commit -m "imported cds2014_cpp demo"'); |
| + }).then(function() { |
| + if (self.params['TOOLCHAIN'] === 'glibc' && |
| + self.params['SYS_ARCH'] === 'x86_64') { |
| + return Promise.resolve().then(function() { |
| + return self.checkCommand('cd work2/cds2014_cpp && make'); |
| + }).then(function() { |
| + chrometest.info('spawn fire'); |
| + return self.spawnCommand('cd work2/cds2014_cpp && make fire'); |
| + }).then(function(msg) { |
| + pid = msg.pid; |
| + chrometest.info('got pid ' + pid); |
| + return chrometest.sleep(3000); |
| + }).then(function(msg) { |
| + chrometest.info('killing'); |
| + self.sigint(); |
| + return self.waitCommand(pid); |
| + }).then(function(msg) { |
| + chrometest.info('done killing'); |
| + ASSERT_EQ(2, msg.status, 'Expect 2 from make'); |
| + }); |
| + } else { |
| + // TODO(bradnelson): Fix other combinations. |
| + chrometest.info('skipping unsupported toolchain / arch to build on'); |
| + } |
| + }); |
| +}); |