From 7d5fb82fa5fe659e6a0c30cbb548216f00abfef5 Mon Sep 17 00:00:00 2001 From: Luis Caparroz Date: Wed, 14 Feb 2024 11:01:16 +0100 Subject: [PATCH] Add package version to user agent To enhance the 'User-Agent' used in the request headers, this commit adds the module constant `RMT::Version`, which must always match the package version specified in 'package/yast2-rmt.spec'. Additionally, a unit test was created to ensure the versions always match each other; if there is a version bump in packge spec file, the RSpec tests will break if 'src/lib/rmt.rb' is not updated accordingly. --- spec/rmt_spec.rb | 44 ++++++++++++++++++++++++++++++++++ src/lib/rmt.rb | 21 ++++++++++++++++ src/lib/rmt/wizard_scc_page.rb | 3 ++- 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 spec/rmt_spec.rb create mode 100644 src/lib/rmt.rb diff --git a/spec/rmt_spec.rb b/spec/rmt_spec.rb new file mode 100644 index 0000000..7f7f0f2 --- /dev/null +++ b/spec/rmt_spec.rb @@ -0,0 +1,44 @@ +# Copyright (c) 2024 SUSE LLC. +# All Rights Reserved. + +# This program is free software; you can redistribute it and/or +# modify it under the terms of version 2 or 3 of the GNU General +# Public License as published by the Free Software Foundation. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, contact SUSE LLC. + +# To contact SUSE about this file by physical or electronic mail, +# you may find current contact information at www.suse.com + +require 'rmt' + +describe RMT do + describe '.VERSION' do + subject(:version) { RMT::VERSION } + + let(:package_version) do + filename = './package/yast2-rmt.spec' + version = nil + + File.foreach(filename) do |line| + line.match(/^Version:\s+(?(\d+\.?){3})$/) do |match| + version ||= match.named_captures['version'] + end + end + + raise "'#{filename}' does not include any line matching the expected package version format." if version.nil? + + version + end + + it 'returns the same version as specified in the package spec file' do + expect(version).to eq package_version + end + end +end diff --git a/src/lib/rmt.rb b/src/lib/rmt.rb new file mode 100644 index 0000000..20ced44 --- /dev/null +++ b/src/lib/rmt.rb @@ -0,0 +1,21 @@ +# Copyright (c) 2024 SUSE LLC. +# All Rights Reserved. + +# This program is free software; you can redistribute it and/or +# modify it under the terms of version 2 or 3 of the GNU General +# Public License as published by the Free Software Foundation. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, contact SUSE LLC. + +# To contact SUSE about this file by physical or electronic mail, +# you may find current contact information at www.suse.com + +module RMT + VERSION = '1.3.5'.freeze +end diff --git a/src/lib/rmt/wizard_scc_page.rb b/src/lib/rmt/wizard_scc_page.rb index 510946b..248844f 100644 --- a/src/lib/rmt/wizard_scc_page.rb +++ b/src/lib/rmt/wizard_scc_page.rb @@ -18,6 +18,7 @@ require 'uri' require 'net/http' +require 'rmt' require 'rmt/utils' require 'ui/event_dispatcher' @@ -26,7 +27,7 @@ module RMT; end class RMT::WizardSCCPage < Yast::Client include ::UI::EventDispatcher - YAST_RMT_USER_AGENT = 'yast2-rmt'.freeze + YAST_RMT_USER_AGENT = "yast2-rmt/#{RMT::VERSION}".freeze def initialize(config) textdomain 'rmt'