[Notes] [Git][BuildStream/buildstream][jennis/less_restrictive_pathways] tests/source: Add tests for invalid absolute paths



Title: GitLab

James Ennis pushed to branch jennis/less_restrictive_pathways at BuildStream / buildstream

Commits:

14 changed files:

Changes:

  • tests/sources/local.py
    ... ... @@ -12,7 +12,7 @@ DATA_DIR = os.path.join(
    12 12
     
    
    13 13
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    14 14
     def test_missing_path(cli, tmpdir, datafiles):
    
    15
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    15
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    16 16
     
    
    17 17
         # Removing the local file causes preflight to fail
    
    18 18
         localfile = os.path.join(project, 'file.txt')
    
    ... ... @@ -26,7 +26,7 @@ def test_missing_path(cli, tmpdir, datafiles):
    26 26
     
    
    27 27
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    28 28
     def test_non_regular_file_or_directory(cli, tmpdir, datafiles):
    
    29
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    29
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    30 30
         localfile = os.path.join(project, 'file.txt')
    
    31 31
     
    
    32 32
         for file_type in filetypegenerator.generate_file_types(localfile):
    
    ... ... @@ -44,7 +44,7 @@ def test_non_regular_file_or_directory(cli, tmpdir, datafiles):
    44 44
     
    
    45 45
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    46 46
     def test_valid_absolute_path(cli, tmpdir, datafiles):
    
    47
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    47
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    48 48
     
    
    49 49
         with open(os.path.join(project, "target.bst"), 'r') as f:
    
    50 50
             old_yaml = f.read()
    
    ... ... @@ -60,6 +60,26 @@ def test_valid_absolute_path(cli, tmpdir, datafiles):
    60 60
         result.assert_success()
    
    61 61
     
    
    62 62
     
    
    63
    +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    64
    +def test_invalid_absolute_path(cli, tmpdir, datafiles):
    
    65
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    66
    +
    
    67
    +    with open(os.path.join(project, "target.bst"), 'r') as f:
    
    68
    +        old_yaml = f.read()
    
    69
    +
    
    70
    +    outside_project = os.path.dirname(project)
    
    71
    +    new_yaml = old_yaml.replace("file.txt",
    
    72
    +                                os.path.abspath(os.path.join(outside_project, "outside_file.txt")))
    
    73
    +    assert old_yaml != new_yaml
    
    74
    +
    
    75
    +    with open(os.path.join(project, "target.bst"), 'w') as f:
    
    76
    +        f.write(new_yaml)
    
    77
    +
    
    78
    +    result = cli.run(project=project, args=['show', 'target.bst'])
    
    79
    +    result.assert_main_error(ErrorDomain.LOAD,
    
    80
    +                             LoadErrorReason.PROJ_PATH_INVALID)
    
    81
    +
    
    82
    +
    
    63 83
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'invalid-relative-path'))
    
    64 84
     def test_invalid_relative_path(cli, tmpdir, datafiles):
    
    65 85
         project = os.path.join(datafiles.dirname, datafiles.basename)
    
    ... ... @@ -71,7 +91,7 @@ def test_invalid_relative_path(cli, tmpdir, datafiles):
    71 91
     
    
    72 92
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    73 93
     def test_stage_file(cli, tmpdir, datafiles):
    
    74
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    94
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    75 95
         checkoutdir = os.path.join(str(tmpdir), "checkout")
    
    76 96
     
    
    77 97
         # Build, checkout
    

  • tests/sources/local/basic/outside_file.txt
    1
    +This is a text file outside the project

  • tests/sources/local/basic/file.txttests/sources/local/basic/project/file.txt

  • tests/sources/local/basic/project.conftests/sources/local/basic/project/project.conf

  • tests/sources/local/basic/target.bsttests/sources/local/basic/project/target.bst

  • tests/sources/patch.py
    ... ... @@ -12,7 +12,7 @@ DATA_DIR = os.path.join(
    12 12
     
    
    13 13
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    14 14
     def test_missing_patch(cli, tmpdir, datafiles):
    
    15
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    15
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    16 16
     
    
    17 17
         # Removing the local file causes preflight to fail
    
    18 18
         localfile = os.path.join(project, 'file_1.patch')
    
    ... ... @@ -26,7 +26,7 @@ def test_missing_patch(cli, tmpdir, datafiles):
    26 26
     
    
    27 27
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    28 28
     def test_non_regular_file_patch(cli, tmpdir, datafiles):
    
    29
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    29
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    30 30
     
    
    31 31
         patch_path = os.path.join(project, 'irregular_file.patch')
    
    32 32
         for file_type in filetypegenerator.generate_file_types(patch_path):
    
    ... ... @@ -42,7 +42,7 @@ def test_non_regular_file_patch(cli, tmpdir, datafiles):
    42 42
     
    
    43 43
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    44 44
     def test_valid_absolute_path(cli, tmpdir, datafiles):
    
    45
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    45
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    46 46
     
    
    47 47
         with open(os.path.join(project, "target.bst"), 'r') as f:
    
    48 48
             old_yaml = f.read()
    
    ... ... @@ -57,6 +57,25 @@ def test_valid_absolute_path(cli, tmpdir, datafiles):
    57 57
         result.assert_success()
    
    58 58
     
    
    59 59
     
    
    60
    +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    61
    +def test_invalid_absolute_path(cli, tmpdir, datafiles):
    
    62
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    63
    +    outside_project = os.path.dirname(project)
    
    64
    +
    
    65
    +    with open(os.path.join(project, "target.bst"), 'r') as f:
    
    66
    +        old_yaml = f.read()
    
    67
    +    new_yaml = old_yaml.replace("file_1.patch",
    
    68
    +                                os.path.abspath(os.path.join(outside_project, "outside.patch")))
    
    69
    +    assert old_yaml != new_yaml
    
    70
    +
    
    71
    +    with open(os.path.join(project, "target.bst"), 'w') as f:
    
    72
    +        f.write(new_yaml)
    
    73
    +
    
    74
    +    result = cli.run(project=project, args=['show', 'target.bst'])
    
    75
    +    result.assert_main_error(ErrorDomain.LOAD,
    
    76
    +                             LoadErrorReason.PROJ_PATH_INVALID)
    
    77
    +
    
    78
    +
    
    60 79
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'invalid-relative-path'))
    
    61 80
     def test_invalid_relative_path(cli, tmpdir, datafiles):
    
    62 81
         project = os.path.join(datafiles.dirname, datafiles.basename)
    
    ... ... @@ -68,7 +87,7 @@ def test_invalid_relative_path(cli, tmpdir, datafiles):
    68 87
     
    
    69 88
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    70 89
     def test_stage_and_patch(cli, tmpdir, datafiles):
    
    71
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    90
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    72 91
         checkoutdir = os.path.join(str(tmpdir), "checkout")
    
    73 92
     
    
    74 93
         # Build, checkout
    
    ... ... @@ -84,7 +103,7 @@ def test_stage_and_patch(cli, tmpdir, datafiles):
    84 103
     
    
    85 104
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    86 105
     def test_stage_file_nonexistent_dir(cli, tmpdir, datafiles):
    
    87
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    106
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    88 107
         checkoutdir = os.path.join(str(tmpdir), "checkout")
    
    89 108
     
    
    90 109
         # Fails at build time because it tries to patch into a non-existing directory
    
    ... ... @@ -95,7 +114,7 @@ def test_stage_file_nonexistent_dir(cli, tmpdir, datafiles):
    95 114
     
    
    96 115
     @pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
    
    97 116
     def test_stage_file_empty_dir(cli, tmpdir, datafiles):
    
    98
    -    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    117
    +    project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
    
    99 118
         checkoutdir = os.path.join(str(tmpdir), "checkout")
    
    100 119
     
    
    101 120
         # Fails at build time because it tries to patch with nothing else staged
    

  • tests/sources/patch/basic/file_1.patchtests/sources/patch/basic/outside.patch

  • tests/sources/patch/basic/failure-empty-dir.bsttests/sources/patch/basic/project/failure-empty-dir.bst

  • tests/sources/patch/basic/failure-nonexistent-dir.bsttests/sources/patch/basic/project/failure-nonexistent-dir.bst

  • tests/sources/patch/basic/file.txttests/sources/patch/basic/project/file.txt

  • tests/sources/patch/basic/project/file_1.patch
    1
    +diff --git a/file.txt b/file.txt
    
    2
    +index a496efe..341ef26 100644
    
    3
    +--- a/file.txt
    
    4
    ++++ b/file.txt
    
    5
    +@@ -1 +1 @@
    
    6
    +-This is a text file
    
    7
    ++This is text file with superpowers

  • tests/sources/patch/basic/irregular.bsttests/sources/patch/basic/project/irregular.bst

  • tests/sources/patch/basic/project.conftests/sources/patch/basic/project/project.conf

  • tests/sources/patch/basic/target.bsttests/sources/patch/basic/project/target.bst



  • [Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]