Ejemplo n.º 1
0
 def parse_tagvalue_file(self, file_name):
     with open(file_name, mode='r') as infile:
         tvparser = TVParser(TVBuilder(), StandardLogger())
         tvparser.build()
         doc, error = tvparser.parse(infile.read())
     assert not error
     assert doc.validate([]) == []
     return doc
Ejemplo n.º 2
0
 def __parse_rdf(self, data):
     from spdx.parsers.rdf import Parser
     from spdx.parsers.rdfbuilders import Builder
     from spdx.parsers.loggers import StandardLogger
     p = Parser(Builder(), StandardLogger())
     document, error = p.parse(data)
     if error:
         return (None, error)
     else:
         return (document, None)
Ejemplo n.º 3
0
 def __parse_tagvalue(self, data):
     from spdx.parsers.tagvalue import Parser
     from spdx.parsers.tagvaluebuilders import Builder
     from spdx.parsers.loggers import StandardLogger
     p = Parser(Builder(), StandardLogger())
     p.build()
     document, error = p.parse(data)
     if error:
         return (None, error)
     else:
         return (document, None)
Ejemplo n.º 4
0
def TAG_to_RDF(infile_name, outfile_name):
    tagvalueparser = Parser(Builder(), StandardLogger())
    tagvalueparser.build()
    with open(infile_name) as infile:
        data = infile.read()
        document, error = tagvalueparser.parse(data)
        if not error:
            # print(map(lambda c: c.name, document.creation_info.creators))
            print("Parsing Successful")
            with open(outfile_name, mode="w") as out:
                write_document(document, out, validate=True)
        else:
            print("Errors encountered while parsing tag value file.")
            messages = []
            document.validate(messages)
            print("\n".join(messages))
Ejemplo n.º 5
0
def convert(infile_name, outfile_name):
    tagvalueparser = Parser(Builder(), StandardLogger())
    tagvalueparser.build()
    with open(infile_name) as infile:
        data = infile.read()
        document, error = tagvalueparser.parse(data)
        if not error:
            # print map(lambda c: c.name, document.creation_info.creators)
            print 'Parsing Successful'
            with open(outfile_name, mode='w') as out:
                write_document(document, out, validate=True)
        else:
            print 'Errors encountered while parsing tag value file.'
            messages = []
            document.validate(messages)
            print '\n'.join(messages)
Ejemplo n.º 6
0
def TAG_to_YAML(infile_name, outfile_name):
    # if __name__ == "__main__":
    # import sys
    from spdx.parsers.tagvalue import Parser
    from spdx.parsers.loggers import StandardLogger
    from spdx.parsers.tagvaluebuilders import Builder
    from spdx.writers.yaml import write_document

    # file = sys.argv[1]
    p = Parser(Builder(), StandardLogger())
    p.build()
    with open(infile_name) as f:
        data = f.read()
        document, error = p.parse(data)
        if not error:
            with open(outfile_name, "w") as out:
                write_document(document, out)
        else:
            print("Errors encountered while parsing")
Ejemplo n.º 7
0
def tv_to_rdf(infile_name, outfile_name):
    """
    Convert a SPDX file from tag/value format to RDF format.
    Return True on sucess, False otherwise.
    """
    parser = Parser(Builder(), StandardLogger())
    parser.build()
    with open(infile_name) as infile:
        data = infile.read()
        document, error = parser.parse(data)
        if not error:
            with open(outfile_name, mode="w") as outfile:
                write_document(document, outfile)
            return True
        else:
            print("Errors encountered while parsing RDF file.")
            messages = ErrorMessages()
            document.validate(messages)
            print("\n".join(messages.messages))
            return False
Ejemplo n.º 8
0
def parse_TAG(file):
    from spdx.parsers.tagvalue import Parser
    from spdx.parsers.loggers import StandardLogger
    from spdx.parsers.tagvaluebuilders import Builder

    p = Parser(Builder(), StandardLogger())
    p.build()
    with open(file) as f:
        data = f.read()
        document, error = p.parse(data)
        if not error:
            print("Parsing Successful")
            print(
                "Document Version {0}.{1}".format(
                    document.version.major, document.version.minor
                )
            )
            print("Package name : {0}".format(document.package.name))
            print("Creators : ")
            for creator in document.creation_info.creators:
                print(creator.name)
        else:
            print("Errors encountered while parsing")
 def setUp(self):
     self.p = Parser(Builder(), StandardLogger())
     self.p.build()
