Merge lp:~sergiusens/snapcraft/serviceBinaryNameRegex into lp:~snappy-dev/snapcraft/core

Proposed by Sergio Schvezov
Status: Merged
Approved by: Sergio Schvezov
Approved revision: 161
Merged at revision: 161
Proposed branch: lp:~sergiusens/snapcraft/serviceBinaryNameRegex
Merge into: lp:~snappy-dev/snapcraft/core
Diff against target: 68 lines (+40/-0)
2 files modified
schema/snapcraft.yaml (+2/-0)
snapcraft/tests/test_yaml.py (+38/-0)
To merge this branch: bzr merge lp:~sergiusens/snapcraft/serviceBinaryNameRegex
Reviewer Review Type Date Requested Status
Michael Vogt (community) Approve
Review via email: mp+271013@code.launchpad.net

Commit message

regex for binary and service names

To post a comment you must log in.
Revision history for this message
Michael Vogt (mvo) wrote :

LTGM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'schema/snapcraft.yaml'
2--- schema/snapcraft.yaml 2015-09-01 19:04:49 +0000
3+++ schema/snapcraft.yaml 2015-09-14 19:23:59 +0000
4@@ -45,6 +45,7 @@
5 properties:
6 name:
7 type: string
8+ pattern: "^[A-Za-z0-9/.:-]*$"
9 start:
10 type: string
11 description: command executed to start the service
12@@ -61,6 +62,7 @@
13 properties:
14 name:
15 type: string
16+ pattern: "^[A-Za-z0-9/.:-]*$"
17 exec:
18 type: string
19 description: command executed to start the service
20
21=== modified file 'snapcraft/tests/test_yaml.py'
22--- snapcraft/tests/test_yaml.py 2015-09-08 18:06:03 +0000
23+++ snapcraft/tests/test_yaml.py 2015-09-14 19:23:59 +0000
24@@ -355,6 +355,44 @@
25
26 snapcraft.yaml._validate_snapcraft_yaml(self.data)
27
28+ def test_invalid_binary_names(self):
29+ invalid_names = {
30+ '#': {'name': 'qwe#rty', 'exec': '1'},
31+ '_': {'name': 'qwe_rty', 'exec': '1'},
32+ 'space': {'name': 'qwe rty', 'exec': '1'},
33+ 'spaces': {'name': 'qwe rty', 'exec': '1'},
34+ }
35+
36+ for t in invalid_names:
37+ data = self.data.copy()
38+ with self.subTest(key=t):
39+ data['binaries'] = [invalid_names[t]]
40+
41+ with self.assertRaises(snapcraft.yaml.SnapcraftSchemaError) as raised:
42+ snapcraft.yaml._validate_snapcraft_yaml(data)
43+
44+ expected_message = '\'{}\' does not match \'^[A-Za-z0-9/.:-]*$\''.format(invalid_names[t]['name'])
45+ self.assertEqual(raised.exception.message, expected_message, msg=data)
46+
47+ def test_invalid_service_names(self):
48+ invalid_names = {
49+ '#': {'name': 'qwe#rty', 'start': '1'},
50+ '_': {'name': 'qwe_rty', 'start': '1'},
51+ 'space': {'name': 'qwe rty', 'start': '1'},
52+ 'spaces': {'name': 'qwe rty', 'start': '1'},
53+ }
54+
55+ for t in invalid_names:
56+ data = self.data.copy()
57+ with self.subTest(key=t):
58+ data['services'] = [invalid_names[t]]
59+
60+ with self.assertRaises(snapcraft.yaml.SnapcraftSchemaError) as raised:
61+ snapcraft.yaml._validate_snapcraft_yaml(data)
62+
63+ expected_message = '\'{}\' does not match \'^[A-Za-z0-9/.:-]*$\''.format(invalid_names[t]['name'])
64+ self.assertEqual(raised.exception.message, expected_message, msg=data)
65+
66 def test_services_required_properties(self):
67 self.data['services'] = [
68 {

Subscribers

People subscribed via source and target branches