diff --git a/appengine/standard/hello_world/app.yaml b/appengine/standard/hello_world/app.yaml new file mode 100644 index 00000000000..fd5a6b30ae6 --- /dev/null +++ b/appengine/standard/hello_world/app.yaml @@ -0,0 +1,7 @@ +runtime: python27 +api_version: 1 +threadsafe: true + +handlers: +- url: /.* + script: helloworld.app diff --git a/appengine/standard/hello_world/main.py b/appengine/standard/hello_world/main.py new file mode 100644 index 00000000000..3b6d6597ac8 --- /dev/null +++ b/appengine/standard/hello_world/main.py @@ -0,0 +1,25 @@ +# Copyright 2016 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import webapp2 + + +class MainPage(webapp2.RequestHandler): + def get(self): + self.response.headers['Content-Type'] = 'text/plain' + self.response.write('Hello, World!') + +app = webapp2.WSGIApplication([ + ('/', MainPage), +], debug=True) diff --git a/appengine/standard/hello_world/main_test.py b/appengine/standard/hello_world/main_test.py new file mode 100644 index 00000000000..1f058098db3 --- /dev/null +++ b/appengine/standard/hello_world/main_test.py @@ -0,0 +1,25 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import main +import webtest + + +def test_get(): + app = webtest.TestApp(main.app) + + response = app.get('/') + + assert response.status_int == 200 + assert response.body == 'Hello, World!'