class TestParser(TestCase):

    document_str = '\n'.join([
        'SPDXVersion: SPDX-1.2', 'DataLicense: CC0-1.0',
        'DocumentComment: <text>Sample Comment</text>'
    ])

    creation_str = '\n'.join([
        'Creator: Person: Bob ([email protected])',
        'Creator: Organization: Acme.', 'Created: 2010-02-03T00:00:00Z',
        'CreatorComment: <text>Sample Comment</text>'
    ])

    review_str = '\n'.join([
        'Reviewer: Person: Bob the Reviewer',
        'ReviewDate: 2010-02-10T00:00:00Z',
        'ReviewComment: <text>Bob was Here.</text>',
        'Reviewer: Person: Alice the Reviewer',
        'ReviewDate: 2011-02-10T00:00:00Z',
        'ReviewComment: <text>Alice was also here.</text>'
    ])

    package_str = '\n'.join([
        'PackageName: Test', 'PackageVersion: Version 0.9.2',
        'PackageDownloadLocation: http://example.com/test',
        'PackageSummary: <text>Test package</text>',
        'PackageSourceInfo: <text>Version 1.0 of test</text>',
        'PackageFileName: test-1.0.zip', 'PackageSupplier: Organization:ACME',
        'PackageOriginator: Organization:ACME',
        'PackageChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'PackageVerificationCode: 4e3211c67a2d28fced849ee1bb76e7391b93feba (something.rdf, something.txt)',
        'PackageDescription: <text>A package.</text>',
        'PackageCopyrightText: <text> Copyright 2014 Acme Inc.</text>',
        'PackageLicenseDeclared: Apache-2.0',
        'PackageLicenseConcluded: (LicenseRef-2.0 and Apache-2.0)',
        'PackageLicenseInfoFromFiles: Apache-1.0',
        'PackageLicenseInfoFromFiles: Apache-2.0',
        'PackageLicenseComments: <text>License Comments</text>'
    ])

    file_str = '\n'.join([
        'FileName: testfile.java', 'FileType: SOURCE',
        'FileChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'LicenseConcluded: Apache-2.0', 'LicenseInfoInFile: Apache-2.0',
        'FileCopyrightText: <text>Copyright 2014 Acme Inc.</text>',
        'ArtifactOfProjectName: AcmeTest',
        'ArtifactOfProjectHomePage: http://www.acme.org/',
        'ArtifactOfProjectURI: http://www.acme.org/',
        'FileComment: <text>Very long file</text>'
    ])

    complete_str = '{0}\n{1}\n{2}\n{3}\n{4}'.format(document_str, creation_str,
                                                    review_str, package_str,
                                                    file_str)

    def setUp(self):
        self.p = Parser(Builder(), StandardLogger())
        self.p.build()

    def test_doc(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.version == Version(major=1, minor=2)
        assert document.data_license.identifier == 'CC0-1.0'
        assert document.comment == 'Sample Comment'

    def test_creation_info(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.creation_info.creators) == 2
        assert document.creation_info.comment == 'Sample Comment'
        assert (document.creation_info.created_iso_format ==
                '2010-02-03T00:00:00Z')

    def test_review(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.reviews) == 2

    def test_package(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.package.name == 'Test'
        assert document.package.version == 'Version 0.9.2'
        assert len(document.package.licenses_from_files) == 2
        assert (document.package.conc_lics.identifier ==
                'LicenseRef-2.0 AND Apache-2.0')

    def test_file(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.package.files) == 1
        spdx_file = document.package.files[0]
        assert spdx_file.name == 'testfile.java'
        assert spdx_file.type == spdx.file.FileType.SOURCE
        assert len(spdx_file.artifact_of_project_name) == 1
        assert len(spdx_file.artifact_of_project_home) == 1
        assert len(spdx_file.artifact_of_project_uri) == 1
Ejemplo n.º 11
0
 def parse_tagvalue_file(self, file_name):
     """Returns tuple error, document."""
     with open(file_name, mode="r") as infile:
         tvparser = TVParser(TVBuilder(), StandardLogger())
         tvparser.build()
         return tvparser.parse(infile.read())
Ejemplo n.º 12
0
class TestParser(TestCase):

    document_str = '\n'.join([
        'SPDXVersion: SPDX-2.1', 'DataLicense: CC0-1.0',
        'DocumentName: Sample_Document-V2.1', 'SPDXID: SPDXRef-DOCUMENT',
        'DocumentComment: <text>Sample Comment</text>',
        'DocumentNamespace: https://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301'
    ])

    creation_str = '\n'.join([
        'Creator: Person: Bob ([email protected])',
        'Creator: Organization: Acme.', 'Created: 2010-02-03T00:00:00Z',
        'CreatorComment: <text>Sample Comment</text>'
    ])

    review_str = '\n'.join([
        'Reviewer: Person: Bob the Reviewer',
        'ReviewDate: 2010-02-10T00:00:00Z',
        'ReviewComment: <text>Bob was Here.</text>',
        'Reviewer: Person: Alice the Reviewer',
        'ReviewDate: 2011-02-10T00:00:00Z',
        'ReviewComment: <text>Alice was also here.</text>'
    ])

    package_str = '\n'.join([
        'PackageName: Test', 'PackageVersion: Version 0.9.2',
        'PackageDownloadLocation: http://example.com/test',
        'PackageSummary: <text>Test package</text>',
        'PackageSourceInfo: <text>Version 1.0 of test</text>',
        'PackageFileName: test-1.0.zip', 'PackageSupplier: Organization:ACME',
        'PackageOriginator: Organization:ACME',
        'PackageChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'PackageVerificationCode: 4e3211c67a2d28fced849ee1bb76e7391b93feba (something.rdf, something.txt)',
        'PackageDescription: <text>A package.</text>',
        'PackageCopyrightText: <text> Copyright 2014 Acme Inc.</text>',
        'PackageLicenseDeclared: Apache-2.0',
        'PackageLicenseConcluded: (LicenseRef-2.0 and Apache-2.0)',
        'PackageLicenseInfoFromFiles: Apache-1.0',
        'PackageLicenseInfoFromFiles: Apache-2.0',
        'PackageLicenseComments: <text>License Comments</text>'
    ])

    file_str = '\n'.join([
        'FileName: testfile.java', 'SPDXID: SPDXRef-File', 'FileType: SOURCE',
        'FileChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'LicenseConcluded: Apache-2.0', 'LicenseInfoInFile: Apache-2.0',
        'FileCopyrightText: <text>Copyright 2014 Acme Inc.</text>',
        'ArtifactOfProjectName: AcmeTest',
        'ArtifactOfProjectHomePage: http://www.acme.org/',
        'ArtifactOfProjectURI: http://www.acme.org/',
        'FileComment: <text>Very long file</text>'
    ])

    unknown_tag_str = 'SomeUnknownTag: SomeUnknownValue'

    complete_str = '{0}\n{1}\n{2}\n{3}\n{4}'.format(document_str, creation_str,
                                                    review_str, package_str,
                                                    file_str)

    def setUp(self):
        self.p = Parser(Builder(), StandardLogger())
        self.p.build()

    def test_doc(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.version == Version(major=2, minor=1)
        assert document.data_license.identifier == 'CC0-1.0'
        assert document.name == 'Sample_Document-V2.1'
        assert document.spdx_id == 'SPDXRef-DOCUMENT'
        assert document.comment == 'Sample Comment'
        assert document.namespace == 'https://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301'

    def test_creation_info(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.creation_info.creators) == 2
        assert document.creation_info.comment == 'Sample Comment'
        assert (document.creation_info.created_iso_format ==
                '2010-02-03T00:00:00Z')

    def test_review(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.reviews) == 2

    def test_package(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.package.name == 'Test'
        assert document.package.version == 'Version 0.9.2'
        assert len(document.package.licenses_from_files) == 2
        assert (document.package.conc_lics.identifier ==
                'LicenseRef-2.0 AND Apache-2.0')

    def test_file(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.package.files) == 1
        spdx_file = document.package.files[0]
        assert spdx_file.name == 'testfile.java'
        assert spdx_file.spdx_id == 'SPDXRef-File'
        assert spdx_file.type == spdx.file.FileType.SOURCE
        assert len(spdx_file.artifact_of_project_name) == 1
        assert len(spdx_file.artifact_of_project_home) == 1
        assert len(spdx_file.artifact_of_project_uri) == 1

    def test_unknown_tag(self):

        try:
            from StringIO import StringIO
        except ImportError:
            from io import StringIO

        saved_out = sys.stdout
        sys.stdout = StringIO()
        document, error = self.p.parse(self.unknown_tag_str)
        self.assertEqual(sys.stdout.getvalue(),
                         'Found unknown tag : SomeUnknownTag at line: 1\n')
        sys.stdout = saved_out
        assert error
        assert document is not None
 def __init__(self):
     self.p = Parser(Builder(), StandardLogger())
     self.p.build()
class TestParser(object):

    document_str = '\n'.join(['SPDXVersion: SPDX-1.2',
                              'DataLicense: CC0-1.0',
                              'DocumentComment: <text>Sample Comment</text>'
                              ])

    creation_str = '\n'.join(['Creator: Person: Bob ([email protected])',
                              'Creator: Organization: Acme.',
                              'Created: 2010-02-03T00:00:00Z',
                              'CreatorComment: <text>Sample Comment</text>'
                              ])

    review_str = '\n'.join([
        'Reviewer: Person: Bob the Reviewer',
        'ReviewDate: 2010-02-10T00:00:00Z',
        'ReviewComment: <text>Bob was Here.</text>',
        'Reviewer: Person: Alice the Reviewer',
        'ReviewDate: 2011-02-10T00:00:00Z',
        'ReviewComment: <text>Alice was also here.</text>'
    ])

    package_str = '\n'.join([
        'PackageName: Test',
        'PackageVersion: Version 0.9.2',
        'PackageDownloadLocation: http://example.com/test',
        'PackageSummary: <text>Test package</text>',
        'PackageSourceInfo: <text>Version 1.0 of test</text>',
        'PackageFileName: test-1.0.zip',
        'PackageSupplier: Organization:ACME',
        'PackageOriginator: Organization:ACME',
        'PackageChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'PackageVerificationCode: 4e3211c67a2d28fced849ee1bb76e7391b93feba (something.rdf, something.txt)',
        'PackageDescription: <text>A package.</text>',
        'PackageCopyrightText: <text> Copyright 2014 Acme Inc.</text>',
        'PackageLicenseDeclared: Apache-2.0',
        'PackageLicenseConcluded: (LicenseRef-2.0 and Apache-2.0)',
        'PackageLicenseInfoFromFiles: Apache-1.0',
        'PackageLicenseInfoFromFiles: Apache-2.0',
        'PackageLicenseComments: <text>License Comments</text>'
    ])

    file_str = '\n'.join([
        'FileName: testfile.java',
        'FileType: SOURCE',
        'FileChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12',
        'LicenseConcluded: Apache-2.0',
        'LicenseInfoInFile: Apache-2.0',
        'FileCopyrightText: <text>Copyright 2014 Acme Inc.</text>',
        'ArtifactOfProjectName: AcmeTest',
        'ArtifactOfProjectHomePage: http://www.acme.org/',
        'ArtifactOfProjectURI: http://www.acme.org/',
        'FileComment: <text>Very long file</text>'
        ])

    complete_str = '{0}\n{1}\n{2}\n{3}\n{4}'.format(document_str, creation_str,
        review_str, package_str, file_str)

    def __init__(self):
        self.p = Parser(Builder(), StandardLogger())
        self.p.build()

    def test_doc(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.version == Version(major=1, minor=2)
        assert document.data_license.identifier == 'CC0-1.0'
        assert document.comment == 'Sample Comment'

    def test_creation_info(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.creation_info.creators) == 2
        assert document.creation_info.comment == 'Sample Comment'
        assert (document.creation_info.created_iso_format ==
                '2010-02-03T00:00:00Z')

    def test_review(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.reviews) == 2

    def test_package(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert document.package.name == 'Test'
        assert document.package.version == 'Version 0.9.2'
        assert len(document.package.licenses_from_files) == 2
        assert (document.package.conc_lics.identifier == 
                 'LicenseRef-2.0 AND Apache-2.0')

    def test_file(self):
        document, error = self.p.parse(self.complete_str)
        assert document is not None
        assert not error
        assert len(document.package.files) == 1
        file = document.package.files[0]
        assert file.name == 'testfile.java'
        assert file.type == spdx.file.FileType.SOURCE
        assert len(file.artifact_of_project_name) == 1
        assert len(file.artifact_of_project_home) == 1
        assert len(file.artifact_of_project_uri) == 1
Ejemplo n.º 15
0
#!/usr/bin/env python
if __name__ == '__main__':
    import sys
    from spdx.parsers.tagvalue import Parser
    from spdx.parsers.loggers import StandardLogger
    from spdx.parsers.tagvaluebuilders import Builder
    file = sys.argv[1]
    p = Parser(Builder(), StandardLogger())
    p.build()
    with open(file) as f:
        data = f.read()
        document, error = p.parse(data)
        if not error:
            print 'Parsing Successful'
            print 'Document Version {0}.{1}'.format(document.version.major,
                document.version.minor)
            print 'Package name : {0}'.format(document.package.name)
            print 'Creators : '
            for creator in document.creation_info.creators:
                print creator.name
        else:
            print 'Errors encountered while parsing'

Ejemplo n.º 16
0
#!/usr/bin/env python

# Parses a tag/value file and writes it out pretty-printed.
# Usage: pp_tv <infile> <outfile>

if __name__ == '__main__':
    import sys
    import codecs
    from spdx.writers.tagvalue import write_document, InvalidDocumentError
    from spdx.parsers.tagvalue import Parser
    from spdx.parsers.loggers import StandardLogger
    from spdx.parsers.tagvaluebuilders import Builder
    source = sys.argv[1]
    target = sys.argv[2]
    p = Parser(Builder(), StandardLogger())
    p.build()
    with open(source, 'r') as f:
        data = f.read()
        document, error = p.parse(data)
        if not error:
            print 'Parsing Successful'
            with codecs.open(target, mode='w', encoding='utf-8') as out:
                try:
                    write_document(document, out)
                except InvalidDocumentError:
                    print 'Document is Invalid'
                    messages = []
                    document.validate(messages)
                    print '\n'.join(messages)
        else:
            print 'Errors encountered while parsing'
Ejemplo n.º 17
0
 def parse_tagvalue_file(self, file_name):
     """Returns tuple error, document."""
     with open(file_name, mode='r') as infile:
         tvparser = TVParser(TVBuilder(), StandardLogger())
         tvparser.build()
         return tvparser.parse(infile.read())
Ejemplo n.º 18
0
    from spdx.parsers.tagvaluebuilders import Builder
    import codecs
    from spdx.writers.tagvalue import write_document, InvalidDocumentError
    from spdx.document import Document, License, LicenseConjunction, ExtractedLicense
    from spdx.version import Version
    from spdx.creationinfo import Person
    from spdx.review import Review
    from spdx.package import Package
    from spdx.file import File, FileType
    from spdx.checksum import Algorithm
    from spdx.utils import SPDXNone, NoAssert, UnKnown

    allFiles = sys.argv
    filePosition = 1
    fileData = []
    p = Parser(Builder(), StandardLogger())
    p.build()

    while filePosition < len(allFiles):
        with open(allFiles[filePosition]) as f:
            data = f.read()
            fileData.append(data)

        filePosition += 1

    newFileName = input("Enter file name to save: ")

    with codecs.open(newFileName, mode='w', encoding='utf-8') as newFile:
        try:
            write_document("".join(fileData), newFile)