Skip to content

Commit 5fb944c

Browse files
committed
Updated the argument-parsing test suite to handle the new parser class and fixed one failing test for stdlib-deployment-targets which I couldn't preserve the old behavior with 1:1.
1 parent 80485ad commit 5fb944c

File tree

2 files changed

+62
-80
lines changed

2 files changed

+62
-80
lines changed

utils/build_swift/tests/expected_options.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@
3535

3636
EXPECTED_DEFAULTS = {
3737
'android': False,
38-
'android_api_level': '21',
38+
'android_api_level': defaults.ANDROID_API_LEVEL,
3939
'android_deploy_device_path': '/data/local/tmp',
4040
'android_icu_i18n': None,
4141
'android_icu_i18n_include': None,
4242
'android_icu_uc': None,
4343
'android_icu_uc_include': None,
4444
'android_ndk': None,
45-
'android_ndk_gcc_version': '4.9',
45+
'android_ndk_gcc_version': defaults.ANDROID_NDK_GCC_VERSION,
4646
'assertions': True,
4747
'benchmark': False,
4848
'benchmark_num_o_iterations': 3,
@@ -145,7 +145,7 @@
145145
'lto_type': None,
146146
'show_sdks': False,
147147
'skip_build': False,
148-
'stdlib_deployment_targets': None,
148+
'stdlib_deployment_targets': [],
149149
'swift_analyze_code_coverage': defaults.SWIFT_ANALYZE_CODE_COVERAGE,
150150
'swift_assertions': True,
151151
'swift_build_variant': 'Debug',

utils/build_swift/tests/test_driver_arguments.py

Lines changed: 59 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
from __future__ import print_function
1010

11-
import argparse
1211
import os
1312
import sys
1413
import unittest
@@ -116,7 +115,7 @@ def __new__(cls, name, bases, attrs):
116115
def generate_default_value_test(cls, dest, default_value):
117116
def test(self):
118117
with self.assertNotRaises(ParserError):
119-
parsed_values = self.parse_default_args([])
118+
parsed_values = self.parse_args([])
120119

121120
parsed_value = getattr(parsed_values, dest)
122121
if default_value.__class__ is str:
@@ -345,7 +344,7 @@ def generate_option_test(cls, option):
345344
def generate_preset_test(cls, preset_name, preset_args):
346345
def test(self):
347346
try:
348-
self.parse_default_args(preset_args, check_impl_args=True)
347+
self.parse_args(preset_args, check_impl_args=True)
349348
except ParserError as e:
350349
self.fail('failed to parse preset "{}": {}'.format(
351350
preset_name, e))
@@ -363,13 +362,6 @@ def _quiet_output(self):
363362
with redirect_stderr(devnull), redirect_stdout(devnull):
364363
yield
365364

366-
def _parse_args(self, args):
367-
try:
368-
return migration.parse_args(self.parser, args)
369-
except (SystemExit, ValueError) as e:
370-
raise ParserError('failed to parse arguments: ' +
371-
str(args), e)
372-
373365
def _check_impl_args(self, namespace):
374366
assert hasattr(namespace, 'build_script_impl_args')
375367

@@ -380,26 +372,16 @@ def _check_impl_args(self, namespace):
380372
raise ParserError('failed to parse impl arguments: ' +
381373
str(namespace.build_script_impl_args), e)
382374

383-
def parse_args(self, args, namespace=None):
384-
if namespace is None:
385-
namespace = argparse.Namespace()
386-
375+
def parse_args(self, args, check_impl_args=False):
387376
with self._quiet_output():
388377
try:
389-
namespace, unknown_args =\
390-
super(self.parser.__class__, self.parser)\
391-
.parse_known_args(args, namespace)
392-
except (SystemExit, argparse.ArgumentError) as e:
393-
raise ParserError('failed to parse arguments: ' + str(args), e)
394-
395-
if unknown_args:
396-
raise ParserError('unknown arguments: ' + str(unknown_args))
397-
398-
return namespace
399-
400-
def parse_default_args(self, args, check_impl_args=False):
401-
with self._quiet_output():
402-
namespace = self._parse_args(args)
378+
if check_impl_args:
379+
namespace = migration.parse_args(self.parser, args)
380+
else:
381+
namespace = self.parser.parse_args(args)
382+
except (SystemExit, ValueError) as e:
383+
raise ParserError('failed to parse arguments: ' +
384+
str(args), e)
403385

404386
if check_impl_args:
405387
self._check_impl_args(namespace)
@@ -470,74 +452,74 @@ def test_option_clang_compiler_version(self):
470452
option_string = '--clang-compiler-version'
471453

472454
with self.assertNotRaises(ParserError):
473-
self.parse_default_args([option_string, '5.0.0'])
474-
self.parse_default_args([option_string, '5.0.1'])
475-
self.parse_default_args([option_string, '5.0.0.1'])
455+
self.parse_args([option_string, '5.0.0'])
456+
self.parse_args([option_string, '5.0.1'])
457+
self.parse_args([option_string, '5.0.0.1'])
476458

477459
with self.assertRaises(ParserError):
478-
self.parse_default_args([option_string, '1'])
479-
self.parse_default_args([option_string, '1.2'])
480-
self.parse_default_args([option_string, '0.0.0.0.1'])
460+
self.parse_args([option_string, '1'])
461+
self.parse_args([option_string, '1.2'])
462+
self.parse_args([option_string, '0.0.0.0.1'])
481463

482464
def test_option_clang_user_visible_version(self):
483465
option_string = '--clang-user-visible-version'
484466

485467
with self.assertNotRaises(ParserError):
486-
self.parse_default_args([option_string, '5.0.0'])
487-
self.parse_default_args([option_string, '5.0.1'])
488-
self.parse_default_args([option_string, '5.0.0.1'])
468+
self.parse_args([option_string, '5.0.0'])
469+
self.parse_args([option_string, '5.0.1'])
470+
self.parse_args([option_string, '5.0.0.1'])
489471

490472
with self.assertRaises(ParserError):
491-
self.parse_default_args([option_string, '1'])
492-
self.parse_default_args([option_string, '1.2'])
493-
self.parse_default_args([option_string, '0.0.0.0.1'])
473+
self.parse_args([option_string, '1'])
474+
self.parse_args([option_string, '1.2'])
475+
self.parse_args([option_string, '0.0.0.0.1'])
494476

495477
def test_option_swift_compiler_version(self):
496478
option_string = '--swift-compiler-version'
497479

498480
with self.assertNotRaises(ParserError):
499-
self.parse_default_args([option_string, '4.1'])
500-
self.parse_default_args([option_string, '4.0.1'])
501-
self.parse_default_args([option_string, '200.99.1'])
481+
self.parse_args([option_string, '4.1'])
482+
self.parse_args([option_string, '4.0.1'])
483+
self.parse_args([option_string, '200.99.1'])
502484

503485
with self.assertRaises(ParserError):
504-
self.parse_default_args([option_string, '1'])
505-
self.parse_default_args([option_string, '0.0.0.1'])
486+
self.parse_args([option_string, '1'])
487+
self.parse_args([option_string, '0.0.0.1'])
506488

507489
def test_option_swift_user_visible_version(self):
508490
option_string = '--swift-user-visible-version'
509491

510492
with self.assertNotRaises(ParserError):
511-
self.parse_default_args([option_string, '4.1'])
512-
self.parse_default_args([option_string, '4.0.1'])
513-
self.parse_default_args([option_string, '200.99.1'])
493+
self.parse_args([option_string, '4.1'])
494+
self.parse_args([option_string, '4.0.1'])
495+
self.parse_args([option_string, '200.99.1'])
514496

515497
with self.assertRaises(ParserError):
516-
self.parse_default_args([option_string, '1'])
517-
self.parse_default_args([option_string, '0.0.0.1'])
498+
self.parse_args([option_string, '1'])
499+
self.parse_args([option_string, '0.0.0.1'])
518500

519501
def test_option_I(self):
520-
with self.assertRaises(ValueError):
521-
self.parse_default_args(['-I'])
502+
with self.assertRaises(ParserError):
503+
self.parse_args(['-I'])
522504

523505
def test_option_ios_all(self):
524-
with self.assertRaises(ValueError):
525-
self.parse_default_args(['--ios-all'])
506+
with self.assertRaises(ParserError):
507+
self.parse_args(['--ios-all'])
526508

527509
def test_option_tvos_all(self):
528-
with self.assertRaises(ValueError):
529-
self.parse_default_args(['--tvos-all'])
510+
with self.assertRaises(ParserError):
511+
self.parse_args(['--tvos-all'])
530512

531513
def test_option_watchos_all(self):
532-
with self.assertRaises(ValueError):
533-
self.parse_default_args(['--watchos-all'])
514+
with self.assertRaises(ParserError):
515+
self.parse_args(['--watchos-all'])
534516

535517
# -------------------------------------------------------------------------
536518
# Implied defaults tests
537519

538520
def test_implied_defaults_assertions(self):
539521
with self.assertNotRaises(ParserError):
540-
namespace = self.parse_default_args(['--assertions'])
522+
namespace = self.parse_args(['--assertions'])
541523

542524
self.assertTrue(namespace.cmark_assertions)
543525
self.assertTrue(namespace.llvm_assertions)
@@ -546,21 +528,21 @@ def test_implied_defaults_assertions(self):
546528

547529
def test_implied_defaults_cmark_build_variant(self):
548530
with self.assertNotRaises(ParserError):
549-
namespace = self.parse_default_args(['--debug-cmark'])
531+
namespace = self.parse_args(['--debug-cmark'])
550532
self.assertTrue(namespace.build_cmark)
551533

552534
def test_implied_defaults_lldb_build_variant(self):
553535
with self.assertNotRaises(ParserError):
554-
namespace = self.parse_default_args(['--debug-lldb'])
536+
namespace = self.parse_args(['--debug-lldb'])
555537
self.assertTrue(namespace.build_lldb)
556538

557539
with self.assertNotRaises(ParserError):
558-
namespace = self.parse_default_args(['--lldb-assertions'])
540+
namespace = self.parse_args(['--lldb-assertions'])
559541
self.assertTrue(namespace.build_lldb)
560542

561543
def test_implied_defaults_build_variant(self):
562544
with self.assertNotRaises(ParserError):
563-
namespace = self.parse_default_args(['--debug'])
545+
namespace = self.parse_args(['--debug'])
564546

565547
self.assertEquals(namespace.cmark_build_variant, 'Debug')
566548
self.assertEquals(namespace.foundation_build_variant, 'Debug')
@@ -573,7 +555,7 @@ def test_implied_defaults_build_variant(self):
573555

574556
def test_implied_defaults_skip_build(self):
575557
with self.assertNotRaises(ParserError):
576-
namespace = self.parse_default_args(['--skip-build'])
558+
namespace = self.parse_args(['--skip-build'])
577559

578560
self.assertFalse(namespace.build_benchmarks)
579561

@@ -598,7 +580,7 @@ def test_implied_defaults_skip_build(self):
598580

599581
def test_implied_defaults_skip_build_ios(self):
600582
with self.assertNotRaises(ParserError):
601-
namespace = self.parse_default_args(['--skip-build-ios'])
583+
namespace = self.parse_args(['--skip-build-ios'])
602584
self.assertFalse(namespace.build_ios_device)
603585
self.assertFalse(namespace.build_ios_simulator)
604586

@@ -608,7 +590,7 @@ def test_implied_defaults_skip_build_ios(self):
608590

609591
def test_implied_defaults_skip_build_tvos(self):
610592
with self.assertNotRaises(ParserError):
611-
namespace = self.parse_default_args(['--skip-build-tvos'])
593+
namespace = self.parse_args(['--skip-build-tvos'])
612594
self.assertFalse(namespace.build_tvos_device)
613595
self.assertFalse(namespace.build_tvos_simulator)
614596

@@ -618,7 +600,7 @@ def test_implied_defaults_skip_build_tvos(self):
618600

619601
def test_implied_defaults_skip_build_watchos(self):
620602
with self.assertNotRaises(ParserError):
621-
namespace = self.parse_default_args(['--skip-build-watchos'])
603+
namespace = self.parse_args(['--skip-build-watchos'])
622604
self.assertFalse(namespace.build_watchos_device)
623605
self.assertFalse(namespace.build_watchos_simulator)
624606

@@ -628,22 +610,22 @@ def test_implied_defaults_skip_build_watchos(self):
628610

629611
def test_implied_defaults_validation_test(self):
630612
with self.assertNotRaises(ParserError):
631-
namespace = self.parse_default_args(['--validation-test'])
613+
namespace = self.parse_args(['--validation-test'])
632614
self.assertTrue(namespace.test)
633615

634616
def test_implied_defaults_test_optimized(self):
635617
with self.assertNotRaises(ParserError):
636-
namespace = self.parse_default_args(['--test-optimized'])
618+
namespace = self.parse_args(['--test-optimized'])
637619
self.assertTrue(namespace.test)
638620

639621
def test_implied_defaults_test_optimize_for_size(self):
640622
with self.assertNotRaises(ParserError):
641-
namespace = self.parse_default_args(['--test-optimize-for-size'])
623+
namespace = self.parse_args(['--test-optimize-for-size'])
642624
self.assertTrue(namespace.test)
643625

644626
def test_implied_defaults_skip_all_tests(self):
645627
with self.assertNotRaises(ParserError):
646-
namespace = self.parse_default_args([
628+
namespace = self.parse_args([
647629
'--test', '0',
648630
'--validation-test', '0',
649631
'--long-test', '0',
@@ -659,34 +641,34 @@ def test_implied_defaults_skip_all_tests(self):
659641

660642
def test_implied_defaults_skip_test_ios(self):
661643
with self.assertNotRaises(ParserError):
662-
namespace = self.parse_default_args(['--skip-test-ios'])
644+
namespace = self.parse_args(['--skip-test-ios'])
663645
self.assertFalse(namespace.test_ios_host)
664646
self.assertFalse(namespace.test_ios_simulator)
665647

666648
def test_implied_defaults_skip_test_tvos(self):
667649
with self.assertNotRaises(ParserError):
668-
namespace = self.parse_default_args(['--skip-test-tvos'])
650+
namespace = self.parse_args(['--skip-test-tvos'])
669651
self.assertFalse(namespace.test_tvos_host)
670652
self.assertFalse(namespace.test_tvos_simulator)
671653

672654
def test_implied_defaults_skip_test_watchos(self):
673655
with self.assertNotRaises(ParserError):
674-
namespace = self.parse_default_args(['--skip-test-watchos'])
656+
namespace = self.parse_args(['--skip-test-watchos'])
675657
self.assertFalse(namespace.test_watchos_host)
676658
self.assertFalse(namespace.test_watchos_simulator)
677659

678660
def test_implied_defaults_skip_build_android(self):
679661
with self.assertNotRaises(ParserError):
680-
namespace = self.parse_default_args(['--android', '0'])
662+
namespace = self.parse_args(['--android', '0'])
681663
self.assertFalse(namespace.test_android_host)
682664

683665
with self.assertNotRaises(ParserError):
684-
namespace = self.parse_default_args(['--skip-build-android'])
666+
namespace = self.parse_args(['--skip-build-android'])
685667
self.assertFalse(namespace.test_android_host)
686668

687669
def test_implied_defaults_host_test(self):
688670
with self.assertNotRaises(ParserError):
689-
namespace = self.parse_default_args(['--host-test', '0'])
671+
namespace = self.parse_args(['--host-test', '0'])
690672
self.assertFalse(namespace.test_ios_host)
691673
self.assertFalse(namespace.test_tvos_host)
692674
self.assertFalse(namespace.test_watchos_host)

0 commit comments

Comments
 (0)