This commit is contained in:
caill34 2021-12-01 12:40:24 +00:00 committed by GitHub
commit ca88f886b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 18 additions and 119 deletions

16
Jenkinsfile vendored Normal file
View file

@ -0,0 +1,16 @@
pipeline {
agent none
stages {
stage('Build') {
agent {
docker {
image 'python:2-alpine'
}
}
steps {
sh 'python -m py_compile sources/helloWorld.py'
stash(name: 'compiled-results', includes: 'sources/*.py*')
}
}
}
}

View file

@ -1,18 +0,0 @@
# simple-python-pyinstaller-app
This repository is for the
[Build a Python app with PyInstaller](https://jenkins.io/doc/tutorials/build-a-python-app-with-pyinstaller/)
tutorial in the [Jenkins User Documentation](https://jenkins.io/doc/).
The repository contains a simple Python application which is a command line tool "add2vals" that outputs the addition of two values. If at least one of the
values is a string, "add2vals" treats both values as a string and instead
concatenates the values. The "add2" function in the "calc" library (which
"add2vals" imports) is accompanied by a set of unit tests. These are tested with pytest to check that this function works as expected and the results are saved
to a JUnit XML report.
The delivery of the "add2vals" tool through PyInstaller converts this tool into
a standalone executable file for Linux, which you can download through Jenkins
and execute at the command line on Linux machines without Python.
The `jenkins` directory contains an example of the `Jenkinsfile` (i.e. Pipeline)
you'll be creating yourself during the tutorial.

View file

@ -1,25 +0,0 @@
'''
A simple command line tool that takes 2 values and adds them together using
the calc.py library's 'add2' function.
'''
import sys
import calc
argnumbers = len(sys.argv) - 1
if argnumbers == 2 :
print("")
print("The result is " + str(calc.add2(str(sys.argv[1]), str(sys.argv[2]))))
print("")
sys.exit(0)
if argnumbers != 2 :
print("")
print("You entered " + str(argnumbers) + " value/s.")
print("")
print("Usage: 'add2vals X Y' where X and Y are individual values.")
print(" If add2vals is not in your path, usage is './add2vals X Y'.")
print(" If unbundled, usage is 'python add2vals.py X Y'.")
print("")
sys.exit(1)

View file

@ -1,28 +0,0 @@
'''
The 'calc' library contains the 'add2' function that takes 2 values and adds
them together. If either value is a string (or both of them are) 'add2' ensures
they are both strings, thereby resulting in a concatenated result.
NOTE: If a value submitted to the 'add2' function is a float, it must be done so
in quotes (i.e. as a string).
'''
# If 'value' is not an integer, convert it to a float and failing that, a string.
def conv(value):
try:
return int(value)
except ValueError:
try:
return float(value)
except ValueError:
return str(value)
# The 'add2' function itself
def add2(arg1, arg2):
# Convert 'arg1' and 'arg2' to their appropriate types
arg1conv = conv(arg1)
arg2conv = conv(arg2)
# If either 'arg1' or 'arg2' is a string, ensure they're both strings.
if isinstance(arg1conv, str) or isinstance(arg2conv, str):
arg1conv = str(arg1conv)
arg2conv = str(arg2conv)
return arg1conv + arg2conv

2
sources/helloWorld.py Normal file
View file

@ -0,0 +1,2 @@
print("Hello world!")
print("Adding more code")

View file

@ -1,48 +0,0 @@
import unittest
import calc
class TestCalc(unittest.TestCase):
"""
Test the add function from the calc library
"""
def test_add_integers(self):
"""
Test that the addition of two integers returns the correct total
"""
result = calc.add2(1, 2)
self.assertEqual(result, 3)
def test_add_floats(self):
"""
Test that the addition of two floats returns the correct result
"""
result = calc.add2('10.5', 2)
self.assertEqual(result, 12.5)
def test_add_strings(self):
"""
Test the addition of two strings returns the two strings as one
concatenated string
"""
result = calc.add2('abc', 'def')
self.assertEqual(result, 'abcdef')
def test_add_string_and_integer(self):
"""
Test the addition of a string and an integer returns them as one
concatenated string (in which the integer is converted to a string)
"""
result = calc.add2('abc', 3)
self.assertEqual(result, 'abc3')
def test_add_string_and_number(self):
"""
Test the addition of a string and a float returns them as one
concatenated string (in which the float is converted to a string)
"""
result = calc.add2('abc', '5.5')
self.assertEqual(result, 'abc5.5')
if __name__ == '__main__':
unittest.main()